Группировка и сумма из двух разных узлов - PullRequest
0 голосов
/ 31 января 2019

У меня есть данные со значениями двух разных родителей:
Предварительный просмотр> страница> продукт> поля> поле> значение
и
предварительный просмотр> страница> продукт> субпродукты> продукт> поля> поле> поле> значение

Мне нужно сложить значения из обоих, сгруппированных по инициалам.
Инициалы также находятся в двух разных узлах.

Это входные данные:

<?xml version="1.0" encoding="UTF-8"?>
<preview>
   <page id="6661" templateId="16" templateName="Source">
       <fields>
         <field definitionId="12">
            <name>Sidenavn</name>
            <value>Side11</value>
         </field>
       </fields>
      <product headlineId="6697">
         <fields>
            <field definitionId="608">
               <name>Initialer</name>
               <value>JFR</value>
            </field>
            <field definitionId="621">
               <name>Forv. oms. numeric</name>
               <value>10.00</value>
            </field>
         </fields>
         <subProducts>
            <product headlineId="6697">
               <fields>
                  <field definitionId="608">
                     <name>Initialer</name>
                     <value>LBD</value>
                  </field>
                  <field definitionId="621">
                     <name>Forv. oms. numeric</name>
                     <value>15.00</value>
                  </field>
               </fields>
               <logos/>
            </product>
            <product headlineId="6697">
               <fields>
                  <field definitionId="608">
                     <name>Initialer</name>
                     <value>LBD</value>
                  </field>
                  <field definitionId="621">
                     <name>Forv. oms. numeric</name>
                     <value>20.00</value>
                  </field>
               </fields>
            </product>
            <product headlineId="6697">
               <fields>
                  <field definitionId="608">
                     <name>Initialer</name>
                     <value>JFR</value>
                  </field>
                  <field definitionId="621">
                     <name>Forv. oms. numeric</name>
                     <value>12.00</value>
                  </field>
               </fields>
            </product>
         </subProducts>
      </product>
   </page>
</preview>

Я пытался использовать / xsl: для каждой группы, как показано ниже, но могу делать только отдельно для продуктов и субпродуктов.

</xsl:for-each-group>
    <xsl:for-each-group select="//page/product/subProducts/product" group-by="./fields/field[@definitionId='608']/value">
    <xsl:for-each select="current-group()">
</xsl:for-each>
[...]

Таким образом, ожидаемый результат должен быть таким:
JFR 22 * ​​1016 * LBD 35

Все, что я могу сейчас сделать, это суммировать и группировать значения отдельно для узлов Products и Subproducts.
Ирезультат выглядит так:
JFR 10
LBD 35
JFR 12

...