2017-04-04 70 views
-1

我是XSLT中的新成员,并且遇到了解决此问题的问题。我有一些价值不属于XML文档中,所以我需要创建它们,就像这样:如何在xslt中总结变量

<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)”/>

有一种将变量中的值相加的方法?一个简单的例子,我可以遵循,将不胜感激。谢谢。

+1

请提供一个可重现的例子 - 请参阅:[mcve]。 –

回答

1

如果你想总结任何变量,你必须说这个变量是一个数字。

所以在XSLT你可以使用数(值)+编号(otherValue)

+0

如何将整个变量设置为一个数字?而不是一个一个。数据来自循环,所以我不能一个一个做。谢谢你的回答。 – Franco

+0

你不需要真正的。因为你只需要改变值,当你想要sum.the值实际上存储在字符串和数字,但只有你不得不提到它,当你想进行数学运算。我希望我可以解释它。 – Sojimanatsu

+0

number($ levelPrevious)+1”>是我如何在循环中使用它的基本示例。好运气 – Sojimanatsu

0

试试这个。只要确保你的计算创建了一个有效的数字。如果没有,你会得到NaN,“不是一个数字”,从你的总和中返回。

<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)"/> 
+0

谢谢,你的帮助非常有用。 – Franco