我需要生成一个项,该项将为给定的XML输入累计总计。
XML输入为:
<catalog xmlns:foo="http://www.foo.org/" xmlns:bar="http://www.bar.org">
<item id="1" amount="10" />
<item id="2" amount="20" />
</catalog>
这是我的XSLT:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:foo="http://www.foo.org/" xmlns:bar="http://www.bar.org">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Id</th>
<th>Amount</th>
</tr>
<xsl:for-each select="catalog/item">
<tr>
<td><xsl:value-of select="@id"/></td>
<td><xsl:value-of select="@amount"/></td>
<br/>
Total:
</tr>
</xsl:for-each>
</table>
这是我的输出:
<html xmlns:foo="http://www.foo.org/" xmlns:bar="http://www.bar.org">
<body>
<h2></h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Id</th>
<th>Amount</th>
</tr>
<tr>
<td>1</td>
<td>10</td>
<br/>
Total:
</tr>
<tr>
<td>2</td>
<td>20</td>
<br/>
Total:
</tr>
</table>
结果应为Total = 30
如何实现求和函数以返回正确的总值?
答案 0 :(得分:1)
使用sum()
函数总计@amount
值:
<xsl:value-of select="sum(/catalog/item/@amount)"/>
请注意,您需要将Total:
标签与上面的xsl:value-of
循环中的xsl:for-each
一起移出。