将XML元素与xsl结合使用

时间:2010-05-15 00:04:46

标签: xslt

我有以下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>

2 个答案:

答案 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中的分组和求和。