XSLT将数字添加到变量

时间:2014-08-20 07:39:51

标签: variables xslt

我有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'.

您有什么想法我如何为变量添加值?感谢

1 个答案:

答案 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) " />