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