<xsl:import> 元素

导入另一个 XSLT 文件。

<xsl:import
  href = "uri-reference" />

特性

  • href
    必选。标识要导入的 XSLT 文件的统一资源标识符 (URI) 引用。

元素信息

出现次数

无限制

父元素

xsl:stylesheetxsl:transform

子元素

(无子元素)

注释

一个 XSLT 文件可以使用 <xsl:import> 元素导入另一个 XSLT 文件。导入 XSLT 文件与包含 XSLT 文件相同,只是导入文件中的定义和模板规则优先于导入的 XSLT 文件中的定义和模板规则。<xsl:import> 元素具有 href 属性,其属性值是标识要导入的样式表的 URI 引用。相对 URI 以相对于 <xsl:import> 元素的基 URI 的方式解析。

<xsl:import> 元素只允许作为顶级元素出现。<xsl:import> 元素子级必须出现在 <xsl:stylesheet> 元素的所有其他元素子级之前,包括任何 <xsl:include> 元素子级。当 <xsl:include> 用来包括样式表时,在所包括的文档中的任何 <xsl:import> 元素都将在所包括的文档中上移,以便紧跟所包括的文档中现有的 <xsl:import> 元素。

在处理包含 <xsl:import> 元素的样式表过程中遇到的 <xsl:stylesheet> 元素被视为构成导入树。在导入树中,每个 <xsl:stylesheet> 元素针对它包含的每个 <xsl:import> 元素都有一个导入子级。任何 <xsl:include> 元素都在构造导入树之前解析。如果导入树中的一个 <xsl:stylesheet> 元素的受访问顺序在导入树的顺序后遍历中位于另一个 <xsl:stylesheet> 元素之前(即这样的导入树遍历:一个 <xsl:stylesheet> 元素的受访问顺序在其导入子级之后),则该元素定义为比导入树中的另外那个 <xsl:stylesheet> 元素具有更低的导入优先级。每个定义和模板规则都有导入优先级,此导入优先级是由包含此规则的 <xsl:stylesheet> 元素确定的。

例如,假定下列条件为真。

  • XSLT 文件 A 按顺序导入 XSLT 文件 B 和 C。

  • XSLT 文件 B 导入 XSLT 文件 D。

  • XSLT 文件 C 导入 XSLT 文件 E。

导入优先级的顺序(从优先级最低的开始)为 D、B、E、C、A。

备注

因为 <xsl:import> 元素必须出现在任何定义或模板规则之前,所以,在遇到 <xsl:import> 元素的位置处理导入的 XSLT 文件时将遇到按导入优先级升序排列的定义和模板规则。

通常,导入优先级较高的定义或模板规则优先于导入优先级较低的定义或模板规则。对每种定义和模板规则会详细定义导入优先级。

如果 XSLT 文件直接或间接导入自身,将出错。除此之外,如果具有特定 URI 的 XSLT 文件在多个位置导入,不会特殊对待。导入树对每个导入位置提供一个独立的 <xsl:stylesheet> 元素。

备注

如果使用 <xsl:apply-imports>,则行为可能与仅在具有最高导入优先级的位置导入了 XSLT 文件时的行为不同。

XSLT 文件 (importer.xsl)

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

<xsl:import href="article.xsl"/>
<xsl:import href="bigfont.xsl"/>

<xsl:attribute-set name="note-style">
   <xsl:attribute name="font-style">italic</xsl:attribute>
</xsl:attribute-set>

</xsl:stylesheet>

另请参见以下主题:

请参阅

参考

<xsl:include> 元素

<xsl:apply-imports> 元素