Subject: Re: behavior of boolean() when applied to an empty variable
From: "Christopher R. Maden" <crism@xxxxxxxxx>
Date: Mon, 11 Jul 2011 23:24:15 -0400
|
On 07/11/2011 10:31 PM, Wolfhart Totschnig wrote:
> The boolean() function behaves in a way I don't understand when given
> an empty variable as argument. I was hoping one of you could explain
> it to me.
>
> Take the following two variables:
>
> <xsl:variable name="empty1"></xsl:variable>
>
> <xsl:variable name="empty2">
> <xsl:if test="false()">
> <xsl:value-of select=" 'some non-empty string' "/>
> </xsl:if>
> </xsl:variable>
>
> The value of both variables is the same, i.e. "", an empty string.
Nope.
I thought this was simpler than it actually is, but then I re-read it...
then, finally, I found <URL: http://www.w3.org/TR/xslt#variable-values >:
> If the variable-binding element does not have a select attribute and
> has non-empty content (i.e. the variable-binding element has one or
> more child nodes), then the content of the variable-binding element
> specifies the value.
Even though $empty2 evaluates to a no-op, it has non-empty content, and
so the result is an empty result tree. That casts to a Boolean as true.
> 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.
So $empty1 does in fact equate to the empty string, which casts as false.
~Chris
--
Chris Maden, text nerd <URL: http://crism.maden.org/ >
bMankind are more disposed to suffer, while evils are sufferable
than to right themselves by abolishing the forms to which they
are accustomed.b b Thomas Jefferson
|