2011-06-28 30 views
11

我不能得到这个工作......我只是想更改全局定义的变量的值:如何改变的<xsl:变量>值

    <xsl:variable name="isBusiness"></xsl:variable> 
        <xsl:choose> 
         <xsl:when test="yes this is a business"> 
           <xsl:variable name="isBusiness">true</xsl:variable>       
         </xsl:when> 
         <xsl:otherwise> 
          <xsl:variable name="isBusiness">false</xsl:variable> 
         </xsl:otherwise> 
        </xsl:choose>  

显然,代码是无效的,因为是已经定义,但我将如何更改值?

+1

投票关闭为[精确复制(http://stackoverflow.com/问题/ 6436272 /如何到更新的变量值的功能于XSLT/6438323#6438323)。 –

回答

15

检查此链接了:

http://www.dpawson.co.uk/xsl/sect2/N8090.html#d10874e187

基本上,你的代码应该是这样的:

<xsl:variable name="x"> 
    <xsl:choose> 
    <xsl:when test="a">z</xsl:when> 
    <xsl:when test="b">zz</xsl:when> 
    <xsl:otherwise>zzz</xsl:otherwise> 
    </xsl:choose> 
</xsl:variable> 
+0

是的,除了示例将值true和false绑定到x,所以它执行'x:= if(c)then true else false',可以简化为'x:= c'。 –

+0

@MichaelKay:对于复活旧帖子感到抱歉,但我只是再次碰到这个帖子,看到了你的评论。我想指出的是,测试标准是针对文本“是的,这是一项业务”,而不是布尔评估。 xslt表示这不是一个简单的二元评估,而是2个或多个*项的选择,其中只有一个对于评估是重要的。 eval的结果表示xslt上的真/假响应。干杯! – code4life