带有<xsl:if> </xsl:if>的xsl文字

时间:2010-04-20 14:40:30

标签: xslt literals value-of

我必须在XSL中写一个简单的条件:

IF column=0 AND IF result = .35 
    set background color to green and write $result
ELSE IF result = 0.10 
    set background color to white and write the word "QQQ"

我试过这个,但它不起作用:

<xsl:param name="result"  />
    <xsl:param name="column" />    

    <xsl:if test="$result  = 0.35 and $column = 0">
        <xsl:attribute name='background-color'>#669933</xsl:attribute>
        <xsl:value-of select="result"/>      
    </xsl:if>

    <xsl:if test="$result = 0.10">
        <xsl:value-of select="QQQ"/>
    </xsl:if>

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

<xsl:if test="$result  = 0.35 and $column = 0">    
    <xsl:attribute name='background-color'>#669933</xsl:attribute>

    <xsl:value-of select="result"/>          
</xsl:if>    

<xsl:if test="$result = 0.10">    
    <xsl:value-of select="QQQ"/>    
</xsl:if>

您在上面的代码中确实提交了两个错误。

以下是更正后的版本:

 <xsl:if test="$result  = 0.35 and $column = 0">
   <xsl:attribute name='background-color'>#669933</xsl:attribute>
   <xsl:value-of select="$result"/>
 </xsl:if>

 <xsl:if test="$result = 0.10">
   <xsl:value-of select="'QQQ'"/>
 </xsl:if>

错误

  1. result表示名为result的元素,它们是上下文节点的子元素。您希望名为<xsl:variable>的{​​{1}}。根据定义,任何引用的result的名称都应以<xsl:variable>字符作为前缀。

  2. $选择名为<xsl:value-of select="QQQ"/>的当前节点的所有子节点,并输出第一个节点的字符串值。您只需要生成字符串QQQ。根据定义,要区分字符串和名称,字符串必须用引号或撇号括起来。

答案 1 :(得分:0)

如果要设置元素的背景颜色,请将xsl:属性的“name”设置为“style”,将值设置为“background-color:#669933”。例如:

<div>
    <xsl:if test="$result  = 0.35 and $column = 0">
        <xsl:attribute name='style'>background-color:#669933</xsl:attribute>
        <xsl:value-of select="$result"/>
    </xsl:if>
    <xsl:if test="$result = 0.10">
        <xsl:attribute name='style'>background-color:#ffffff</xsl:attribute>
        <xsl:value-of select="'QQQ'"/>
    </xsl:if>
</div>