Xml 如何在xslt中求和变量

Xml 如何在xslt中求和变量,xml,xslt,xpath,xslt-1.0,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"> &

我是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唯一有效的方法是当你有节点时,我不能求和变量中的值。我尝试了这一点,但它没有对我在该路径中指定的值求和:

…“sum(msxsl:node set($xx)/lasuma)”/>


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

如果要对任何变量求和,必须说明该变量是一个数字


因此,在XSLT中,您可以使用number(value)+number(otherValue)

如果要对任何变量求和,您必须说该变量是一个数字


因此,在XSLT中可以使用number(value)+number(otherValue)

试试这个。只需确保您的计算创建了一个有效的数字。如果没有,您将得到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)"/> 

试试这个。只需确保您的计算创建了一个有效的数字。如果没有,您将得到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)"/> 


请提供一个可复制的示例-请参阅:。请提供一个可复制的示例-请参阅:。如何将整个变量设置为一个数字?而不是一个接一个。数据来自循环,所以我不能一个接一个地做。谢谢你的回答。你实际上不需要这样做。因为你只需要在求和时更改值。值实际上存储在字符串和数字中,但当你想进行数学运算时,你只需提及它。我希望我能解释一下。这是我如何在循环中使用它的基本示例。很好,我如何将整个变量设置为一个数字?而不是一个接一个。数据来自循环,所以我不能一个接一个地做。谢谢你的回答。你实际上不需要这样做。因为你只需要在求和时更改值。值实际上存储在字符串和数字中,但当你想进行数学运算时,你只需提及它。我希望我能解释一下。这是我如何在循环中使用它的基本示例。祝你好运谢谢,你的帮助非常有用。谢谢,你的帮助非常有用。