繁体   English   中英

XSLT将数字添加到变量

[英]XSLT add number to variable

我有XSLT,其中我有变量(DPH5和DPH22)。 在开始时,变量为空。 之后,我添加此变量的总和为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'.

您有任何想法如何将值添加到变量中? 谢谢

如注释中所述,在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) " />  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM