我有以下xml:
<RowSet>
<Row>
<Number>12345</Number>
<Quantity>42</Quantity>
</Row>
<Row>
<Number>12345</Number>
<Quantity>12</Quantity>
</Row>
<Row>
<Number>54321</Number>
<Quantity>37</Quantity>
</Row>
</RowSet>
我想使用xsl来组合具有相同Number的元素,结果应该是Quantity元素的总和。所以输出应该如下所示:
<RowSet>
<Row>
<Number>12345</Number>
<Quantity>64</Quantity>
</Row>
<Row>
<Number>54321</Number>
<Quantity>37</Quantity>
</Row>
</RowSet>
答案 0 :(得分:3)
<xsl:key name="kRow" match="Row" use="Number" />
<xsl:template match="RowSet">
<xsl:copy>
<xsl:apply-templates select="Row[
generate-id() = generate-id(key('kRow', Number)[1])
]" />
</xsl:copy>
</xsl:template>
<xsl:template match="Row">
<xsl:copy>
<xsl:copy-of select="Number" />
<Quantity>
<xsl:value-of select="sum(key('kRow', Number)/Quantity)" />
</Quantity>
</xsl:copy>
</xsl:template>
答案 1 :(得分:1)
这些文章描述了XSLT中的分组和求和。