This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Variable: true or false



Tom Gilbert wrote:

> I do the transform on this XSL and get "true". I would have expected
> "false". Thought the boolean of an empty object would always be false.
>
> Using Xerces 1.4 and Xalan 1.1
>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
> version="1.0">
>    <xsl:variable name="selectUser"/>
>    <xsl:template match="/">
>       <xsl:choose>
>          <xsl:when test="$selectUser">
>             true
>          </xsl:when>
>          <xsl:otherwise>
>             false
>          </xsl:otherwise>
>       </xsl:choose>
>    </xsl:template>
> </xsl:stylesheet>

You are creating a result tree fragment, which always has a conceptual root
node.  Thus, the boolean value of a result tree fragment is always true.
It know it seems strange, but there you have it!

If you want to create a variable that contains a node-set, you have to use
the select attribute.  For example:

   <xsl:variable name=selectUser" select="/.."/>

would return an empty node-set.

For the gory details, you can see section 11.1 of the XSLT recommendation.

Dave


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]