【问题标题】:How to sum variables in xslt如何对xslt中的变量求和
【发布时间】:2017-04-04 13:34:14
【问题描述】:

我是 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)"/>

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

【问题讨论】:

标签: xml xslt xpath xslt-1.0


【解决方案1】:

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

所以在 XSLT 中你可以使用 number(value)+number(otherValue)

【讨论】:

  • 我怎样才能将整个变量设置为一个数字?而不是一个一个。数据来自循环,所以我不能一一做。谢谢你的回答。
  • 其实你不需要。因为你只需要在你想求和的时候改变这个值。这个值实际上是存储在字符串和数字中的,但是只有你想要的时候才需要提到它做数学运算。我希望我能解释一下。
  • 是如何我在循环中使用它。祝你好运
【解决方案2】:

试试这个。只需确保您的计算创建一个有效数字即可。如果不是,您将从总和中返回 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)"/> 

【讨论】:

  • 谢谢,您的帮助非常有用。
猜你喜欢
  • 2013-05-05
  • 1970-01-01
  • 2021-08-15
  • 2021-02-11
相关资源
最近更新 更多