>> English << | Français | Deutsch | Magyar | 中文 | Polski ZVON > Tutorials > XSLT Tutorial
>> Page 43 << | Prev | Next | Contents | Element Index

In XSLT stylesheet 1 strings are arguments of boolean() function. A string is true if and only if its length is non-zero. In XSLT stylesheet 2 is text transformed into numbers and then subjected to boolean() function. XSLT stylesheet 3 compares "0" as a string and as a number. XSLT stylesheet 4 uses node-sets as arguments for boolean() function.

XSLT stylesheet 1

XML Source
<source>

<text>124</text>
<text>AB234</text>
<text>-16</text>
<text>0</text>
<text/>
<text>false</text>

</source>

Output
<TABLE border="1">
  <TR>
     <TH>text</TH>
     <TH>boolean</TH>
  </TR>
  <TR>
     <TD>124</TD>
     <TD>true</TD>
  </TR>
  <TR>
     <TD>AB234</TD>
     <TD>true</TD>
  </TR>
  <TR>
     <TD>-16</TD>
     <TD>true</TD>
  </TR>
  <TR>
     <TD>0</TD>
     <TD>true</TD>
  </TR>
  <TR>
     <TD/>
     <TD>false</TD>
  </TR>
  <TR>
     <TD>false</TD>
     <TD>true</TD>
  </TR>
</TABLE>

HTML view
text boolean
124 true
AB234 true
-16 true
0 true
false
false true
XSLT stylesheet
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <TABLE border="1">
          <TR>
               <TH>text</TH>
               <TH>boolean</TH>
          </TR>
          <xsl:for-each select="//text">
               <TR>
                    <TD>
                         <xsl:value-of select="."/>
                         <xsl:text/>
                    </TD>
                    <TD>
                         <xsl:value-of select="boolean(text())"/>
                    </TD>
               </TR>
          </xsl:for-each>
     </TABLE>
</xsl:template>


</xsl:stylesheet>


XSLT stylesheet 2

XML Source
<source>

<text>124</text>
<text>AB234</text>
<text>-16</text>
<text>0</text>
<text/>
<text>false</text>

</source>

Output
<TABLE border="1">
  <TR>
     <TH>text</TH>
     <TH>number</TH>
     <TH>boolean</TH>
  </TR>
  <TR>
     <TD>124</TD>
     <TD>124</TD>
     <TD>true</TD>
  </TR>
  <TR>
     <TD>AB234</TD>
     <TD>NaN</TD>
     <TD>false</TD>
  </TR>
  <TR>
     <TD>-16</TD>
     <TD>-16</TD>
     <TD>true</TD>
  </TR>
  <TR>
     <TD>0</TD>
     <TD>0</TD>
     <TD>false</TD>
  </TR>
  <TR>
     <TD/>
     <TD>NaN</TD>
     <TD>false</TD>
  </TR>
  <TR>
     <TD>false</TD>
     <TD>NaN</TD>
     <TD>false</TD>
  </TR>
</TABLE>

HTML view
text number boolean
124 124 true
AB234 NaN false
-16 -16 true
0 0 false
NaN false
false NaN false
XSLT stylesheet
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <TABLE border="1">
          <TR>
               <TH>text</TH>
               <TH>number</TH>
               <TH>boolean</TH>
          </TR>
          <xsl:for-each select="//text">
               <TR>
                    <TD>
                         <xsl:value-of select="."/>
                         <xsl:text/>
                    </TD>
                    <TD>
                         <xsl:value-of select="number(text())"/>
                         <xsl:text/>
                    </TD>
                    <TD>
                         <xsl:value-of select="boolean(number(text()))"/>
                    </TD>
               </TR>
          </xsl:for-each>
     </TABLE>
</xsl:template>


</xsl:stylesheet>


XSLT stylesheet 3

XML Source
<source>

<text>124</text>
<text>AB234</text>
<text>-16</text>
<text>0</text>
<text/>
<text>false</text>

</source>

Output
<P>The boolean value of "0" is <B>true</B> if "0" is a string, but <B>false</B> if "0" is a number.</P>

HTML view

The boolean value of "0" is true if "0" is a string, but false if "0" is a number.

XSLT stylesheet
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <P>
          <xsl:text>The boolean value of "0" is </xsl:text>
          <B>
               <xsl:value-of select="boolean(//text[text()='0'])"/>
          </B>
          <xsl:text> if "0" is a string, but </xsl:text>
          <B>
               <xsl:value-of select="boolean(number((//text[text()='0'])))"/>
          </B>
          <xsl:text> if "0" is a number.</xsl:text>
     </P>
</xsl:template>


</xsl:stylesheet>


XSLT stylesheet 4

XML Source
<source>

<text>124</text>
<text>AB234</text>
<text>-16</text>
<text>0</text>
<text/>
<text>false</text>

</source>

Output
<TABLE border="1">
  <TR>
     <TH>node-set</TH>
     <TH>boolean</TH>
  </TR>
  <TR>
     <TD>/</TD>
     <TD>true</TD>
  </TR>
  <TR>
     <TD>//text</TD>
     <TD>true</TD>
  </TR>
  <TR>
     <TD>//number</TD>
     <TD>false</TD>
  </TR>
  <TR>
     <TD>//text[23]</TD>
     <TD>false</TD>
  </TR>
</TABLE>

HTML view
node-set boolean
/ true
//text true
//number false
//text[23] false
XSLT stylesheet
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <TABLE border="1">
          <TR>
               <TH>node-set</TH>
               <TH>boolean</TH>
          </TR>
          <TR>
               <TD>
                    <xsl:text>/</xsl:text>
               </TD>
               <TD>
                    <xsl:value-of select="boolean(/)"/>
               </TD>
          </TR>
          <TR>
               <TD>
                    <xsl:text>//text</xsl:text>
               </TD>
               <TD>
                    <xsl:value-of select="boolean(//text)"/>
               </TD>
          </TR>
          <TR>
               <TD>
                    <xsl:text>//number</xsl:text>
               </TD>
               <TD>
                    <xsl:value-of select="boolean(//number)"/>
               </TD>
          </TR>
          <TR>
               <TD>
                    <xsl:text>//text[23]</xsl:text>
               </TD>
               <TD>
                    <xsl:value-of select="boolean(//text[23])"/>
               </TD>
          </TR>
     </TABLE>
</xsl:template>


</xsl:stylesheet>