XSLT-группировка на основе повторяющихся значений дочерних узлов - PullRequest
0 голосов
/ 09 мая 2020

Я хочу сгруппировать узлы на основе определенных значений дочернего узла, однако дочерний узел будет дублироваться, но с разными значениями. Условие для группировки if (E2EDP19-QUALF) = "003" & IF Два или более контура E2EDP01 содержат одинаковое значение для E2EDP19-IDTNR, E2EDP26-BETRG, где E2EDP26-QUAL = "011" и IF E2EDP19-QUALF! = "003" генерируют значения без суммирования. Вот мой ввод.

<root>
    <E1EDP01 SEGMENT="1">
            <POSEX>000530</POSEX>
            <MENGE>0</MENGE>
            <MENEE>CA</MENEE>
            <Z1EDP1A SEGMENT="1">
                <MENGE>2.000</MENGE>
                <MENEE>CA</MENEE>
                <PACK>72</PACK>
                <INNPACK>1</INNPACK>
            </Z1EDP1A>
            <E1EDP02 SEGMENT="1">
                <QUALF>001</QUALF>
            </E1EDP02>
            <E1EDP03 SEGMENT="1">
                <IDDAT>011</IDDAT>
                <DATUM>20200318</DATUM>
            </E1EDP03>
            <E1EDP19 SEGMENT="1">
                <QUALF>001</QUALF>
                <IDTNR>94499</IDTNR>
            </E1EDP19>
            <E1EDP19 SEGMENT="1">
                <QUALF>002</QUALF>
                <IDTNR>000003400005203011</IDTNR>
                <KTEXT>ABC</KTEXT>
            </E1EDP19>
            <E1EDP19 SEGMENT="1">
                <QUALF>Z01</QUALF>
                <IDTNR>UA003400005203</IDTNR>
            </E1EDP19>
            <E1EDP19 SEGMENT="1">
                <QUALF>Z05</QUALF>
                <IDTNR>UK00034000052035</IDTNR>
            </E1EDP19>
            <E1EDP19 SEGMENT="1">
                <QUALF>Z03</QUALF>
                <IDTNR>UI03400005200</IDTNR>
            </E1EDP19>
            <E1EDP19 SEGMENT="1">
                <QUALF>Z04</QUALF>
                <IDTNR>UP034000052004</IDTNR>
            </E1EDP19>
            <E1EDP19 SEGMENT="1">
                <QUALF>003</QUALF>
                <IDTNR>UK00034000052035</IDTNR>
            </E1EDP19>
            <E1EDP26 SEGMENT="1">
                <QUALF>001</QUALF>
                <BETRG>0.0000</BETRG>
            </E1EDP26>
            <E1EDP26 SEGMENT="1">
                <QUALF>002</QUALF>
                <BETRG>0</BETRG>
            </E1EDP26>
            <E1EDP26 SEGMENT="1">
                <QUALF>011</QUALF>
                <BETRG>0.0000</BETRG>
            </E1EDP26>
            <E1EDP26 SEGMENT="1">
                <QUALF>003</QUALF>
                <BETRG>0.0000</BETRG>
            </E1EDP26>
            <E1EDP26 SEGMENT="1">
                <QUALF>006</QUALF>
                <BETRG>198.72</BETRG>
            </E1EDP26>
 </E1EDP01>
  <E1EDP01 SEGMENT="1">
         <POSEX>000290</POSEX>
         <MENGE>45.000</MENGE>
         <MENEE>CA</MENEE>
         <NTGEW>229.500</NTGEW>
         <GEWEI>LB</GEWEI>
         <Z1EDP1A SEGMENT="1">
            <MENGE>45.000</MENGE>
            <MENEE>CA</MENEE>
            <PACK>8</PACK>
            <INNPACK>1</INNPACK>
         </Z1EDP1A>
         <E1EDP02 SEGMENT="1">
            <QUALF>001</QUALF>
            <BELNR>95219</BELNR>
            <ZEILE>000240</ZEILE>
            <DATUM>20200304</DATUM>
         </E1EDP02>
         <E1EDP02 SEGMENT="1">
            <QUALF>002</QUALF>
            <BELNR>0006448292</BELNR>
            <ZEILE>000030</ZEILE>
            <DATUM>20200304</DATUM>
         </E1EDP02>
         <E1EDP02 SEGMENT="1">
            <QUALF>016</QUALF>
            <BELNR>0085393500</BELNR>
            <ZEILE>000300</ZEILE>
            <DATUM>20200319</DATUM>
         </E1EDP02>
         <E1EDP03 SEGMENT="1">
            <IDDAT>029</IDDAT>
            <DATUM>20200304</DATUM>
         </E1EDP03>
         <E1EDP03 SEGMENT="1">
            <IDDAT>001</IDDAT>
            <DATUM>20200319</DATUM>
         </E1EDP03>
         <E1EDP03 SEGMENT="1">
            <IDDAT>011</IDDAT>
            <DATUM>20200318</DATUM>
         </E1EDP03>
         <E1EDP03 SEGMENT="1">
            <IDDAT>025</IDDAT>
            <DATUM>20200318</DATUM>
         </E1EDP03>
         <E1EDP03 SEGMENT="1">
            <IDDAT>027</IDDAT>
            <DATUM>20200318</DATUM>
         </E1EDP03>
         <E1EDP03 SEGMENT="1">
            <IDDAT>023</IDDAT>
            <DATUM>20200318</DATUM>
         </E1EDP03>
         <E1EDP03 SEGMENT="1">
            <IDDAT>022</IDDAT>
            <DATUM>20200304</DATUM>
         </E1EDP03>
         <E1EDP19 SEGMENT="1">
            <QUALF>001</QUALF>
            <IDTNR>02296</IDTNR>
         </E1EDP19>
         <E1EDP19 SEGMENT="1">
            <QUALF>002</QUALF>
            <IDTNR>000001070006225000</IDTNR>
            <KTEXT>ABC</KTEXT>
         </E1EDP19>
         <E1EDP19 SEGMENT="1">
            <QUALF>Z01</QUALF>
            <IDTNR>UA001070006225</IDTNR>
         </E1EDP19>
         <E1EDP19 SEGMENT="1">
            <QUALF>Z05</QUALF>
            <IDTNR>UK10010700062250</IDTNR>
         </E1EDP19>
         <E1EDP19 SEGMENT="1">
            <QUALF>Z03</QUALF>
            <IDTNR>UI01070006225</IDTNR>
         </E1EDP19>
         <E1EDP19 SEGMENT="1">
            <QUALF>Z04</QUALF>
            <IDTNR>UP010700062253</IDTNR>
         </E1EDP19>
         <E1EDP19 SEGMENT="1">
            <QUALF>003</QUALF>
            <IDTNR>UK10010700062250</IDTNR>
         </E1EDP19>
         <E1EDP26 SEGMENT="1">
            <QUALF>004</QUALF>
            <BETRG>1123.20</BETRG>
         </E1EDP26>
         <E1EDP26 SEGMENT="1">
            <QUALF>003</QUALF>
            <BETRG>1123.20</BETRG>
         </E1EDP26>
         <E1EDP26 SEGMENT="1">
            <QUALF>006</QUALF>
            <BETRG>24.96</BETRG>
         </E1EDP26>
         <E1EDP26 SEGMENT="1">
            <QUALF>010</QUALF>
            <BETRG>1123.20</BETRG>
         </E1EDP26>
         <E1EDP26 SEGMENT="1">
            <QUALF>011</QUALF>
            <BETRG>24.9600</BETRG>
         </E1EDP26>
         <E1EDP26 SEGMENT="1">
            <QUALF>015</QUALF>
            <BETRG>1123.20</BETRG>
         </E1EDP26>
         <E1EDP26 SEGMENT="1">
            <QUALF>001</QUALF>
            <BETRG>.00</BETRG>
         </E1EDP26>
         <E1EDP26 SEGMENT="1">
            <QUALF>002</QUALF>
            <BETRG>22.46-</BETRG>
         </E1EDP26>
         <E1EDP05 SEGMENT="1">
            <ALCKZ>-</ALCKZ>
            <KSCHL>ZTCP</KSCHL>
            <KOTXT>TR Corp Priice O/I</KOTXT>
            <BETRG>151.2</BETRG>
            <KRATE>3.3600</KRATE>
            <UPRBS>1</UPRBS>
            <MEAUN>CA</MEAUN>
            <Z1EDP05 SEGMENT="1">
               <QULQUN>45.0000</QULQUN>
            </Z1EDP05>
         </E1EDP05>
         <E1EDPT1 SEGMENT="1">
            <TDID>0004</TDID>
            <TSSPRAS>E</TSSPRAS>
            <E1EDPT2 SEGMENT="1">
               <TDLINE>HEATH PK SHARE STDBG8CT</TDLINE>
            </E1EDPT2>
         </E1EDPT1>
      </E1EDP01>
 <E1EDP01 SEGMENT="1">
            <POSEX>000530</POSEX>
            <MENGE>0</MENGE>
            <MENEE>CA</MENEE>
            <Z1EDP1A SEGMENT="1">
                <MENGE>2.000</MENGE>
                <MENEE>CA</MENEE>
                <PACK>72</PACK>
                <INNPACK>1</INNPACK>
            </Z1EDP1A>
            <E1EDP02 SEGMENT="1">
                <QUALF>001</QUALF>
            </E1EDP02>
            <E1EDP03 SEGMENT="1">
                <IDDAT>011</IDDAT>
                <DATUM>20200318</DATUM>
            </E1EDP03>
            <E1EDP19 SEGMENT="1">
                <QUALF>001</QUALF>
                <IDTNR>94499</IDTNR>
            </E1EDP19>
            <E1EDP19 SEGMENT="1">
                <QUALF>002</QUALF>
                <IDTNR>000003400005203011</IDTNR>
                <KTEXT>XYZ</KTEXT>
            </E1EDP19>
            <E1EDP19 SEGMENT="1">
                <QUALF>Z01</QUALF>
                <IDTNR>UA003400005203</IDTNR>
            </E1EDP19>
            <E1EDP19 SEGMENT="1">
                <QUALF>Z05</QUALF>
                <IDTNR>UK00034000052035</IDTNR>
            </E1EDP19>
            <E1EDP19 SEGMENT="1">
                <QUALF>Z03</QUALF>
                <IDTNR>UI03400005200</IDTNR>
            </E1EDP19>
            <E1EDP19 SEGMENT="1">
                <QUALF>Z04</QUALF>
                <IDTNR>UP034000052004</IDTNR>
            </E1EDP19>
            <E1EDP19 SEGMENT="1">
                <QUALF>003</QUALF>
                <IDTNR>UK00034000052035</IDTNR>
            </E1EDP19>
            <E1EDP26 SEGMENT="1">
                <QUALF>001</QUALF>
                <BETRG>0.0000</BETRG>
            </E1EDP26>
            <E1EDP26 SEGMENT="1">
                <QUALF>002</QUALF>
                <BETRG>0</BETRG>
            </E1EDP26>
            <E1EDP26 SEGMENT="1">
                <QUALF>011</QUALF>
                <BETRG>0.0000</BETRG>
            </E1EDP26>
            <E1EDP26 SEGMENT="1">
                <QUALF>003</QUALF>
                <BETRG>0.0000</BETRG>
            </E1EDP26>
            <E1EDP26 SEGMENT="1">
                <QUALF>006</QUALF>
                <BETRG>198.72</BETRG>
            </E1EDP26>
   </E1EDP01>

 </root>

Мой ожидаемый результат -

<root>
<E1EDP01 SEGMENT="1">
            <POSEX>000530</POSEX>
            <MENGE>2</MENGE>
            <MENEE>CA</MENEE>
            <Z1EDP1A SEGMENT="1">
                <MENGE>2.000</MENGE>
                <MENEE>CA</MENEE>
                <PACK>72</PACK>
                <INNPACK>1</INNPACK>
            </Z1EDP1A>
            <E1EDP02 SEGMENT="1">
                <QUALF>001</QUALF>
            </E1EDP02>
            <E1EDP03 SEGMENT="1">
                <IDDAT>011</IDDAT>
                <DATUM>20200318</DATUM>
            </E1EDP03>
            <E1EDP19 SEGMENT="1">
                <QUALF>001</QUALF>
                <IDTNR>94499</IDTNR>
            </E1EDP19>
            <E1EDP19 SEGMENT="1">
                <QUALF>002</QUALF>
                <IDTNR>000003400005203011</IDTNR>
                <KTEXT>ABC</KTEXT>
            </E1EDP19>
            <E1EDP19 SEGMENT="1">
                <QUALF>Z01</QUALF>
                <IDTNR>UA003400005203</IDTNR>
            </E1EDP19>
            <E1EDP19 SEGMENT="1">
                <QUALF>Z05</QUALF>
                <IDTNR>UK00034000052035</IDTNR>
            </E1EDP19>
            <E1EDP19 SEGMENT="1">
                <QUALF>Z03</QUALF>
                <IDTNR>UI03400005200</IDTNR>
            </E1EDP19>
            <E1EDP19 SEGMENT="1">
                <QUALF>Z04</QUALF>
                <IDTNR>UP034000052004</IDTNR>
            </E1EDP19>
            <E1EDP19 SEGMENT="1">
                <QUALF>003</QUALF>
                <IDTNR>UK00034000052035</IDTNR>
            </E1EDP19>
            <E1EDP26 SEGMENT="1">
                <QUALF>001</QUALF>
                <BETRG>0.0000</BETRG>
            </E1EDP26>
            <E1EDP26 SEGMENT="1">
                <QUALF>002</QUALF>
                <BETRG>0</BETRG>
            </E1EDP26>
            <E1EDP26 SEGMENT="1">
                <QUALF>011</QUALF>
                <BETRG>0.0000</BETRG>
            </E1EDP26>
            <E1EDP26 SEGMENT="1">
                <QUALF>003</QUALF>
                <BETRG>0.0000</BETRG>
            </E1EDP26>
            <E1EDP26 SEGMENT="1">
                <QUALF>006</QUALF>
                <BETRG>198.72</BETRG>
            </E1EDP26>
 </E1EDP01>
  <E1EDP01 SEGMENT="1">
         <POSEX>000290</POSEX>
         <MENGE>90.000</MENGE>
         <MENEE>CA</MENEE>
         <NTGEW>459.000</NTGEW>
         <GEWEI>LB</GEWEI>
         <Z1EDP1A SEGMENT="1">
            <MENGE>90.000</MENGE>
            <MENEE>CA</MENEE>
            <PACK>8</PACK>
            <INNPACK>1</INNPACK>
         </Z1EDP1A>
         <E1EDP02 SEGMENT="1">
            <QUALF>001</QUALF>
            <BELNR>95219</BELNR>
            <ZEILE>000240</ZEILE>
            <DATUM>20200304</DATUM>
         </E1EDP02>
         <E1EDP02 SEGMENT="1">
            <QUALF>002</QUALF>
            <BELNR>0006448292</BELNR>
            <ZEILE>000030</ZEILE>
            <DATUM>20200304</DATUM>
         </E1EDP02>
         <E1EDP02 SEGMENT="1">
            <QUALF>016</QUALF>
            <BELNR>0085393500</BELNR>
            <ZEILE>000300</ZEILE>
            <DATUM>20200319</DATUM>
         </E1EDP02>
         <E1EDP03 SEGMENT="1">
            <IDDAT>029</IDDAT>
            <DATUM>20200304</DATUM>
         </E1EDP03>
         <E1EDP03 SEGMENT="1">
            <IDDAT>001</IDDAT>
            <DATUM>20200319</DATUM>
         </E1EDP03>
         <E1EDP03 SEGMENT="1">
            <IDDAT>011</IDDAT>
            <DATUM>20200318</DATUM>
         </E1EDP03>
         <E1EDP03 SEGMENT="1">
            <IDDAT>025</IDDAT>
            <DATUM>20200318</DATUM>
         </E1EDP03>
         <E1EDP03 SEGMENT="1">
            <IDDAT>027</IDDAT>
            <DATUM>20200318</DATUM>
         </E1EDP03>
         <E1EDP03 SEGMENT="1">
            <IDDAT>023</IDDAT>
            <DATUM>20200318</DATUM>
         </E1EDP03>
         <E1EDP03 SEGMENT="1">
            <IDDAT>022</IDDAT>
            <DATUM>20200304</DATUM>
         </E1EDP03>
         <E1EDP19 SEGMENT="1">
            <QUALF>001</QUALF>
            <IDTNR>02296</IDTNR>
         </E1EDP19>
         <E1EDP19 SEGMENT="1">
            <QUALF>002</QUALF>
            <IDTNR>000001070006225000</IDTNR>
            <KTEXT>ABC</KTEXT>
         </E1EDP19>
         <E1EDP19 SEGMENT="1">
            <QUALF>Z01</QUALF>
            <IDTNR>UA001070006225</IDTNR>
         </E1EDP19>
         <E1EDP19 SEGMENT="1">
            <QUALF>Z05</QUALF>
            <IDTNR>UK10010700062250</IDTNR>
         </E1EDP19>
         <E1EDP19 SEGMENT="1">
            <QUALF>Z03</QUALF>
            <IDTNR>UI01070006225</IDTNR>
         </E1EDP19>
         <E1EDP19 SEGMENT="1">
            <QUALF>Z04</QUALF>
            <IDTNR>UP010700062253</IDTNR>
         </E1EDP19>
         <E1EDP19 SEGMENT="1">
            <QUALF>003</QUALF>
            <IDTNR>UK10010700062250</IDTNR>
         </E1EDP19>
         <E1EDP26 SEGMENT="1">
            <QUALF>004</QUALF>
            <BETRG>1123.20</BETRG>
         </E1EDP26>
         <E1EDP26 SEGMENT="1">
            <QUALF>003</QUALF>
            <BETRG>1123.20</BETRG>
         </E1EDP26>
         <E1EDP26 SEGMENT="1">
            <QUALF>006</QUALF>
            <BETRG>24.96</BETRG>
         </E1EDP26>
         <E1EDP26 SEGMENT="1">
            <QUALF>010</QUALF>
            <BETRG>1123.20</BETRG>
         </E1EDP26>
         <E1EDP26 SEGMENT="1">
            <QUALF>011</QUALF>
            <BETRG>24.9600</BETRG>
         </E1EDP26>
         <E1EDP26 SEGMENT="1">
            <QUALF>015</QUALF>
            <BETRG>1123.20</BETRG>
         </E1EDP26>
         <E1EDP26 SEGMENT="1">
            <QUALF>001</QUALF>
            <BETRG>.00</BETRG>
         </E1EDP26>
         <E1EDP26 SEGMENT="1">
            <QUALF>002</QUALF>
            <BETRG>22.46-</BETRG>
         </E1EDP26>
         <E1EDP05 SEGMENT="1">
            <ALCKZ>-</ALCKZ>
            <KSCHL>ZTCP</KSCHL>
            <KOTXT>TR Corp Priice O/I</KOTXT>
            <BETRG>302.4</BETRG>
            <KRATE>3.3600</KRATE>
            <UPRBS>1</UPRBS>
            <MEAUN>CA</MEAUN>
            <Z1EDP05 SEGMENT="1">
               <QULQUN>45.0000</QULQUN>
            </Z1EDP05>
         </E1EDP05>
         <E1EDPT1 SEGMENT="1">
            <TDID>0004</TDID>
            <TSSPRAS>E</TSSPRAS>
            <E1EDPT2 SEGMENT="1">
               <TDLINE>HEATH PK SHARE STDBG8CT</TDLINE>
            </E1EDPT2>
         </E1EDPT1>
      </E1EDP01>
</root>
...