如何在xslt中对变量求和

时间:2017-04-04 13:34:15

标签: xml xslt xpath xslt-1.0

我是XSLT的新手,我遇到了解决这个问题的问题。我有一些不在XML文档中的值,所以我需要创建它们,如下所示:

   <xsl:for-each select="msxsl:node-set($obsData)/Round">
    <xsl:with-param name="Save1">
       <xsl:variable name="xx">
        <xsl:element name="lasuma">
         <xsl:value-of select="(some calculation)"/>
        </xsl:element>
       </xsl:variable>  
       <xsl:value-of select="msxsl:node-set($xx)/lasuma"/> 
    </xsl:with-param>
   </xsl:for-each>

所以现在我拥有了我需要的值,我将它们保存到变量中。现在我需要总结它,但函数SUM似乎工作的唯一方法是当你有节点时,我不能对变量中的值求和。我尝试过这个,但它没有对我在该路径中指定的值求和:

... “之和(msxsl:节点集($ XX)/ lasuma)”/&GT;

有没有办法对变量中的值求和?我可能会遵循一个简单的例子,我将不胜感激。感谢。

2 个答案:

答案 0 :(得分:2)

如果你想对任何变量求和,你必须说变量是一个数字。

所以在XSLT中你可以使用数字(值)+数字(otherValue)

答案 1 :(得分:0)

试试这个。只需确保您的计算创建有效数字。如果没有,你将得到NaN,&#34;而不是数字&#34;,从你的总和中返回。

<xsl:variable name="xx">
  <xsl:for-each select="msxsl:node-set($obsData)/Round">
    <xsl:element name="lasuma">
     <xsl:value-of select="(some calculation)"/>
    </xsl:element>
  </xsl:for-each>
</xsl:variable>

<xsl:value-of select="sum(msxsl:node-set($xx)/lasuma)"/>