English | Français | Deutsch | Magyar | >> 中文 << | Polski ZVON > Tutorials > XSLT Tutorial
>> 页 29 << | 上一条 | 下一条 | 目录 | 元素索引

XSLT stylesheet 1 演示了 xsl:number 的默认行为。根据位置为各个章节编号。每一级的章节都有独立的序号。 XSLT stylesheet 2 把 level 属性设置为 multiple 得到了更自然的编号。

XSLT stylesheet 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>1</TD>
     <TD>Subchapter 1</TD>
  </TR>
  <TR>
     <TD>2</TD>
     <TD>Subchapter 2</TD>
  </TR>
  <TR>
     <TD>3</TD>
     <TD>Third Chapter
</TD>
  </TR>
  <TR>
     <TD>1</TD>
     <TD>Subchapter A</TD>
  </TR>
  <TR>
     <TD>2</TD>
     <TD>Subchapter B
</TD>
  </TR>
  <TR>
     <TD>1</TD>
     <TD>sub a</TD>
  </TR>
  <TR>
     <TD>2</TD>
     <TD>sub b</TD>
  </TR>
  <TR>
     <TD>3</TD>
     <TD>Subchapter C</TD>
  </TR>
</TABLE>

用HTML察看
Number text
1 First Chapter
2 Second Chapter
1 Subchapter 1
2 Subchapter 2
3 Third Chapter
1 Subchapter A
2 Subchapter B
1 sub a
2 sub b
3 Subchapter C
XSLT stylesheet
<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/>
                    </TD>
                    <TD>
                         <xsl:value-of select="./text()"/>
                    </TD>
               </TR>
          </xsl:for-each>
     </TABLE>
</xsl:template>


</xsl:stylesheet>


XSLT 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>1</TD>
     <TD>First Chapter</TD>
  </TR>
  <TR>
     <TD>2</TD>
     <TD>Second Chapter
</TD>
  </TR>
  <TR>
     <TD>2.1</TD>
     <TD>Subchapter 1</TD>
  </TR>
  <TR>
     <TD>2.2</TD>
     <TD>Subchapter 2</TD>
  </TR>
  <TR>
     <TD>3</TD>
     <TD>Third Chapter
</TD>
  </TR>
  <TR>
     <TD>3.1</TD>
     <TD>Subchapter A</TD>
  </TR>
  <TR>
     <TD>3.2</TD>
     <TD>Subchapter B
</TD>
  </TR>
  <TR>
     <TD>3.2.1</TD>
     <TD>sub a</TD>
  </TR>
  <TR>
     <TD>3.2.2</TD>
     <TD>sub b</TD>
  </TR>
  <TR>
     <TD>3.3</TD>
     <TD>Subchapter C</TD>
  </TR>
</TABLE>

用HTML察看
Number text
1 First Chapter
2 Second Chapter
2.1 Subchapter 1
2.2 Subchapter 2
3 Third Chapter
3.1 Subchapter A
3.2 Subchapter B
3.2.1 sub a
3.2.2 sub b
3.3 Subchapter C
XSLT stylesheet
<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"/>
                    </TD>
                    <TD>
                         <xsl:value-of select="./text()"/>
                    </TD>
               </TR>
          </xsl:for-each>
     </TABLE>
</xsl:template>


</xsl:stylesheet>