我正在尝试对XML中的节点的唯一组合进行分组和求和。
{{1}}
因此,对于field1和field2的每个唯一组合,我需要生成field3的总和
我理解group-by是可以使用的东西,但不知道如何实现它
答案 0 :(得分:1)
以下示例说明如何使用xsl:for-each-group
和group-by
每行的field1
和field2
元素的值。对于每个组,生成sum()
元素field3
和@key
以展示分组键值:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output indent="yes"/>
<xsl:template match="/">
<summary>
<xsl:for-each-group select="/root/row"
group-by="string-join((field1,field2),'-')">
<sum key="{current-grouping-key()}">
<xsl:value-of select="sum(current-group()/field3)" />
</sum>
</xsl:for-each-group>
</summary>
</xsl:template>
</xsl:stylesheet>
对样本数据运行时,会产生以下输出:
<summary>
<sum key="720-8900">230</sum>
<sum key="720-99998">120</sum>
<sum key="720-12403">130</sum>
</summary>