<xsl:stylesheet> 元素

指定 XSLT 文件的文档元素,该文件中包含所有其他 XSLT 元素。

指定 XSLT 文件的文档元素,该文件中包含所有其他 XSLT 元素。 此元素是 <xsl:transform> 元素的同义词。

<xsl:stylesheet
  id = id
  extension-element-prefixes = NCNames
  exclude-result-prefixes = NCNames
  version = number>
</xsl:stylesheet>

特性

  • id
    便于嵌入 XSLT 文件的唯一标识符。

  • extension-element-prefixes
    要作为扩展命名空间使用的命名空间。 该值是通过空白分隔的命名空间前缀列表。 绑定到每个前缀上的命名空间指定为扩展命名空间。 通过在命名空间前缀列表中加入 #default,可以将默认命名空间(通过 xmlns 声明)指定为扩展命名空间。 在样式表中以具有 extension-element-prefixes 的元素为根节点的子树中,将命名空间指定为扩展命名空间有效;以 <xsl:stylesheet> 元素为根节点的子树不包括任何由该 <xsl:stylesheet> 元素的子级导入或加入的样式表。

  • exclude-result-prefixes
    作为已排除命名空间的命名空间统一资源标识符 (URI)。 该值是通过空白分隔的命名空间前缀列表。 绑定到每个前缀上的命名空间指定为排除的命名空间。 通过在命名空间前缀列表中加入 #default,可以将默认命名空间(通过 xmlns 声明)指定为排除的命名空间。 在样式表中以具有 exclude-result-prefixes 的元素为根节点的子树中,将命名空间指定为排除的命名空间有效;以 <xsl:stylesheet> 元素为根节点的子树不包括任何由该 <xsl:stylesheet> 元素的子级导入或加入的样式表。

  • version
    必需。 XSLT 文件所需的 XSLT 版本。 对于此版本的 XSLT,值应设置为 "1.0"。

元素信息

出现次数

父元素

(无父元素)

子元素

xsl:attribute-setxsl:importxsl:includexsl:outputxsl:paramxsl:templatexsl:variablemsxsl:script

备注

每个 XSTL 文件必须将 <xsl:stylesheet> 声明为其文档元素。

样式表可以使用一系列模板规则声明 (<xsl:template>) 规定对数据集的明确转换。 可以使用 <xsl:include> 和/或 <xsl:import> 合并其他样式表;这样可以重新使用现有的已测试模板规则。 样式表还可以支持在整个转换过程中使用全局变量 (<xsl:param>) 和命名的常量 (<xsl:variable>)。 可以使用 <xsl:param> 元素将参数传递到样式表中。 通过使用扩展元素 <msxsl:script>,样式表甚至可以实现自定义函数,尽管通常不鼓励这样做。

下面的示例显示包含多个公共命名空间的 <xsl:stylesheet> 元素。

XSLT 样式表必须至少为 XSL 转换声明命名空间。 在 MSXML 版本 4.0 以及更高版本中,此命名空间必须进行以下声明:

<xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

如果处理其他命名空间中的元素或数据类型,样式表必须还要声明相关的命名空间。 例如,以下 XSLT 样式表声明规定,将使用为 Microsoft 扩展和 XSL 格式化对象 (XSL-FO) 定义的附加 XML 词汇。

<xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:msxsl="urn:schemas-microsoft-com:xslt"
      xmlns:fo="http://www.w3.org/1999/XSL/Format">

示例

该示例显示包含一组模板的完整 XSLT 文件。 根模板 (match="/") 定义总体输出文档的结构,其他模板定义 <name>、<address> 和 <phone> 元素的结构。 该 HTML 输出文件是在命令提示符处使用 msxml.exe 生成的。

XML 文件 (customers.xml)

<?xml version='1.0'?>
<?xml-stylesheet type="text/xsl" href="customers.xsl"?>
<customers>
   <customer>
      <name>John Smith</name>
      <address>123 Elm St.</address>
      <phone>(123) 456-7890</phone>
   </customer>
   <customer>
      <name>Mary Jones</name>
      <address>456 Oak Ave.</address>
      <phone>(156) 789-0123</phone>
   </customer>
</customers>

XSLT 文件 (customers.xsl)

<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <HTML>
    <BODY>
      <TABLE>
        <xsl:for-each select="customers/customer">
          <TR>
            <xsl:apply-templates select="name" />
            <xsl:apply-templates select="address" />
            <xsl:apply-templates select="phone" />
          </TR>
        </xsl:for-each>
      </TABLE>

    </BODY>
  </HTML>
</xsl:template>

<xsl:template match="name">
  <TD STYLE="font-size:14pt font-family:serif">
    <xsl:apply-templates />
  </TD>
</xsl:template>

<xsl:template match="address">
  <TD> <xsl:apply-templates /> </TD>
</xsl:template>

<xsl:template match="phone">
  <TD> <xsl:apply-templates /> </TD>
</xsl:template>

<xsl:template match="text()">
  <xsl:value-of select='.'/>
</xsl:template>

</xsl:stylesheet>

输出

以下是格式化输出:

格式化输出

以下是处理器输出:

<HTML>
<BODY>
<TABLE>
<TR>
<TD STYLE="font-size:14pt font-family:serif">John Smith</TD>
<TD>123 Elm St.</TD>
<TD>(123) 456-7890</TD>
</TR>
<TR>
<TD STYLE="font-size:14pt font-family:serif">Mary Jones</TD>
<TD>456 Oak Ave.</TD>
<TD>(156) 789-0123</TD>
</TR>
</TABLE>

</BODY>
</HTML>

请参见

参考

<xsl:transform> 元素