我被一個似乎很愚蠢的問題困住了,但是我找不到解決方案......用XLST,我需要總結一個由模板計算出來的值列表。所以我將這些值存儲在一個樹形結構中(根元素「Numbers」中包含的「Number」元素列表)。但無論我試圖用這個自制的清單,它會返回任何東西,0或錯誤...XSLT:樹片段的總和將總是返回0!
有人知道我在做什麼錯了嗎?
<!-- create the tree fragment -->
<xsl:variable name="_subTotals">
<Numbers>
<xsl:for-each select="List">
<xsl:variable name="_Size">
<xsl:call-template name="GetSize">
<xsl:with-param name="_value" select="@value"/>
</xsl:call-template>
</xsl:variable>
<Number>
<xsl:value-of select="$_Size"/>
</Number>
</xsl:for-each>
</Numbers>
</xsl:variable>
<!-- this returns an error: expression must result into a node-set -->
<xsl:message terminate="no">
<xsl:value-of select="sum($_subTotals/Numbers/Number)"/>
</xsl:message>
<!-- transform the tree fragment into a node-set
<xsl:variable name="_Total" select="msxsl:node-set($_subTotals)"/>
<!-- returns nothing -->
<xsl:for-each select="$_Total/Numbers/Number">
<xsl:message terminate="no">
<xsl:value-of select="@value"/>
</xsl:message>
</xsl:for-each>
<!-- returns 0 -->
<xsl:value-of select="sum($_Total/Numbers/Number)"/>
對不起,不是非常具體,但我試圖簡化這個問題。實際上,我使用List元素的一個屬性作爲ID來獲取輸入文檔中其他屬性值,這些屬性值是模板GetSize的參數(有3個)。 – Julien 2009-02-17 15:16:14