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

Преобразования 1 и 2 являются примерами форматирования многоуровневых числовых конструкций.

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

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

<chapter>First Chapter</chapter>
<chapter>Second Chapter
     <chapter>Subchapter 1</chapter>
     <chapter>Subchapter 2</chapter>
</chapter>
<chapter>Third Chapter
     <chapter>Subchapter A</chapter>
     <chapter>Subchapter B
          <chapter>sub a</chapter>
          <chapter>sub b</chapter>
     </chapter>
     <chapter>Subchapter C</chapter>
</chapter>

</source>

Результат
<TABLE BORDER="1">
  <TR>
     <TH>Number</TH>
     <TH>text</TH>
  </TR>
  <TR>
     <TD>1 </TD>
     <TD>First Chapter</TD>
  </TR>
  <TR>
     <TD>2 </TD>
     <TD>Second Chapter
</TD>
  </TR>
  <TR>
     <TD>2.A </TD>
     <TD>Subchapter 1</TD>
  </TR>
  <TR>
     <TD>2.B </TD>
     <TD>Subchapter 2</TD>
  </TR>
  <TR>
     <TD>3 </TD>
     <TD>Third Chapter
</TD>
  </TR>
  <TR>
     <TD>3.A </TD>
     <TD>Subchapter A</TD>
  </TR>
  <TR>
     <TD>3.B </TD>
     <TD>Subchapter B
</TD>
  </TR>
  <TR>
     <TD>3.B.a </TD>
     <TD>sub a</TD>
  </TR>
  <TR>
     <TD>3.B.b </TD>
     <TD>sub b</TD>
  </TR>
  <TR>
     <TD>3.C </TD>
     <TD>Subchapter C</TD>
  </TR>
</TABLE>

Представление HTML
Number text
1 First Chapter
2 Second Chapter
2.A Subchapter 1
2.B Subchapter 2
3 Third Chapter
3.A Subchapter A
3.B Subchapter B
3.B.a sub a
3.B.b sub b
3.C Subchapter C
Преобразование XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <TABLE BORDER="1">
          <TR>
               <TH>Number</TH>
               <TH>text</TH>
          </TR>
          <xsl:for-each select="//chapter">
               <TR>
                    <TD>
                         <xsl:number level="multiple" format="1.A.a "/>
                    </TD>
                    <TD>
                         <xsl:value-of select="./text()"/>
                    </TD>
               </TR>
          </xsl:for-each>
     </TABLE>
</xsl:template>


</xsl:stylesheet>



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

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

<chapter>First Chapter</chapter>
<chapter>Second Chapter
     <chapter>Subchapter 1</chapter>
     <chapter>Subchapter 2</chapter>
</chapter>
<chapter>Third Chapter
     <chapter>Subchapter A</chapter>
     <chapter>Subchapter B
          <chapter>sub a</chapter>
          <chapter>sub b</chapter>
     </chapter>
     <chapter>Subchapter C</chapter>
</chapter>

</source>

Результат
<TABLE BORDER="1">
  <TR>
     <TH>Number</TH>
     <TH>text</TH>
  </TR>
  <TR>
     <TD>I:</TD>
     <TD>First Chapter</TD>
  </TR>
  <TR>
     <TD>II:</TD>
     <TD>Second Chapter
</TD>
  </TR>
  <TR>
     <TD>II-1:</TD>
     <TD>Subchapter 1</TD>
  </TR>
  <TR>
     <TD>II-2:</TD>
     <TD>Subchapter 2</TD>
  </TR>
  <TR>
     <TD>III:</TD>
     <TD>Third Chapter
</TD>
  </TR>
  <TR>
     <TD>III-1:</TD>
     <TD>Subchapter A</TD>
  </TR>
  <TR>
     <TD>III-2:</TD>
     <TD>Subchapter B
</TD>
  </TR>
  <TR>
     <TD>III-2-a:</TD>
     <TD>sub a</TD>
  </TR>
  <TR>
     <TD>III-2-b:</TD>
     <TD>sub b</TD>
  </TR>
  <TR>
     <TD>III-3:</TD>
     <TD>Subchapter C</TD>
  </TR>
</TABLE>

Представление HTML
Number text
I: First Chapter
II: Second Chapter
II-1: Subchapter 1
II-2: Subchapter 2
III: Third Chapter
III-1: Subchapter A
III-2: Subchapter B
III-2-a: sub a
III-2-b: sub b
III-3: Subchapter C
Преобразование XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <TABLE BORDER="1">
          <TR>
               <TH>Number</TH>
               <TH>text</TH>
          </TR>
          <xsl:for-each select="//chapter">
               <TR>
                    <TD>
                         <xsl:number level="multiple" format="I-1-a:"/>
                    </TD>
                    <TD>
                         <xsl:value-of select="./text()"/>
                    </TD>
               </TR>
          </xsl:for-each>
     </TABLE>
</xsl:template>


</xsl:stylesheet>

Raleigh.ru Copyright © 2002