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: Boolean true() and false() as strings?


At 08:52 AM 10/06/2000 +0100, Kay Michael wrote:
> > A curious thing (well, to me!)... consider this template rule:
>
>The <xsl:value-of> converts the booleans to strings; and the use of
>xsl:variable with content creates a result tree fragment containing this
>string as a child node. So you are quite right, test="$units_gt_300" would
>always succeed, because it is testing whether the node-set equivalent to the
>RTF contains any nodes: converting an RTF to a boolean always returns true
>(despite what my book says on page 81 [sorry!].
>
>But why don't you just write
><xsl:variable name="units_gt_300" select="units &gt; 300"/>
>That way you get a variable whose type is boolean.

*That* is exactly what the doctor ordered. Thanks, Mike!

I couldn't use a simple select="true()" because the value would be either 
true() or false() depending on conditions in the template rule. So I'd made 
what is possibly a typical procedural programmer's mistake and wrapped up 
the whole thing in an xsl:choose block, a la if-then-else. But Mike's 
solution above is much neater (in all senses of the word)... not to mention 
that it actually works. :)

(And thanks, too, to Wendell and Evan for their characteristically clear 
takes on why this happens.)

==========================================================
John E. Simpson               | "Curiosity killed the cat,
http://www.flixml.org         | but for a while I was a
XML Q&A: http://www.xml.com   | suspect." (Steven Wright) 


 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]