2017-04-04 39 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