如何在xsl中使用变量?

时间:2012-04-22 22:07:41

标签: xml xslt

我创建了如下的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"/>

我收到以下错误:

  

无法解析对变量或参数'markup_03'的引用。   变量或参数可能未定义,也可能不在   范围

1 个答案:

答案 0 :(得分: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"/>