|
Subject: [xsl] boolean variables From: "Robin Harvey" <harvey.robin@xxxxxxxxx> Date: Wed, 9 Aug 2006 16:13:40 +0100 |
I'm having a hard time dealing with boolean values in variables, and i'm not sure if the approach i'm taking is possible/sensible. As far as i understand, the xpath boolean() function should return false for the empty string, 0, boolean false and the empty node-set; and true for all other values. I want to be able to store values in a variable, and then test the variable in a xsl:if, but it always evaluates to true. Here is a small test file, which shows the different methods i've tried. None of them work!
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<xsl:variable name="true">
<xsl:call-template name="get-true"/>
</xsl:variable> <xsl:variable name="false">
<xsl:call-template name="get-false"/>
</xsl:variable> Test1:
<xsl:call-template name="boolean-check">
<xsl:with-param name="var" select="$true"/>
</xsl:call-template> <xsl:call-template name="boolean-check">
<xsl:with-param name="var" select="$false"/>
</xsl:call-template> Test2:
<xsl:call-template name="boolean-check2">
<xsl:with-param name="var" select="$true"/>
</xsl:call-template> <xsl:call-template name="boolean-check2">
<xsl:with-param name="var" select="$false"/>
</xsl:call-template> Test3:
<xsl:call-template name="boolean-check3">
<xsl:with-param name="var" select="$true"/>
</xsl:call-template> <xsl:call-template name="boolean-check3">
<xsl:with-param name="var" select="$false"/>
</xsl:call-template> <xsl:template name="boolean-check">
<xsl:param name="var"/> <xsl:choose>
<xsl:when test="$var">
Variable is true
</xsl:when>
<xsl:otherwise>
Variable is false
</xsl:otherwise>
</xsl:choose>
</xsl:template> <xsl:template name="boolean-check2">
<xsl:param name="var"/> <xsl:choose>
<xsl:when test="boolean($var)">
Variable is true
</xsl:when>
<xsl:otherwise>
Variable is false
</xsl:otherwise>
</xsl:choose> <xsl:template name="boolean-check3">
<xsl:param name="var"/> <xsl:choose>
<xsl:when test="$var = true()">
Variable is true
</xsl:when>
<xsl:otherwise>
Variable is false
</xsl:otherwise>
</xsl:choose>
<xsl:template name="get-true"> <xsl:value-of select="true()"/> </xsl:template>
<xsl:template name="get-false">
<xsl:value-of select="false()"/>
</xsl:template>
I'm getting the feeling that i've seriously missed the point somewhere along the line, could anyone explain why this code fails, and the proper way to deal with booleans in variables?
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Passing xml nodes to a fu, David Carlisle | Thread | Re: [xsl] boolean variables, David Carlisle |
| [xsl] Passing xml nodes to a functi, Bansal, Rabinder | Date | Re: [xsl] Passing xml nodes to a fu, Florent Georges |
| Month |