<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。 两个导入的样式表都提供 add
和 mul
运算的模板。 只调用 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/>
指令能让您以不同方式重新激活那些被重写的模板规则。