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

Переменная может в качестве своего значения держать фрагмент результирующего дерева. Операции, допустимые на фрагменте результирующего дерева, являются подмножеством допустимых на множестве узлов. Операции допустимы на фрагменте результирующего дерева только, если эти операции будут допустимыми над строкой (операция над строкой может сначала вызывать преобразование строки в число или булевую переменную). В частности, на фрагменте результирующего дерева нельзя использовать операторы "/", "//" и "[]". Когда допустимая операция выполняется на фрагменте результирующего дерева, она выполняется точно так, как она должна была быть выполнена на эквивалентном множестве узлов. Сравните преобразования 1 и 2.

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

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

<TABLE border="1">
     <TR>
          <TD>AAA</TD>
          <TD>BBB</TD>
     </TR>
     <TR>
          <TD>aaa</TD>
          <TD>bbb</TD>
     </TR>
</TABLE>
<TABLE border="1">
     <TR>
          <TD>1111111</TD>
     </TR>
     <TR>
          <TD>22222222</TD>
     </TR>
</TABLE>

</source>

Результат
<TABLE border="1">
     
  <TR>
          
     <TD>1111111</TD>
     
  </TR>
     
  <TR>
           
     <TD>22222222</TD>
     
  </TR>

</TABLE>
<TABLE border="1">
     
  <TR>
          
     <TD>AAA</TD>
           
     <TD>BBB</TD>
     
  </TR>
     
  <TR>
          
     <TD>aaa</TD>
           
     <TD>bbb</TD>
     
  </TR>

</TABLE>
<TABLE border="1">
     
  <TR>
          
     <TD>1111111</TD>
     
  </TR>
     
  <TR>
           
     <TD>22222222</TD>
     
  </TR>

</TABLE>

Представление HTML
1111111
22222222
AAA BBB
aaa bbb
1111111
22222222
Преобразование XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:variable name="A1">
     <xsl:copy-of select="//TABLE[1]"/>
</xsl:variable>
<xsl:variable name="A2">
     <xsl:copy-of select="//TABLE[2]"/>
</xsl:variable>
<xsl:template match="/">
     <xsl:copy-of select="$A2"/>
     <xsl:copy-of select="$A1"/>
     <xsl:copy-of select="$A2"/>
</xsl:template>


</xsl:stylesheet>



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

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

<TABLE border="1">
     <TR>
          <TD>AAA</TD>
          <TD>BBB</TD>
     </TR>
     <TR>
          <TD>aaa</TD>
          <TD>bbb</TD>
     </TR>
</TABLE>
<TABLE border="1">
     <TR>
          <TD>1111111</TD>
     </TR>
     <TR>
          <TD>22222222</TD>
     </TR>
</TABLE>

</source>

Результат
<P>
      
          1111111
     
      
           22222222
      
</P>
<P>
      
          AAA
           BBB
     
      
          aaa
           bbb
      
</P>
<P>
      
          1111111
     
      
           22222222
      
</P>

Представление HTML

1111111 22222222

AAA BBB aaa bbb

1111111 22222222

Преобразование XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:variable name="A1">
     <xsl:copy-of select="//TABLE[1]"/>
</xsl:variable>
<xsl:variable name="A2">
     <xsl:copy-of select="//TABLE[2]"/>
</xsl:variable>
<xsl:template match="/">
     <P>
          <xsl:value-of select="$A2"/>
     </P>
     <P>
          <xsl:value-of select="$A1"/>
     </P>
     <P>
          <xsl:value-of select="$A2"/>
     </P>
</xsl:template>


</xsl:stylesheet>

Raleigh.ru Copyright © 2002