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