XML formatting issue with matching value

34 views Asked by At

Please suggest how can I achieve this with XSLT 2.0 My code is working fine for scenario-2 but not working for scenario -1

Source XML/Scenario - 1

<Root>
    <ITEM1>
        <KEY>00</KEY>
    </ITEM1>
    <ITEM2>
        <SHL>
            <KEY>S</KEY>
        </SHL>
        <REF>
            <NAME>CN</NAME>
        </REF>
    <ITEM2>
    <ITEM2>
        <SHL>
            <KEY>O</KEY>
        </SHL>
    </ITEM2>
    <ITEM2>
        <SHL>
            <KEY>T</KEY>
        </SHL>
        <PO4>
            <NUMBER>000010</NUMBER>
        </PO4>
    </ITEM2>
    <ITEM2>
        <SHL>
            <KEY>I</KEY>
        </SHL>
        <LIN>
            <NUMBER>000010</NUMBER>
        </LIN>
    </ITEM2>
    <ITEM2>
        <SHL>
            <KEY>I</KEY>
        </SHL>
        <PO4>
            <NUMBER>000020</NUMBER>
        </PO4>
    </ITEM2>
    <ITEM2>
        <SHL>
            <KEY>I</KEY>
        </SHL>
        <LIN>
            <NUMBER>000020</NUMBER>
        </LIN>
    </ITEM2>
    <SE>
        <TARE>0001</TARE>
    </SE>
</Root>

Expected target XML should be same as it is - No changes expected

Source XML / Scenario-2

<Root>
    <ITEM1>
        <KEY>00</KEY>
    </ITEM1>
    <SHL>
        <KEY>S</KEY>
    </SHL>
    <REF>
        <NAME>CN</NAME>
    </REF>
    <ITEM2>
        <SHL>
            <KEY>O</KEY>
        </SHL>
    </ITEM2>
    <ITEM2>
        <SHL>
            <KEY>T</KEY>
        </SHL>
        <PO4>
            <NUMBER>000010</NUMBER>
        </PO4>
    </ITEM2>
    <ITEM2>
        <SHL>
            <KEY>T</KEY>
        </SHL>
        <PO4>
            <NUMBER>000020</NUMBER>
        </PO4>
    </ITEM2>
    <ITEM2>
        <SHL>
            <KEY>T</KEY>
        </SHL>
        <PO4>
            <NUMBER>000030</NUMBER>
        </PO4>
    </ITEM2>
    <ITEM2>
        <SHL>
            <KEY>I</KEY>
        </SHL>
        <LIN>
            <NUMBER>000010</NUMBER>
        </LIN>
    </ITEM2>
    <ITEM2>
        <SHL>
            <KEY>I</KEY>
        </SHL>
        <PO4>
            <NUMBER>000020</NUMBER>
        </PO4>
    </ITEM2>
    <ITEM2>
        <SHL>
            <KEY>I</KEY>
        </SHL>
        <LIN>
            <NUMBER>000030</NUMBER>
        </LIN>
    </ITEM2>
    <SE>
        <TARE>0001</TARE>
    </SE>
</Root>

Expected Output as below : If ITEM2/PO4/NUMBER = ITEM2/LIN/NUMBER then rearrange the ITEM/SHL/[KEY='T'] & ITEM/SHL/[KEY='I'] as below

<Root>
    <ITEM1>
        <KEY>00</KEY>
    </ITEM1>
    <SHL>
        <KEY>S</KEY>
    </SHL>
    <REF>
        <NAME>CN</NAME>
    </REF>
    <ITEM2>
        <SHL>
            <KEY>O</KEY>
        </SHL>
    </ITEM2>
    <ITEM2>
        <SHL>
            <KEY>T</KEY>
        </SHL>
        <PO4>
            <NUMBER>000010</NUMBER>
        </PO4>
    </ITEM2>
    <ITEM2>
        <SHL>
            <KEY>I</KEY>
        </SHL>
        <LIN>
            <NUMBER>000010</NUMBER>
        </LIN>
    </ITEM2>
    <ITEM2>
        <SHL>
            <KEY>T</KEY>
        </SHL>
        <PO4>
            <NUMBER>000020</NUMBER>
        </PO4>
    </ITEM2>
    <ITEM2>
        <SHL>
            <KEY>I</KEY>
        </SHL>
        <PO4>
            <NUMBER>000020</NUMBER>
        </PO4>
    </ITEM2>
    <ITEM2>
        <SHL>
            <KEY>T</KEY>
        </SHL>
        <PO4>
            <NUMBER>000030</NUMBER>
        </PO4>
    </ITEM2>
    <ITEM2>
        <SHL>
            <KEY>I</KEY>
        </SHL>
        <LIN>
            <NUMBER>000030</NUMBER>
        </LIN>
    </ITEM2>
    <SE>
        <TARE>0001</TARE>
    </SE>
</Root>

0

There are 0 answers