<xsl:choose>
<xsl:when test="something > 0">
<xsl:variable name="myVar" select="true()"/>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="myVar" select="false()"/>
</xsl:otherwise>
</xsl:choose>
Это совершенно неправильно и бесполезно, поскольку переменная $myVar
немедленно выходит из области действия .
Один правильный способ условного присвоения переменной:
<xsl:variable name="myVar">
<xsl:choose>
<xsl:when test="something > 0">1</xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
Однако вам это действительно не нужно - намного проще: :
<xsl:variable name="myVar" select="something > 0"/>
How can I then print out the value of "myVar"?
Использование:
<xsl:value-of select="$myVar"/>
Или, что более важно, как я могу использовать это логическое значение в другом операторе выбора?
Вот простой пример:
<xsl:choose>
<xsl:when test="$myVar">
<!-- Do something -->
</xsl:when>
<xsl:otherwise>
<!-- Do something else -->
</xsl:otherwise>
</xsl:choose>
А вот полный пример :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/*/*">
<xsl:variable name="vNonNegative" select=". >= 0"/>
<xsl:value-of select="name()"/>: <xsl:text/>
<xsl:choose>
<xsl:when test="$vNonNegative">Above zero</xsl:when>
<xsl:otherwise>Below zero</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
, когда это преобразование применяется к следующему документу XML :
<temps>
<Monday>-2</Monday>
<Tuesday>3</Tuesday>
</temps>
желаемый, правильный результат получается :
Monday: Below zero
Tuesday: Above zero