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

样式表( stylesheet )可以包含多个同名的变量。 XSLT stylesheet 1 展示了局部变量对同名全局变量的覆盖。 XSLT stylesheet 2 给出了一种错误的方法,局部变量被绑定到了 xsl:when 元素。因此其他模板只能看到全局变量的值。

XSLT stylesheet 1

XML源码
<source>

<chapter>Chapter A</chapter>
<chapter>Chapter B</chapter>
<chapter>Chapter C</chapter>
<chapter>Chapter D</chapter>

</source>

输出
<TABLE>
  <TR>
     <TD>First chapter : Chapter A</TD>
  </TR>
  <TR>
     <TD>Chapter : Chapter B</TD>
  </TR>
  <TR>
     <TD>Chapter : Chapter C</TD>
  </TR>
  <TR>
     <TD>Last chapter : Chapter D</TD>
  </TR>
</TABLE>

用HTML察看
First chapter : Chapter A
Chapter : Chapter B
Chapter : Chapter C
Last chapter : Chapter D
XSLT stylesheet
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:variable name="text">Chapter</xsl:variable>
<xsl:template match="/">
     <TABLE>
          <xsl:for-each select="//chapter">
               <TR>
                    <TD>
                         <xsl:variable name="text">
                              <xsl:choose>
                                   <xsl:when test="position() = 1">First chapter</xsl:when>
                                   <xsl:when test="position()=last()">Last chapter</xsl:when>
                                   <xsl:otherwise>
                                        <xsl:value-of select="$text"/>
                                   </xsl:otherwise>
                              </xsl:choose>
                         </xsl:variable>
                         <xsl:value-of select="$text"/>
                         <xsl:text> : </xsl:text>
                         <xsl:value-of select="."/>
                    </TD>
               </TR>
          </xsl:for-each>
     </TABLE>
</xsl:template>


</xsl:stylesheet>


XSLT stylesheet 2

XML源码
<source>

<chapter>Chapter A</chapter>
<chapter>Chapter B</chapter>
<chapter>Chapter C</chapter>
<chapter>Chapter D</chapter>

</source>

输出
<TABLE>
  <TR>
     <TD>Chapter : Chapter A</TD>
  </TR>
  <TR>
     <TD>Chapter : Chapter B</TD>
  </TR>
  <TR>
     <TD>Chapter : Chapter C</TD>
  </TR>
  <TR>
     <TD>Chapter : Chapter D</TD>
  </TR>
</TABLE>

用HTML察看
Chapter : Chapter A
Chapter : Chapter B
Chapter : Chapter C
Chapter : Chapter D
XSLT stylesheet
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:variable name="text">Chapter</xsl:variable>
<xsl:template match="/">
     <TABLE>
          <xsl:for-each select="//chapter">
               <TR>
                    <TD>
                         <xsl:choose>
                              <xsl:when test="position() = 1">
                                   <xsl:variable name="text">First chapter</xsl:variable>
                              </xsl:when>
                              <xsl:when test="position()=last()">
                                   <xsl:variable name="text">Last chapter</xsl:variable>
                              </xsl:when>
                              <xsl:otherwise>
                                   <xsl:variable name="text">
                                        <xsl:value-of select="$text"/>
                                   </xsl:variable>
                              </xsl:otherwise>
                         </xsl:choose>
                         <xsl:value-of select="$text"/>
                         <xsl:text> : </xsl:text>
                         <xsl:value-of select="."/>
                    </TD>
               </TR>
          </xsl:for-each>
     </TABLE>
</xsl:template>


</xsl:stylesheet>