Объедините элементы XML с xsl - PullRequest
1 голос
/ 15 мая 2010

У меня есть следующий 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 для объединения элементов с одним и тем же номером, и в результате получится сумма элементов количества Таким образом, результат должен выглядеть следующим образом:

<RowSet>
  <Row>
    <Number>12345</Number>
    <Quantity>64</Quantity>
  </Row>
  <Row>
    <Number>54321</Number>
    <Quantity>37</Quantity>
  </Row>
</RowSet>

Ответы [ 2 ]

3 голосов
/ 15 мая 2010
<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 голос
/ 15 мая 2010

Эти статьи описывают группирование и суммирование в XSLT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...