2012-04-22 7 views
1

я создать XSL, как показано ниже:Как использовать переменную в xsl?

<xsl:choose> 
    <xsl:when test="range_from &lt; 0 and range_to > 5"> 
     <xsl:variable name="markup_03" select="((7 div $total_price_02) * 100)"/> 
    </xsl:when> 
    <xsl:when test="range_from &lt; 6 and range_to > 10"> 
     <xsl:variable name="markup_03" select="((5 div $total_price_02) * 100)"/> 
    </xsl:when> 
    <xsl:otherwise> 
     <xsl:variable name="markup_03" select="0"/> 
    </xsl:otherwise> 
</xsl:choose> 
<xsl:variable name="total_price_03" select="(($total_price_02 * $markup_03) div 100) + $total_price_02"/> 

Я получаю следующее сообщение об ошибке:

A reference to variable or parameter 'markup_03' cannot be resolved. The variable or parameter may not be defined, or it may not be in scope

ответ

2

Вы проповедуете markup_03 внутри из <xsl:choose> условий, так что это не в объеме, когда вы пытаясь ссылаться на него за пределами <xsl:choose>.

Вместо объявить <xsl:variable name="markup_03"> и гнездо <xsl:choose> внутри переменной, чтобы определить, какое значение присвоить ему:

<xsl:variable name="markup_03"> 
     <xsl:choose> 
      <xsl:when test="range_from &lt; 0 and range_to > 5"> 
       <xsl:value-of select="((7 div $total_price_02) * 100)"/> 
      </xsl:when> 
      <xsl:when test="range_from &lt; 6 and range_to > 10"> 
       <xsl:value-of select="((5 div $total_price_02) * 100)"/> 
      </xsl:when> 
      <xsl:otherwise> 
       <xsl:value-of select="0"/> 
      </xsl:otherwise> 
     </xsl:choose> 
    </xsl:variable> 
    <xsl:variable name="total_price_03" select="(($total_price_02 * $markup_03) div 100) + $total_price_02"/> 
Смежные вопросы