如何使用XSLT从XML文件中的不同节点获取值的总和

时间:2013-10-16 09:35:19

标签: xml xslt xpath xslt-2.0

我是XSLT的新手,并且不知道如何处理它。 我的XML文件是:

<?xml version="1.0"?>
<books>
  <book>
    <title type="fiction">CS115</title>
    <authors>Adams</authors>
    <price>12.0</price>
  </book>
  <book>
    <title type="fiction">CS205</title>
    <authors>Dykes</authors>
    <price>50.2</price>
  </book>
  <book>
    <title type="nonfiction">CS255</title>
    <authors>Brunner,Computer</authors>
    <price>11.5</price>
  </book>
   <book>
    <title type="nonfiction">CS118</title>
    <authors>Adams,Bououss</authors>    
    <price>20.0</price>
  </book>
   <book>
    <title type="fiction">The Hobbit</title>
    <authors>J.R.R. Tolkien</authors>    
    <price>25.99</price>
  </book>
</books>

我想计算价格低于30且 title / @ type 的书籍的总价格。

1 个答案:

答案 0 :(得分:2)

从学习一些XPath开始:/books/book选择所有book个元素,/books/book[title/@type = 'fiction']标题类型属性为虚构的元素,/books/book[title/@type = 'fiction' and price < 30]添加有关价格的约束,最后sum(/books/book[title/@type = 'fiction' and price < 30]/price)计算总和。

在XSLT代码中,您需要转义<<xsl:value-of select="sum(/books/book[title/@type = 'fiction' and price &lt; 30]/price)"/>