У меня есть требование группировать все элементы ввода и выполнять некоторые действия.Как сделать сумму и удалить дубликат с помощью группы по xslt
Если я получить вход в -
<ns1:users>
<ns1:user>
<ns1:name>A</ns1:name>
<ns1:ProductIdentifier>1234</ns1:ProductIdentifier>
<ns1:Quantity>100</ns1:Quantity>
</ns1:user>
<ns1:user>
<ns1:name>B</ns1:name>
<ns1:ProductIdentifier>1234</ns1:ProductIdentifier>
<ns1:Quantity>200</ns1:Quantity>
</ns1:user>
<ns1:user>
<ns1:name>C</ns1:name>
<ns1:ProductIdentifier>12345</ns1:ProductIdentifier>
<ns1:Quantity>300</ns1:Quantity>
</ns1:user>
</ns1:users>
я должен группе элемента ProductIdentifier и если есть 2 или более чем на 2 же ProductIdentifier то я должен отправить только 1-ый экземпляр Productidentifier и количество должно быть суммой от всего того же идентификатора продукта.
Выход -
<ns1:users>
<ns1:user>
<ns1:name>A</ns1:name>
<ns1:ProductIdentifier>1234</ns1:ProductIdentifier>
<ns1:Quantity>300</ns1:Quantity>
</ns1:user>
<ns1:user>
<ns1:user>
<ns1:name>C</ns1:name>
<ns1:ProductIdentifier>12345</ns1:ProductIdentifier>
<ns1:Quantity>300</ns1:Quantity>
</ns1:user>
</ns1:users>
Мой XSLT -
<xsl:key match="user" name="ProductIdentifier" use="ProductIdentifier"/>
<xsl:template match="/">
<xsl:for-each select="users/user[generate-id()=generate-id(key('ProductIdentifier',ProductIdentifier)[1])]">
<ns1:user>
<ns1:name>
<xsl:value-of select="name"/>
</ns1:name>
<ns1:ProductIdentifier>
<xsl:value-of select="ProductIdentifier"/>
</ns1:ProductIdentifier>
<ns1:Quantity>
<xsl:for-each select="key('ProductIdentifier',ProductIdentifier)">
<xsl:value-of select="sum(Quantity)"/>
</xsl:for-each>
</ns1:Quantity>
</ns1:user>
</xsl:for-each>
</ns1:users>
Выход приходит, как это -
<ns1:users>
<ns1:user>
<ns1:name>A</ns1:name>
<ns1:ProductIdentifier>1078859</ns1:ProductIdentifier>
<ns1:Quantity>100200</ns1:Quantity>
</ns1:LeftOnBoardPart>
<ns1:LeftOnBoardPart>
<ns1:name>C</ns1:name>
<ns1:ProductIdentifier>C</ns1:ProductIdentifier>
<ns1:Quantity>300</ns1:Quantity>
</ns1:LeftOnBoardPart>
</ns1:LeftOnBoardParts>
Как просуммировать 100 + 200 = 300?
Что вы пробовали до сих пор? StackOverflow не является сайтом «написать мой код для меня». –
Начните здесь: http://www.jenitennison.com/xslt/grouping/muenchian.html –
Имеет ли ваш ввод префиксные элементы, такие как ''? Если да, добавьте пропущенные объявления пространства имен. Ваш XSLT, похоже, работает с другим входом, где элементы не имеют префикса, например. ''. –