XSLT汇总值

时间:2018-09-13 00:14:34

标签: xml xslt xpath

我需要生成一个项,该项将为给定的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

如何实现求和函数以返回正确的总值?

1 个答案:

答案 0 :(得分:1)

使用sum()函数总计@amount值:

<xsl:value-of select="sum(/catalog/item/@amount)"/>

请注意,您需要将Total:标签与上面的xsl:value-of循环中的xsl:for-each 一起移出。