<xsl:apply-imports> 的示例 1

此示例演示如何使用 <xsl:apply-imports> 来更有效地重复使用代码。 示例使用四个主要文件:

  • XML 源文件 ops.xml。 此数据文件定义三种运算:add (+)、sub (-) 和 mul (*)。

  • 主要 XSLT 样式表 ops.xsl。 此文件包含运算的模板规则,包括两个 <xsl:import> 元素。 导入的样式表对给定的数据源执行算术运算和字符串运算。

  • 导入的样式表 arith.xsl。 此 XSLT 文件对每个 <op> 元素执行算术运算。

  • 另一个导入的样式表 str.xsl。 此 XSLT 文件执行自定义字符串运算。 此处的 add (+) 作为字符串串联对待;例如 1+2 成为 12。 类似地,mul (*) 作为反向串联对待;1*2 成为 21。 注意,sub (-) 是未定义的字符串运算。

XML 文件 (ops.xml)

主要 XSLT 文件 (ops.xsl)

导入的 XSLT 文件 (arith.xsl)

导入的 XSLT 文件 (str.xsl)

输出

您应获得下面的输出:

Some binary operations

1+2 = 12 (from str.xsl)

1-2 = -1 (from arith.xsl)

1*2 = 21 (from str.xsl)

备注

最后一个导入的样式表的导入优先级最高。 在此示例中,str.xsl 是最后一个导入的,因此,导入优先级高于 arith.xsl。 两个导入的样式表都提供 addmul 运算的模板。 只调用 str.xsl 中的模板。 但是,使用 arith.xsl 中定义的 sub 运算,因为 str.xsl 中没有定义 sub 运算。 假设我们颠倒主 XSLT 文件中 <xsl:import> 元素的顺序,就像这样:

<xsl:import href="str.xsl"/>

<xsl:import href="arith.xsl"/>

在这种情况下,输出将类似于以下内容:

Some binary operations

1+2 = 3 (from arith.xsl)

1-2 = -1 (from arith.xsl)

1*2 = 2 (from arith.xsl)

此外,如果 <xsl:apply-imports/> 指令从主 XSLT 文件 (ops.xsl) 的 <op> 的重写模板规则中消失,则会有如下输出:

Some binary operations

1+2 =

1-2 =

1*2 =

即,导入样式表中的模板规则重写导入的样式表中相关的模板规则。 <xsl:apply-imports/> 指令能让您以不同方式重新激活那些被重写的模板规则。