【发布时间】:2016-05-10 09:22:27
【问题描述】:
对不起,我的英语不是母语,所以有些单词和术语可能是错误的。
我有很多项目的 XML。有些项目可能是很多次。我希望它是 hatml 表,但相同的项目只列出一次,并且总数已汇总。
普通的 for-each 很简单,但它只是列出了所有内容。如何为我的 XSLT 添加一些条件等?
这是我的示例 XML:
<Amounts>
<item>
<id>02</id>
<name>Item2</name>
<amount>20</amount>
</item>
<item>
<id>01</id>
<name>Item1</name>
<amount>80</amount>
</item>
<item>
<id>06</id>
<name>Item6</name>
<amount>50</amount>
</item>
<item>
<id>02</id>
<name>Item2</name>
<amount>150</amount>
</item>
</Amounts>
现在这是我的 XSLT:
<table>
<tr>
<td>id</td>
<td>name</td>
<td>total</td>
</tr>
<xsl:for-each select="/Amounts/item">
<tr>
<td><xsl:value-of select="id"/></td>
<td><xsl:value-of select="name"/></td>
<td><xsl:value-of select="amount"/></td>
</tr>
</table>
但我不希望这样:
<table>
<tr>
<td>id</td>
<td>name</td>
<td>total</td>
</tr>
<tr>
<td>01</td>
<td>Item1</td>
<td>80</td>
</tr>
<tr>
<td>02</td>
<td>Item2</td>
<td>170</td>
</tr>
<tr>
<td>06</td>
<td>Item6</td>
<td>50</td>
</tr>
</table>
【问题讨论】:
-
这是一个分组问题,看起来您想将
item元素按id或name子元素分组,然后将每个组的amout相加。请参阅 w3.org/TR/xslt20/#grouping-examples 了解 XSLT 2.0 或 jenitennison.com/xslt/grouping/muenchian.xml 了解基于 XSLT 1.0 的 Muenchian 分组。