我有XSLT,其中我有变量(DPH5和DPH22)。在开始时,变量为空。 之后,我添加tu这个变量sum DPH。 这是我的XML的一部分:
<TeloTR>
<TYP_CASTKY>DP</TYP_CASTKY>
<PROCENTO_DANE>21.0</PROCENTO_DANE>
<CASTKA>100.720</CASTKA>
</TeloTR>
<TeloTR>
<TYP_CASTKY>DP</TYP_CASTKY>
<PROCENTO_DANE>15.0</PROCENTO_DANE>
<CASTKA>562.720</CASTKA>
</TeloTR>
<TeloTR>
<TYP_CASTKY>DP</TYP_CASTKY>
<PROCENTO_DANE>15.0</PROCENTO_DANE>
<CASTKA>66375.720</CASTKA>
</TeloTR>
<TeloTR>
<TYP_CASTKY>DP</TYP_CASTKY>
<PROCENTO_DANE>15.0</PROCENTO_DANE>
<CASTKA>845.720</CASTKA>
</TeloTR>
这是我的变数:
<xsl:variable name="DPH5" select="0" />
<xsl:variable name="DPH22" select="0" />
这是我的代码的一部分:
<xsl:for-each select="TeloTR">
<xsl:if test="TYP_CASTKY='DP'">
<xsl:if test="PROCENTO_DANE='15.0'">
<xsl:variable name="DPH5" select="$DPH5 + number(@CASTKA) " />
</xsl:if>
<xsl:if test="PROCENTO_DANE='21.0'">
<xsl:variable name="DPH22" select="$DPH22 + number(@CASTKA) " />
</xsl:if>
</xsl:if>
</xsl:for-each>
但我有这个错误:
Error:XSLTProcessor::transformToXml() [<a href='xsltprocessor.transformtoxml'>
xsltprocessor.transformtoxml</a>]: XSLT-variable: Redefinition of variable 'DPH5'.
您有什么想法我如何为变量添加值?感谢
答案 0 :(得分:1)
如评论中所述,在XSLT中,变量是“不可变的”,一旦设置就无法更改。
但是,您可以使用sum
函数来解决您的特定问题,以对与特定条件匹配的所有节点(或属性)求和。
尝试这两个变量声明
<xsl:variable name="DPH5" select="sum(TeloTR[TYP_CASTKY='DP'][PROCENTO_DANE = 15.0]/CASTKA) " />
<xsl:variable name="DPH22" select="sum(TeloTR[TYP_CASTKY='DP'][PROCENTO_DANE = 22.0]/CASTKA) " />
请注意,CASTKA
是XML中的元素,因此不应使用表示属性的@
前缀。
或者,为避免重复,您可以这样做
<xsl:variable name="TeloTR" select="TeloTR[TYP_CASTKY='DP']" />
<xsl:variable name="DPH5" select="sum($TeloTR[PROCENTO_DANE = 15.0]/CASTKA) " />
<xsl:variable name="DPH22" select="sum($TeloTR[PROCENTO_DANE = 21.0]/CASTKA) " />