【问题标题】:Rewriting XML tree structure with PHP / XSLT用 PHP / XSLT 重写 XML 树结构
【发布时间】:2021-10-28 03:10:56
【问题描述】:

大家好,我从 Web 服务 SOAP 调用中获得了这个结果 XML 数据文件,如下所示:

<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>

我需要捕获&lt;TAB ID='GRP2'&gt; 的标签&lt;FLD&gt; 内的数据,但问题是如果您可以看到XML 没有嵌套,我需要创建一个嵌套的XML 树。 你可以看到&lt;FLD&gt;标签的内容,在第二个位置,有表示那个父母的孩子的代码,例如第一项

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

如您所见,有 CC1680_1353_I01 的子项

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

我需要创建一个 XML 树来将其转换为 HTML(可能使用 XLST),类似于这个

<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>

问题是我无法用正确的父子结构动态地重写 XML / HTML 树。 提前感谢,任何帮助将不胜感激。

【问题讨论】:

  • 请在您的问题中发布预期结果作为代码 - 而不是外部链接中的图片。将示例减少到演示问题所需的最低限度也会有所帮助 - 请参阅:[mcve[.最后,请就您在尝试完成此操作时遇到的困难提出具体问题。否则看起来你只是在找人为你编写代码。
  • 好的,感谢您的耐心等待,我发布了一个 html 预期结果,正如我所说,我的问题是我需要从具有父子的 XML 普通结构重新创建嵌套的 HTML 树结构 标签的内容中要读取的关系。谢谢,最好的问候。
  • 您的问题没有得到解答吗?

标签: php html xml xslt


【解决方案1】:

您的问题仍有许多缺失的细节。而且 320 行代码远非最小示例。

我假设由于您标记了您的问题php,您将使用libxslt 处理器 - 这样您就可以使用扩展函数来标记以竖线分隔的字符串,并使用标记来链接孩子对他们的父母,反之亦然。

我还假设第一个令牌是父节点的 ID,而第二个是当前节点的 ID。

鉴于所有这些,请尝试以下样式表:

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>

当应用于您的输入时,其输出将是:

结果

<?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>

这与您发布的预期输出非常不同。但我相信这是你自己的错,没有按照要求发布minimal reproducible example

【讨论】:

  • 非常感谢,我会尝试您的解决方案,我会尽快回复您。我无法发布正确的 HTML 输出,因为我对它也有一个大致的了解……所以我只发布了几行……再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-17
相关资源
最近更新 更多