Главная -> XML&... -> XSLT в примерах 
>> Страница 43 << | Назад | Вперед | Содержание | Указатель

В преобразовании 1 строки являются аргументами функции boolean(). Строка является "истиной" тогда и только тогда, когда ее длина ненулевая. В преобразовании 2 текст конвертируется в числовой тип, а затем передается в качестве аргументов функции boolean(). Преобразование 3 показывает разницу между тем, когда "0" является числом, и когда — строкой. В преобразовании 4 в качестве аргумента функции boolean() используется подмножество узлов.

Преобразование 1

Исходный XML
<source>

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

</source>

Результат
<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>
     <TD>false</TD>
  </TR>
  <TR>
     <TD>false </TD>
     <TD>true</TD>
  </TR>
</TABLE>

Представление HTML
text boolean
124 true
AB234 true
-16 true
0 true
false
false true
Преобразование XSLT
<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> </xsl:text>
                    </TD>
                    <TD>
                         <xsl:value-of select="boolean(text())"/>
                    </TD>
               </TR>
          </xsl:for-each>
     </TABLE>
</xsl:template>


</xsl:stylesheet>



Преобразование 2

Исходный XML
<source>

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

</source>

Результат
<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>
     <TD>NaN </TD>
     <TD>false</TD>
  </TR>
  <TR>
     <TD>false </TD>
     <TD>NaN </TD>
     <TD>false</TD>
  </TR>
</TABLE>

Представление HTML
text number boolean
124 124 true
AB234 NaN false
-16 -16 true
0 0 false
NaN false
false NaN false
Преобразование XSLT
<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> </xsl:text>
                    </TD>
                    <TD>
                         <xsl:value-of select="number(text())"/>
                         <xsl:text> </xsl:text>
                    </TD>
                    <TD>
                         <xsl:value-of select="boolean(number(text()))"/>
                    </TD>
               </TR>
          </xsl:for-each>
     </TABLE>
</xsl:template>


</xsl:stylesheet>



Преобразование 3

Исходный XML
<source>

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

</source>

Результат
<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

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

Преобразование XSLT
<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>



Преобразование 4

Исходный XML
<source>

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

</source>

Результат
<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
node-set boolean
/ true
//text true
//number false
//text[23] false
Преобразование XSLT
<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>

Raleigh.ru Copyright © 2002