<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"。
元素信息
出现次数 |
1 |
父元素 |
(无父元素) |
子元素 |
xsl:attribute-set、xsl:import、xsl:include、xsl:output、xsl:param、xsl:template、xsl:variable、msxsl: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>