Subject: Re: <xsl:variable> behavior
From: Phil Lanch <phil@xxxxxxxxxxxxxxx>
Date: Thu, 11 Nov 1999 12:19:01 +0000
|
"Clark C. Evans" wrote:
>
> <xsl:template match="/">
> <xsl:variable name="x">
> <xsl:choose>
> <xsl:when test="false()">X</xsl:when>
> </xsl:choose>
> </xsl:variable>
> <xsl:if test="$x">x</xsl:if>
> </xsl:template>
>
> This (unexpectedly) prints "x" using jclark's xt while
The value of the variable "is a result tree fragment equivalent to a
node-set containing just a single root node having as children the
sequence of nodes produced by instantiating the template" [11.2].
I.e. $x contains 1 node (which happens to be empty, because your
template produces no nodes), so it converts to true.
That one is a bit counter-intuitive, I think.
> <xsl:template match="/">
> <xsl:variable name="x"></xsl:variable>
> <xsl:if test="$x">x</xsl:if>
> </xsl:template>
>
> Does not (as expected).
"If the variable-binding element has empty content and does not have a
select attribute, then the value of the variable is an empty string"
[11.2].
And an empty string converts to false.
--
cheers
phil
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|