RE: [xsl] not()'ing a false variable, xalan 2.4.D1

Subject: RE: [xsl] not()'ing a false variable, xalan 2.4.D1
From: "Michael Kay" <michael.h.kay@xxxxxxxxxxxx>
Date: Fri, 8 Nov 2002 09:09:17 -0000
> The reason I am trying to do this is because I have created a 
> template that tests for a certain condition and returns true 
> or false, for
> example:
> 
>   <xsl:template name="boolean-function-template">
>     <xsl:param name="node-set"/>
>     <xsl:choose>
>       <xsl:when test="$node-set/x">
>         <xsl:value-of select="false()"/>
>       </xsl:when>
>       <xsl:when test="$node-set/y">
>         <xsl:value-of select="true()"/>
>       </xsl:when>
>       <xsl:otherwise>
>         <xsl:value-of select="false()"/>
>       </xsl:otherwise>
>      </xsl:choose>
>    </xsl:template>
> 

Good: the question is now an intelligent one!

Named templates can only return tree structures, they can never return
boolean values. (For that, you need xsl:function which is introduced in
XSLT 2.0, or something like the EXSLT func:function extension).

I would write the template to return a [tree containing a] string
result, e.g. "true" and "false" or "y" and "n", and then test the string
value that's returned, using e.g. 

<xsl:if test="string($var)='n'">

Michael Kay
Software AG
home: Michael.H.Kay@xxxxxxxxxxxx
work: Michael.Kay@xxxxxxxxxxxxxx 


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread