简体   繁体   English

XSLT将数字添加到变量

[英]XSLT add number to variable

i have XSLT, where i have variables (DPH5 and DPH22). 我有XSLT,其中我有变量(DPH5和DPH22)。 On start the variables are null. 在开始时,变量为空。 After that i add tu this variables sum od DPH. 之后,我添加此变量的总和为DPH。 This is part of my XML: 这是我的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>

This is my variables: 这是我的变量:

<xsl:variable name="DPH5" select="0" />
<xsl:variable name="DPH22" select="0" />

This is part of my code: 这是我的代码的一部分:

<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>

But i have this error: 但是我有这个错误:

Error:XSLTProcessor::transformToXml() [<a href='xsltprocessor.transformtoxml'>
xsltprocessor.transformtoxml</a>]: XSLT-variable: Redefinition of variable 'DPH5'.

Have you any ideas how could i add values to variables? 您有任何想法如何将值添加到变量中? Thanks 谢谢

As mentioned in comments, In XSLT, variable are 'immutable' and cannot be changed once set. 如注释中所述,在XSLT中,变量是“不可变的”,一旦设置便无法更改。

However you can solve your particular problem by using the sum function, to sum all the nodes (or attributes) that match a certain condition. 但是,您可以通过使用sum函数来解决与特定条件匹配的所有节点(或属性),以解决您的特定问题。

Try these two variable declarations 试试这两个变量声明

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

Note that CASTKA is an element in your XML, so you shouldn't use the @ prefix which denotes an attribute. 请注意, CASTKA是XML中的元素,因此您不应使用表示属性的@前缀。

Alternatively, to avoid a little repetition, you can do this 另外,为避免重复,您可以这样做

  <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