| Subject: RE: Boolean true() and false() as strings? From: Kay Michael <Michael.Kay@xxxxxxx> Date: Fri, 6 Oct 2000 08:52:02 +0100 | 
> 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 > 300"/>
That way you get a variable whose type is boolean.
Mike Kay
> 
> <xsl:template match="sales">
>    <h2>Regions Selling More than 300 Units:</h2>
>    <xsl:for-each select="region">
>      <xsl:variable name="units_gt_300">
>        <xsl:choose>
>          <xsl:when test="number(units) > 300">
>            <xsl:value-of select="true()"/>
>          </xsl:when>
>          <xsl:otherwise>
>            <xsl:value-of select="false()"/>
>          </xsl:otherwise>
>        </xsl:choose>
>      </xsl:variable>
>      <xsl:if test="$units_gt_300='true'">
>        <h3><xsl:value-of select="concat(@name, ' (', units, ' 
> units)')"/></h3>
>      </xsl:if>
>    </xsl:for-each>
> </xsl:template>
> 
> Note the assignment of Boolean true() or false() to the 
> variable, and the 
> <xsl:if> test. Why can't the latter be simply:
> 
>    <xsl:if test="$units_gt_300">
> 
> i.e., why the need to test vs. the string value "true"? 
> 
 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
| Current Thread | 
|---|
| 
 | 
| <- Previous | Index | Next -> | 
|---|---|---|
| RE: Boolean true() and false() as s, Evan Lenz | Thread | RE: Boolean true() and false() as s, John E. Simpson | 
| RE: Problem using templates, Kay Michael | Date | RE: automatic generation of figure , Kay Michael | 
| Month |