我被一个似乎很愚蠢的问题困住了,但是我找不到解决方案......用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