xsl литерал с <xsl: if>

Я должен написать простое условие в 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 ответа

<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> названный result, По определению имя любого упоминается <xsl:variable> должен иметь префикс $ персонаж.

  2. <xsl:value-of select="QQQ"/> выбирает все дочерние элементы текущего узла с именем QQQ и выводит строковое значение первого из них. Вы хотите только строку 'QQQ' быть произведенным. По определению, чтобы отличить строку от имени, строка должна быть заключена в кавычки или апострофы.

Если вы хотите установить цвет фона элемента, установите для "name" атрибута xsl: значение "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>
Другие вопросы по тегам