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

Функция number явным образом конвертирует свой аргумент в число. Преобразование 1 является примером конвертации строк, а преобразование 2 — примером конвертации булевских переменных true и false.

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

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

<text>124</text>
<text>1 2 4</text>
<text>-16</text>
<text>- 16</text>
<text>125.258</text>
<text>125.</text>
<text>ASDF</text>
<text>A123</text>
<text>true</text>
<text>false()</text>

</source>

Результат
<TABLE border="1">
  <TR>
     <TH>text</TH>
     <TH>number</TH>
  </TR>
  <TR>
     <TD>124</TD>
     <TD>124</TD>
  </TR>
  <TR>
     <TD>1 2 4</TD>
     <TD>NaN</TD>
  </TR>
  <TR>
     <TD>-16</TD>
     <TD>-16</TD>
  </TR>
  <TR>
     <TD>- 16</TD>
     <TD>NaN</TD>
  </TR>
  <TR>
     <TD>125.258</TD>
     <TD>125.258</TD>
  </TR>
  <TR>
     <TD>125.</TD>
     <TD>125</TD>
  </TR>
  <TR>
     <TD>ASDF</TD>
     <TD>NaN</TD>
  </TR>
  <TR>
     <TD>A123</TD>
     <TD>NaN</TD>
  </TR>
  <TR>
     <TD>true</TD>
     <TD>NaN</TD>
  </TR>
  <TR>
     <TD>false()</TD>
     <TD>NaN</TD>
  </TR>
</TABLE>

Представление HTML
text number
124 124
1 2 4 NaN
-16 -16
- 16 NaN
125.258 125.258
125. 125
ASDF NaN
A123 NaN
true NaN
false() NaN
Преобразование 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>
          </TR>
          <xsl:for-each select="//text">
               <TR>
                    <TD>
                         <xsl:value-of select="."/>
                    </TD>
                    <TD>
                         <xsl:value-of select="number()"/>
                    </TD>
               </TR>
          </xsl:for-each>
     </TABLE>
</xsl:template>


</xsl:stylesheet>



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

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

<text>124</text>
<text>1 2 4</text>
<text>-16</text>
<text>- 16</text>
<text>125.258</text>
<text>125.</text>
<text>ASDF</text>
<text>A123</text>
<text>true</text>
<text>false()</text>

</source>

Результат
<TABLE border="1">
  <TR>
     <TH>text</TH>
     <TH>number</TH>
  </TR>
  <TR>
     <TD>true</TD>
     <TD>NaN</TD>
  </TR>
  <TR>
     <TD>false()</TD>
     <TD>NaN</TD>
  </TR>
</TABLE>
<P>but:</P>
<TABLE border="1">
  <TR>
     <TH>function</TH>
     <TH>number</TH>
  </TR>
  <TR>
     <TD>true()</TD>
     <TD>1</TD>
  </TR>
  <TR>
     <TD>false()</TD>
     <TD>0</TD>
  </TR>
  <TR>
     <TD>5&gt;7</TD>
     <TD>0</TD>
  </TR>
  <TR>
     <TD>5&lt;7</TD>
     <TD>1</TD>
  </TR>
</TABLE>

Представление HTML
text number
true NaN
false() NaN

but:

function number
true() 1
false() 0
5>7 0
5<7 1
Преобразование 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>
          </TR>
          <xsl:for-each select="//text[text() = 'true' or text() = 'false()']">
               <TR>
                    <TD>
                         <xsl:value-of select="."/>
                    </TD>
                    <TD>
                         <xsl:value-of select="number()"/>
                    </TD>
               </TR>
          </xsl:for-each>
     </TABLE>
     <P>
          <xsl:text>but:</xsl:text>
     </P>
     <TABLE border="1">
          <TR>
               <TH>function</TH>
               <TH>number</TH>
          </TR>
          <TR>
               <TD>true()</TD>
               <TD>
                    <xsl:value-of select="number(true())"/>
               </TD>
          </TR>
          <TR>
               <TD>false()</TD>
               <TD>
                    <xsl:value-of select="number(false())"/>
               </TD>
          </TR>
          <TR>
               <TD>5>7</TD>
               <TD>
                    <xsl:value-of select="number(5 > 7)"/>
               </TD>
          </TR>
          <TR>
               <TD>5<7</TD>
               <TD>
                    <xsl:value-of select="number(5<7)"/>
               </TD>
          </TR>
     </TABLE>
</xsl:template>


</xsl:stylesheet>

Raleigh.ru Copyright © 2002