Subject: RE: 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
|