У меня есть данные со значениями двух разных родителей:
Предварительный просмотр> страница> продукт> поля> поле> значение
и
предварительный просмотр> страница> продукт> субпродукты> продукт> поля> поле> поле> значение
Мне нужно сложить значения из обоих, сгруппированных по инициалам.
Инициалы также находятся в двух разных узлах.
Это входные данные:
<?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