Rewriting XML tree structure with PHP / XSLT

Hello everybody I've got this result XML data file obtained from a Web Service SOAP call as shown below:

<RESULT>
    <GRP ID="GRP1">
        <FLD NAME="YITM" TYPE="Char">CC16800001353</FLD>
        <FLD NAME="YALT" TYPE="Integer">1</FLD>
        <FLD NAME="YREFDAT" TYPE="Date">16/08/2021</FLD>
        <FLD NAME="YPJT" TYPE="Char">^^OP21-70079/2000^^</FLD>
        <FLD NAME="YSITE" TYPE="Char">ITS01</FLD>
        <FLD NAME="YQTY" TYPE="Decimal">20</FLD>
    </GRP>
    <TAB DIM="999" ID="GRP2" SIZE="51">
        <LIN NUM="1">
            <FLD NAME="YLST" TYPE="Char">|CC16800001353|CLIP PANTERA TACHETE CLIP 19MM |50FF15|0|N|P|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="2">
            <FLD NAME="YLST" TYPE="Char">CC16800001353|CC1680_1353_I01|CLIP PANTERA TACHETE CLIP 19MM|50FF15|1|N|P|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="3">
            <FLD NAME="YLST" TYPE="Char">CC1680_1353_I01|344-0464-008_01|CONTRO PIASTRA|50FF15|2|N|P|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="4">
            <FLD NAME="YLST" TYPE="Char">CC1680_1353_I01|315-7195-008_04|PERNO DI CENTRAGGIO|FFC911|2|N|P3|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="5">
            <FLD NAME="YLST" TYPE="Char">CC1680_1353_I01|305-0696-008_01|CONTRO PIASTRA TONDA D23 MM|50FF15|2|N|P|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="6">
            <FLD NAME="YLST" TYPE="Char">CC1680_1353_I01|CC1680_1353_M01|CLIP PANTERA TACHETE CLIP 19MM|50FF15|2|N|P|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="7">
            <FLD NAME="YLST" TYPE="Char">CC1680_1353_I01|313-0394-103_10|M2X5 TSP 3.8 TORX (ISO 14581)|50FF15|2|N|P|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="8">
            <FLD NAME="YLST" TYPE="Char">CC1680_1353_I01|CC1680_1353_M02|MONTAGGIO BATTENTE C/CALAMITA|50FF15|1|N|P|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="9">
            <FLD NAME="YLST" TYPE="Char">CC1680_1353_I01|CC1680_1353_M03|MONTAGGIO  CORPO CALAMITA D20|50FF15|1|N|P|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="10">
            <FLD NAME="YLST" TYPE="Char">CC1680_1353_I01|324-0251-210|VASSOIO STD 126 ALVEOLI FELPAT|50FF15|0|S|OPQ|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="11">
            <FLD NAME="YLST" TYPE="Char">CC1680_1353_I01|313-1003-008_04|VITE SPECIALE|FF3300|2|N|P1|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="12">
            <FLD NAME="YLST" TYPE="Char">CC1680_1353_I01|313-0369-103_01|M2X4 TSP 3.8 CROCE IMP.H|50FF15|2|N|P|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="13">
            <FLD NAME="YLST" TYPE="Char">CC1680_1353_I01|356-0010-210|VASSOIO STD 20 ALVEOLI FELPATO|4274F4|0|S|OPAQ|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="14">
            <FLD NAME="YLST" TYPE="Char">344-0464-008_01|344-0464-008|CONTRO PIASTRA|FF8F2E|0|N|PQ|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="15">
            <FLD NAME="YLST" TYPE="Char">315-7195-008_04|315-7195-008_03|PERNO DI CENTRAGGIO|50FF15|2|N|P|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="16">
            <FLD NAME="YLST" TYPE="Char">315-7195-008_03|315-7195-008_01|PERNO DI CENTRAGGIO|50FF15|2|N|P|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="17">
            <FLD NAME="YLST" TYPE="Char">315-7195-008_01|315-7195-008|PERNO DI CENTRAGGIO|50FF15|0|N|PQ|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="18">
            <FLD NAME="YLST" TYPE="Char">305-0696-008_01|305-0696-008|CONTRO PIASTRA TONDA D23 MM|FF8F2E|0|N|PQ|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="19">
            <FLD NAME="YLST" TYPE="Char">CC1680_1353_M01|315-7198-008_03|TASSELLO PORTA MOLLA|50FF15|1|N|P|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="20">
            <FLD NAME="YLST" TYPE="Char">CC1680_1353_M01|316-0481-100|COMP DE 3;DF 0.65;L 9.5 MM;SPT 7.5|50FF15|0|N|PQ|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="21">
            <FLD NAME="YLST" TYPE="Char">CC1680_1353_M01|CC_Y00018_06|CLIP PANTERA TACHETE CLIP 19MM|50FF15|1|N|P|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="22">
            <FLD NAME="YLST" TYPE="Char">CC1680_1353_M01|315-7246-008_03|PERNO D.1,62XD.1,5X13,5 MM|FF3300|2|N|P1|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="23">
            <FLD NAME="YLST" TYPE="Char">CC1680_1353_M01|315-7446-204|PISTONE PER MOLLA D3 DELRIN NERO|FF3300|0|N|OPQ|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="24">
            <FLD NAME="YLST" TYPE="Char">CC1680_1353_M01|315-7196-008_03|PERNO PER MOLLA|FFC911|0|N|PA1|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="25">
            <FLD NAME="YLST" TYPE="Char">315-7198-008_03|315-7198-008_01|TASSELLO PORTA MOLLA|50FF15|2|N|PB|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="26">
            <FLD NAME="YLST" TYPE="Char">315-7198-008_01|315-7198-008|TASSELLO PORTA MOLLA|FF8F2E|0|N|PQ|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="27">
            <FLD NAME="YLST" TYPE="Char">CC_Y00018_06|CC_Y00018_04|CLIP PANTERA TACHETE CLIP 19MM|50FF15|2|N|P|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="28">
            <FLD NAME="YLST" TYPE="Char">CC_Y00018_04|CC_Y00018_03|CLIP PANTERA TACHETE CLIP 19MM|FF3300|2|N|P1|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="29">
            <FLD NAME="YLST" TYPE="Char">CC_Y00018_03|CC_Y00018_02|CLIP PANTERA TACHETE CLIP 19MM|FF3300|2|N|P1|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="30">
            <FLD NAME="YLST" TYPE="Char">CC_Y00018_02|CC_Y00018|CLIP PANTERA TACHETE CLIP 19MM|FF3300|1|N|P2|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="31">
            <FLD NAME="YLST" TYPE="Char">CC_Y00018|325-A118-008_05|PANTERA|FFC911|1|N|P2|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="32">
            <FLD NAME="YLST" TYPE="Char">CC_Y00018|315-7197-008|TASSELLO PER PANTERA|50FF15|0|N|FP3Q|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="33">
            <FLD NAME="YLST" TYPE="Char">325-A118-008_05|325-A118-008_02|PANTERA|42F4B6|2|N|P1|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="34">
            <FLD NAME="YLST" TYPE="Char">325-A118-008_02|325-A118-008|PANTERA|FF8F2E|17|N|P1Q|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="35">
            <FLD NAME="YLST" TYPE="Char">315-7246-008_03|315-7246-008_01|PERNO D.1,62XD.1,5X13,5 MM|FF3300|2|N|P3|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="36">
            <FLD NAME="YLST" TYPE="Char">315-7246-008_01|315-7246-008|PERNO D.1,62XD.1,5X13,5 MM|50FF15|1|N|P3Q|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="37">
            <FLD NAME="YLST" TYPE="Char">313-0394-103_10|313-0394-103|M2X5 TSP 3.8 TORX (ISO 14581)|50FF15|16|N|PQ|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="38">
            <FLD NAME="YLST" TYPE="Char">CC1680_1353_M02|315-7213-008_03|BATTENTE CON CALAMITA D20MM|50FF15|1|N|P|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="39">
            <FLD NAME="YLST" TYPE="Char">CC1680_1353_M02|330-7119-999|CALAMITA ANELLO 15.5X7X2 MM|4274F4|35|N|P9Q|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="40">
            <FLD NAME="YLST" TYPE="Char">CC1680_1353_M02|355-1066-232|PELLICOLA TONDA D19.5MM|50FF15|0|N|PQ|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="41">
            <FLD NAME="YLST" TYPE="Char">315-7213-008_03|315-7213-008_01|BATTENTE CON CALAMITA D20MM|50FF15|2|N|P|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="42">
            <FLD NAME="YLST" TYPE="Char">315-7213-008_01|315-7213-008|BATTENTE CON CALAMITA D20MM|FF8F2E|0|N|PQ|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="43">
            <FLD NAME="YLST" TYPE="Char">CC1680_1353_M03|315-7214-008_04|CORPO CALAMITA D20MM|FF3300|1|N|P1|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="44">
            <FLD NAME="YLST" TYPE="Char">CC1680_1353_M03|330-7119-999|CALAMITA ANELLO 15.5X7X2 MM|4274F4|35|N|P9Q|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="45">
            <FLD NAME="YLST" TYPE="Char">CC1680_1353_M03|355-1066-232|PELLICOLA TONDA D19.5MM|50FF15|0|N|PQ|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="46">
            <FLD NAME="YLST" TYPE="Char">315-7214-008_04|315-7214-008_02|CORPO CALAMITA D20MM|FF3300|2|N|PB3|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="47">
            <FLD NAME="YLST" TYPE="Char">315-7214-008_02|315-7214-008_05|CORPO CALAMITA D20MM|FFC911|1|N|P1|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="48">
            <FLD NAME="YLST" TYPE="Char">315-7214-008_05|315-7214-008_01|CORPO CALAMITA D20MM|FFC911|2|N|P3|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="49">
            <FLD NAME="YLST" TYPE="Char">315-7214-008_01|315-7214-008|CORPO CALAMITA D20MM|FF8F2E|1|N|P3Q|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="50">
            <FLD NAME="YLST" TYPE="Char">313-1003-008_04|313-1003-008|VITE SPECIALE|FF8F2E|1|N|P1Q|OP21-70079/2000</FLD>
        </LIN>
        <LIN NUM="51">
            <FLD NAME="YLST" TYPE="Char">313-0369-103_01|313-0369-103|M2X4 TSP 3.8 CROCE IMP.H|50FF15|7|N|PQ|OP21-70079/2000</FLD>
        </LIN>
    </TAB>
    <TAB DIM="999" ID="GRP3" SIZE="51">
        <LIN NUM="1">
            <FLD NAME="YLST2" TYPE="Char">CC16800001353|PFM0P|20/20|0|0|0|0|0|0|C:\wamp64\www\immX3\CC16800001353.PNG</FLD>
        </LIN>
        <LIN NUM="2">
            <FLD NAME="YLST2" TYPE="Char">CC1680_1353_I01|SLM02|20/20|1|1|0|0|0|0|C:\wamp64\www\immX3\CC1680_1353_I01.PNG</FLD>
        </LIN>
        <LIN NUM="3">
            <FLD NAME="YLST2" TYPE="Char">344-0464-008_01|SLM01|20/20|1|1|0|0|0|0|C:\wamp64\www\immX3\344-0464-008_01.JPG</FLD>
        </LIN>
        <LIN NUM="4">
            <FLD NAME="YLST2" TYPE="Char">315-7195-008_04|SLM01|15/20|1|1|5|0|0|0|C:\wamp64\www\immX3\315-7195-008_04.JPG</FLD>
        </LIN>
        <LIN NUM="5">
            <FLD NAME="YLST2" TYPE="Char">305-0696-008_01|SLM01|20/20|1|1|0|0|0|0|C:\wamp64\www\immX3\305-0696-008_01.JPG</FLD>
        </LIN>
        <LIN NUM="6">
            <FLD NAME="YLST2" TYPE="Char">CC1680_1353_M01|SLM02|20/20|1|1|0|0|0|0|C:\wamp64\www\immX3\CC1680_1353_M01.PNG</FLD>
        </LIN>
        <LIN NUM="7">
            <FLD NAME="YLST2" TYPE="Char">313-0394-103_10|SLM01|40/40|2|1|0|0|0|0|C:\wamp64\www\immX3\313-0394-103_10.JPG</FLD>
        </LIN>
        <LIN NUM="8">
            <FLD NAME="YLST2" TYPE="Char">CC1680_1353_M02|SLM02|20/20|1|1|0|0|0|0|C:\wamp64\www\immX3\CC1680_1353_M02.PNG</FLD>
        </LIN>
        <LIN NUM="9">
            <FLD NAME="YLST2" TYPE="Char">CC1680_1353_M03|SLM02|20/20|1|1|0|0|0|0|C:\wamp64\www\immX3\CC1680_1353_M03.PNG</FLD>
        </LIN>
        <LIN NUM="10">
            <FLD NAME="YLST2" TYPE="Char">324-0251-210|MPM01|0/0|0.008|100|0|33000|0|0|C:\wamp64\www\immX3\324-0251-210.PNG</FLD>
        </LIN>
        <LIN NUM="11">
            <FLD NAME="YLST2" TYPE="Char">313-1003-008_04|SLM01|0/20|1|1|0|0|0|0|C:\wamp64\www\immX3\313-1003-008_04.JPG</FLD>
        </LIN>
        <LIN NUM="12">
            <FLD NAME="YLST2" TYPE="Char">313-0369-103_01|SLM01|20/20|1|0|0|0|0|0|C:\wamp64\www\immX3\313-0369-103_01.JPG</FLD>
        </LIN>
        <LIN NUM="13">
            <FLD NAME="YLST2" TYPE="Char">356-0010-210|MPM01|0/0|0.05|1|0|0|0|0|C:\wamp64\www\immX3\356-0010-210.JPG</FLD>
        </LIN>
        <LIN NUM="14">
            <FLD NAME="YLST2" TYPE="Char">344-0464-008|MPM01|20/20|1|0|0|6080|0|0|C:\wamp64\www\immX3\344-0464-008.JPG</FLD>
        </LIN>
        <LIN NUM="15">
            <FLD NAME="YLST2" TYPE="Char">315-7195-008_03|SLM01|20/20|1|1|0|0|0|0|C:\wamp64\www\immX3\315-7195-008_03.JPG</FLD>
        </LIN>
        <LIN NUM="16">
            <FLD NAME="YLST2" TYPE="Char">315-7195-008_01|SLM01|20/20|1|1|0|0|0|0|C:\wamp64\www\immX3\315-7195-008_01.JPG</FLD>
        </LIN>
        <LIN NUM="17">
            <FLD NAME="YLST2" TYPE="Char">315-7195-008|MPM01|20/20|1|0|0|6545|0|0|C:\wamp64\www\immX3\315-7195-008.JPG</FLD>
        </LIN>
        <LIN NUM="18">
            <FLD NAME="YLST2" TYPE="Char">305-0696-008|MPM01|20/20|1|0|0|7915|0|0|C:\wamp64\www\immX3\305-0696-008.JPG</FLD>
        </LIN>
        <LIN NUM="19">
            <FLD NAME="YLST2" TYPE="Char">315-7198-008_03|SLM01|20/20|1|1|0|0|0|0|C:\wamp64\www\immX3\315-7198-008_03.JPG</FLD>
        </LIN>
        <LIN NUM="20">
            <FLD NAME="YLST2" TYPE="Char">316-0481-100|MPM01|20/20|1|0|0|6900|0|0|C:\wamp64\www\immX3\316-0481-100.JPG</FLD>
        </LIN>
        <LIN NUM="21">
            <FLD NAME="YLST2" TYPE="Char">CC_Y00018_06|SLM01|20/20|1|1|0|0|0|0|C:\wamp64\www\immX3\CC_Y00018_06.PNG</FLD>
        </LIN>
        <LIN NUM="22">
            <FLD NAME="YLST2" TYPE="Char">315-7246-008_03|SLM01|0/20|1|1|0|0|0|0|C:\wamp64\www\immX3\315-7246-008_03.JPG</FLD>
        </LIN>
        <LIN NUM="23">
            <FLD NAME="YLST2" TYPE="Char">315-7446-204|MPM01|0/0|1|0|0|0|0|0|C:\wamp64\www\immX3\315-7446-204.PNG</FLD>
        </LIN>
        <LIN NUM="24">
            <FLD NAME="YLST2" TYPE="Char">315-7196-008_03|SLM01|15/20|1|1|0|0|0|0|C:\wamp64\www\immX3\315-7196-008_03.PNG</FLD>
        </LIN>
        <LIN NUM="25">
            <FLD NAME="YLST2" TYPE="Char">315-7198-008_01|SLM01|20/20|1|1|0|0|0|0|C:\wamp64\www\immX3\315-7198-008_01.JPG</FLD>
        </LIN>
        <LIN NUM="26">
            <FLD NAME="YLST2" TYPE="Char">315-7198-008|MPM01|20/20|1|0|0|6097|0|0|C:\wamp64\www\immX3\315-7198-008.JPG</FLD>
        </LIN>
        <LIN NUM="27">
            <FLD NAME="YLST2" TYPE="Char">CC_Y00018_04|SLM01|22/20|1|1|0|0|0|0|C:\wamp64\www\immX3\CC_Y00018_04.PNG</FLD>
        </LIN>
        <LIN NUM="28">
            <FLD NAME="YLST2" TYPE="Char">CC_Y00018_03|SLM01|0/20|1|1|0|0|0|0|C:\wamp64\www\immX3\CC_Y00018_03.PNG</FLD>
        </LIN>
        <LIN NUM="29">
            <FLD NAME="YLST2" TYPE="Char">CC_Y00018_02|SLM01|0/20|1|1|0|0|0|0|C:\wamp64\www\immX3\CC_Y00018_02.PNG</FLD>
        </LIN>
        <LIN NUM="30">
            <FLD NAME="YLST2" TYPE="Char">CC_Y00018|SLM02|0/20|1|1|17|0|0|0|C:\wamp64\www\immX3\CC_Y00018.PNG</FLD>
        </LIN>
        <LIN NUM="31">
            <FLD NAME="YLST2" TYPE="Char">325-A118-008_05|SLM01|17/20|1|1|1|0|0|0|C:\wamp64\www\immX3\325-A118-008_05.JPG</FLD>
        </LIN>
        <LIN NUM="32">
            <FLD NAME="YLST2" TYPE="Char">315-7197-008|MPM01|0/20|1|0|0|20|0|0|C:\wamp64\www\immX3\315-7197-008.PNG</FLD>
        </LIN>
        <LIN NUM="33">
            <FLD NAME="YLST2" TYPE="Char">325-A118-008_02|SLM01|5/20|1|1|0|0|0|0|C:\wamp64\www\immX3\325-A118-008_02.JPG</FLD>
        </LIN>
        <LIN NUM="34">
            <FLD NAME="YLST2" TYPE="Char">325-A118-008|MPM01|5/20|1|1|0|7014|0|0|C:\wamp64\www\immX3\325-A118-008.JPG</FLD>
        </LIN>
        <LIN NUM="35">
            <FLD NAME="YLST2" TYPE="Char">315-7246-008_01|SLM01|0/20|1|1|20|0|0|0|C:\wamp64\www\immX3\315-7246-008_01.JPG</FLD>
        </LIN>
        <LIN NUM="36">
            <FLD NAME="YLST2" TYPE="Char">315-7246-008|MPM01|0/20|1|0|0|5940|0|0|C:\wamp64\www\immX3\315-7246-008.JPG</FLD>
        </LIN>
        <LIN NUM="37">
            <FLD NAME="YLST2" TYPE="Char">313-0394-103|MPM01|40/40|1|5000|0|350240|0|0|C:\wamp64\www\immX3\313-0394-103.JPG</FLD>
        </LIN>
        <LIN NUM="38">
            <FLD NAME="YLST2" TYPE="Char">315-7213-008_03|SLM01|20/20|1|1|0|0|0|0|C:\wamp64\www\immX3\315-7213-008_03.JPG</FLD>
        </LIN>
        <LIN NUM="39">
            <FLD NAME="YLST2" TYPE="Char">330-7119-999|MPM01|20/20|1|100|0|22000|0|0|C:\wamp64\www\immX3\330-7119-999.JPG</FLD>
        </LIN>
        <LIN NUM="40">
            <FLD NAME="YLST2" TYPE="Char">355-1066-232|MPM01|20/20|1|0|0|12400|0|0|C:\wamp64\www\immX3\355-1066-232.PNG</FLD>
        </LIN>
        <LIN NUM="41">
            <FLD NAME="YLST2" TYPE="Char">315-7213-008_01|SLM01|20/20|1|1|0|0|0|0|C:\wamp64\www\immX3\315-7213-008_01.JPG</FLD>
        </LIN>
        <LIN NUM="42">
            <FLD NAME="YLST2" TYPE="Char">315-7213-008|MPM01|20/20|1|0|0|6450|0|0|C:\wamp64\www\immX3\315-7213-008.JPG</FLD>
        </LIN>
        <LIN NUM="43">
            <FLD NAME="YLST2" TYPE="Char">315-7214-008_04|SLM01|0/20|1|1|0|0|0|0|C:\wamp64\www\immX3\315-7214-008_04.JPG</FLD>
        </LIN>
        <LIN NUM="44">
            <FLD NAME="YLST2" TYPE="Char">330-7119-999|MPM01|20/20|1|100|0|22000|0|0|C:\wamp64\www\immX3\330-7119-999.JPG</FLD>
        </LIN>
        <LIN NUM="45">
            <FLD NAME="YLST2" TYPE="Char">355-1066-232|MPM01|20/20|1|0|0|12400|0|0|C:\wamp64\www\immX3\355-1066-232.PNG</FLD>
        </LIN>
        <LIN NUM="46">
            <FLD NAME="YLST2" TYPE="Char">315-7214-008_02|SLM01|0/20|1|1|20|0|0|0|C:\wamp64\www\immX3\315-7214-008_02.JPG</FLD>
        </LIN>
        <LIN NUM="47">
            <FLD NAME="YLST2" TYPE="Char">315-7214-008_05|SLM01|15/20|1|1|0|0|0|0|C:\wamp64\www\immX3\315-7214-008_05.JPG</FLD>
        </LIN>
        <LIN NUM="48">
            <FLD NAME="YLST2" TYPE="Char">315-7214-008_01|SLM01|15/20|1|1|5|0|0|0|C:\wamp64\www\immX3\315-7214-008_01.JPG</FLD>
        </LIN>
        <LIN NUM="49">
            <FLD NAME="YLST2" TYPE="Char">315-7214-008|MPM01|15/20|1|0|0|6123|0|0|C:\wamp64\www\immX3\315-7214-008.JPG</FLD>
        </LIN>
        <LIN NUM="50">
            <FLD NAME="YLST2" TYPE="Char">313-1003-008|MPM01|0/20|1|0|0|6880|0|0|C:\wamp64\www\immX3\313-1003-008.JPG</FLD>
        </LIN>
        <LIN NUM="51">
            <FLD NAME="YLST2" TYPE="Char">313-0369-103|MPM01|20/20|1|2000|0|266166|0|0|C:\wamp64\www\immX3\313-0369-103.JPG</FLD>
        </LIN>
    </TAB>
</RESULT>

I need to catch the data inside of tag <FLD> of <TAB ID='GRP2'> but the problem is that if you can see the XML is not nested and i need to create a nested XML tree. You can see the content of <FLD> tags, at the second place, there is the code that denote the child of that parent, for example first item

CC16800001353|CC1680_1353_I01|CLIP PANTERA TACHETE CLIP 19MM|50FF15|1|N|P|OP21-70079/2000

has items CC1680_1353_I01 as child as you can see

CC1680_1353_I01|344-0464-008_01|CONTRO PIASTRA|50FF15|2|N|P|OP21-70079/2000

i need to create an XML tree to transform it as HTML (maybe with XLST), somenthing like this one

<ul class="tree">
  <li> <span>CC16800001353|CC1680_1353_I01|CLIP PANTERA TACHETE CLIP 19MM|50FF15|1|N|P|OP21-70079/2000</span>
    <ul>
      <li> <span>CC1680_1353_I01|344-0464-008_01|CONTRO PIASTRA|50FF15|2|N|P|OP21-70079/2000</span>
        <ul>
          <li> <span>344-0464-008_01|344-0464-008|CONTRO PIASTRA|FF8F2E|0|N|PQ|OP21-70079/2000</span></li>
        </ul>
      </li>
      <li> <span>CC1680_1353_I01|315-7195-008_04|PERNO DI CENTRAGGIO|FFC911|2|N|P3|OP21-70079/2000</span></li>
      <li> <span>CC1680_1353_I01|305-0696-008_01|CONTRO PIASTRA TONDA D23 MM|50FF15|2|N|P|OP21-70079/2000</span>
        <ul>
            <li><span>305-0696-008_01|305-0696-008|CONTRO PIASTRA TONDA D23 MM|FF8F2E|0|N|PQ|OP21-70079/2000</span></li>
        </ul>     
      </li>
    </ul>
  </li>
</ul>

The problem is that Im unable to rewrite dinamically an XML / HTML tree with the correct parent-children structure. thanks in advance, any help will be appreciated.

Upvotes: 0

Views: 85

Answers (1)

michael.hor257k
michael.hor257k

Reputation: 117175

Your question still has many missing details. And 320 lines of code is very far from a minimal example.

I am going to assume that since you tagged your question php you will be using the libxslt processor - so that you can use an extension function to tokenize the vertical bar-delimited string, and use the tokens to link children to their parents and vice-versa.

I am also assuming that the first token is the ID of the parent, while the second one is the ID of the current node.

Given all that, try the following stylesheet:

XSLT 1.0 + EXSLT str:tokenize()

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:str="http://exslt.org/strings"
extension-element-prefixes="str">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

<xsl:key name="child" match="LIN[../@ID='GRP2']" use="str:tokenize(FLD, '|')[1]" />
<xsl:key name="parent" match="LIN[../@ID='GRP2']" use="str:tokenize(FLD, '|')[2]" />

<xsl:template match="/RESULT">
    <ul class="tree">
        <xsl:apply-templates select="TAB[@ID='GRP2']/LIN[not(key('parent', str:tokenize(FLD, '|')[1]))]"/>
    </ul>
</xsl:template>

<xsl:template match="LIN">
    <li>
        <span>
            <xsl:value-of select="FLD"/>
        </span>
        <xsl:variable name="children" select="key('child', str:tokenize(FLD, '|')[2])" />
        <xsl:if test="$children">
            <ul>
                <xsl:apply-templates select="$children"/>
            </ul>
        </xsl:if>
    </li>
</xsl:template>

</xsl:stylesheet>

The output of this, when applied to your input, will be:

Result

<?xml version="1.0" encoding="UTF-8"?>
<ul class="tree">
  <li>
    <span>|CC16800001353|CLIP PANTERA TACHETE CLIP 19MM |50FF15|0|N|P|OP21-70079/2000</span>
  </li>
  <li>
    <span>CC16800001353|CC1680_1353_I01|CLIP PANTERA TACHETE CLIP 19MM|50FF15|1|N|P|OP21-70079/2000</span>
    <ul>
      <li>
        <span>CC1680_1353_I01|344-0464-008_01|CONTRO PIASTRA|50FF15|2|N|P|OP21-70079/2000</span>
        <ul>
          <li>
            <span>344-0464-008_01|344-0464-008|CONTRO PIASTRA|FF8F2E|0|N|PQ|OP21-70079/2000</span>
          </li>
        </ul>
      </li>
      <li>
        <span>CC1680_1353_I01|315-7195-008_04|PERNO DI CENTRAGGIO|FFC911|2|N|P3|OP21-70079/2000</span>
        <ul>
          <li>
            <span>315-7195-008_04|315-7195-008_03|PERNO DI CENTRAGGIO|50FF15|2|N|P|OP21-70079/2000</span>
            <ul>
              <li>
                <span>315-7195-008_03|315-7195-008_01|PERNO DI CENTRAGGIO|50FF15|2|N|P|OP21-70079/2000</span>
                <ul>
                  <li>
                    <span>315-7195-008_01|315-7195-008|PERNO DI CENTRAGGIO|50FF15|0|N|PQ|OP21-70079/2000</span>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
        </ul>
      </li>
      <li>
        <span>CC1680_1353_I01|305-0696-008_01|CONTRO PIASTRA TONDA D23 MM|50FF15|2|N|P|OP21-70079/2000</span>
        <ul>
          <li>
            <span>305-0696-008_01|305-0696-008|CONTRO PIASTRA TONDA D23 MM|FF8F2E|0|N|PQ|OP21-70079/2000</span>
          </li>
        </ul>
      </li>
      <li>
        <span>CC1680_1353_I01|CC1680_1353_M01|CLIP PANTERA TACHETE CLIP 19MM|50FF15|2|N|P|OP21-70079/2000</span>
        <ul>
          <li>
            <span>CC1680_1353_M01|315-7198-008_03|TASSELLO PORTA MOLLA|50FF15|1|N|P|OP21-70079/2000</span>
            <ul>
              <li>
                <span>315-7198-008_03|315-7198-008_01|TASSELLO PORTA MOLLA|50FF15|2|N|PB|OP21-70079/2000</span>
                <ul>
                  <li>
                    <span>315-7198-008_01|315-7198-008|TASSELLO PORTA MOLLA|FF8F2E|0|N|PQ|OP21-70079/2000</span>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li>
            <span>CC1680_1353_M01|316-0481-100|COMP DE 3;DF 0.65;L 9.5 MM;SPT 7.5|50FF15|0|N|PQ|OP21-70079/2000</span>
          </li>
          <li>
            <span>CC1680_1353_M01|CC_Y00018_06|CLIP PANTERA TACHETE CLIP 19MM|50FF15|1|N|P|OP21-70079/2000</span>
            <ul>
              <li>
                <span>CC_Y00018_06|CC_Y00018_04|CLIP PANTERA TACHETE CLIP 19MM|50FF15|2|N|P|OP21-70079/2000</span>
                <ul>
                  <li>
                    <span>CC_Y00018_04|CC_Y00018_03|CLIP PANTERA TACHETE CLIP 19MM|FF3300|2|N|P1|OP21-70079/2000</span>
                    <ul>
                      <li>
                        <span>CC_Y00018_03|CC_Y00018_02|CLIP PANTERA TACHETE CLIP 19MM|FF3300|2|N|P1|OP21-70079/2000</span>
                        <ul>
                          <li>
                            <span>CC_Y00018_02|CC_Y00018|CLIP PANTERA TACHETE CLIP 19MM|FF3300|1|N|P2|OP21-70079/2000</span>
                            <ul>
                              <li>
                                <span>CC_Y00018|325-A118-008_05|PANTERA|FFC911|1|N|P2|OP21-70079/2000</span>
                                <ul>
                                  <li>
                                    <span>325-A118-008_05|325-A118-008_02|PANTERA|42F4B6|2|N|P1|OP21-70079/2000</span>
                                    <ul>
                                      <li>
                                        <span>325-A118-008_02|325-A118-008|PANTERA|FF8F2E|17|N|P1Q|OP21-70079/2000</span>
                                      </li>
                                    </ul>
                                  </li>
                                </ul>
                              </li>
                              <li>
                                <span>CC_Y00018|315-7197-008|TASSELLO PER PANTERA|50FF15|0|N|FP3Q|OP21-70079/2000</span>
                              </li>
                            </ul>
                          </li>
                        </ul>
                      </li>
                    </ul>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li>
            <span>CC1680_1353_M01|315-7246-008_03|PERNO D.1,62XD.1,5X13,5 MM|FF3300|2|N|P1|OP21-70079/2000</span>
            <ul>
              <li>
                <span>315-7246-008_03|315-7246-008_01|PERNO D.1,62XD.1,5X13,5 MM|FF3300|2|N|P3|OP21-70079/2000</span>
                <ul>
                  <li>
                    <span>315-7246-008_01|315-7246-008|PERNO D.1,62XD.1,5X13,5 MM|50FF15|1|N|P3Q|OP21-70079/2000</span>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li>
            <span>CC1680_1353_M01|315-7446-204|PISTONE PER MOLLA D3 DELRIN NERO|FF3300|0|N|OPQ|OP21-70079/2000</span>
          </li>
          <li>
            <span>CC1680_1353_M01|315-7196-008_03|PERNO PER MOLLA|FFC911|0|N|PA1|OP21-70079/2000</span>
          </li>
        </ul>
      </li>
      <li>
        <span>CC1680_1353_I01|313-0394-103_10|M2X5 TSP 3.8 TORX (ISO 14581)|50FF15|2|N|P|OP21-70079/2000</span>
        <ul>
          <li>
            <span>313-0394-103_10|313-0394-103|M2X5 TSP 3.8 TORX (ISO 14581)|50FF15|16|N|PQ|OP21-70079/2000</span>
          </li>
        </ul>
      </li>
      <li>
        <span>CC1680_1353_I01|CC1680_1353_M02|MONTAGGIO BATTENTE C/CALAMITA|50FF15|1|N|P|OP21-70079/2000</span>
        <ul>
          <li>
            <span>CC1680_1353_M02|315-7213-008_03|BATTENTE CON CALAMITA D20MM|50FF15|1|N|P|OP21-70079/2000</span>
            <ul>
              <li>
                <span>315-7213-008_03|315-7213-008_01|BATTENTE CON CALAMITA D20MM|50FF15|2|N|P|OP21-70079/2000</span>
                <ul>
                  <li>
                    <span>315-7213-008_01|315-7213-008|BATTENTE CON CALAMITA D20MM|FF8F2E|0|N|PQ|OP21-70079/2000</span>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li>
            <span>CC1680_1353_M02|330-7119-999|CALAMITA ANELLO 15.5X7X2 MM|4274F4|35|N|P9Q|OP21-70079/2000</span>
          </li>
          <li>
            <span>CC1680_1353_M02|355-1066-232|PELLICOLA TONDA D19.5MM|50FF15|0|N|PQ|OP21-70079/2000</span>
          </li>
        </ul>
      </li>
      <li>
        <span>CC1680_1353_I01|CC1680_1353_M03|MONTAGGIO  CORPO CALAMITA D20|50FF15|1|N|P|OP21-70079/2000</span>
        <ul>
          <li>
            <span>CC1680_1353_M03|315-7214-008_04|CORPO CALAMITA D20MM|FF3300|1|N|P1|OP21-70079/2000</span>
            <ul>
              <li>
                <span>315-7214-008_04|315-7214-008_02|CORPO CALAMITA D20MM|FF3300|2|N|PB3|OP21-70079/2000</span>
                <ul>
                  <li>
                    <span>315-7214-008_02|315-7214-008_05|CORPO CALAMITA D20MM|FFC911|1|N|P1|OP21-70079/2000</span>
                    <ul>
                      <li>
                        <span>315-7214-008_05|315-7214-008_01|CORPO CALAMITA D20MM|FFC911|2|N|P3|OP21-70079/2000</span>
                        <ul>
                          <li>
                            <span>315-7214-008_01|315-7214-008|CORPO CALAMITA D20MM|FF8F2E|1|N|P3Q|OP21-70079/2000</span>
                          </li>
                        </ul>
                      </li>
                    </ul>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li>
            <span>CC1680_1353_M03|330-7119-999|CALAMITA ANELLO 15.5X7X2 MM|4274F4|35|N|P9Q|OP21-70079/2000</span>
          </li>
          <li>
            <span>CC1680_1353_M03|355-1066-232|PELLICOLA TONDA D19.5MM|50FF15|0|N|PQ|OP21-70079/2000</span>
          </li>
        </ul>
      </li>
      <li>
        <span>CC1680_1353_I01|324-0251-210|VASSOIO STD 126 ALVEOLI FELPAT|50FF15|0|S|OPQ|OP21-70079/2000</span>
      </li>
      <li>
        <span>CC1680_1353_I01|313-1003-008_04|VITE SPECIALE|FF3300|2|N|P1|OP21-70079/2000</span>
        <ul>
          <li>
            <span>313-1003-008_04|313-1003-008|VITE SPECIALE|FF8F2E|1|N|P1Q|OP21-70079/2000</span>
          </li>
        </ul>
      </li>
      <li>
        <span>CC1680_1353_I01|313-0369-103_01|M2X4 TSP 3.8 CROCE IMP.H|50FF15|2|N|P|OP21-70079/2000</span>
        <ul>
          <li>
            <span>313-0369-103_01|313-0369-103|M2X4 TSP 3.8 CROCE IMP.H|50FF15|7|N|PQ|OP21-70079/2000</span>
          </li>
        </ul>
      </li>
      <li>
        <span>CC1680_1353_I01|356-0010-210|VASSOIO STD 20 ALVEOLI FELPATO|4274F4|0|S|OPAQ|OP21-70079/2000</span>
      </li>
    </ul>
  </li>
</ul>

which is very different from the expected output you posted. But I believe that's your own fault for not posting a minimal reproducible example as asked.

Upvotes: 1

Related Questions