[英]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.