如何有条件地导入xslt中的样式表?

Sen*_*hil 5 xslt xslt-2.0

检查一些条件后有没有办法导入样式表?

比如,如果变量$ a ="1"的值则导入1.xsl或者导入2.xsl.

Dim*_*hev 15

大家好,有没有办法在检查一些条件后导入样式表?

比如,如果变量$ a ="1"的值则导入1.xsl或者导入2.xsl.

不,该<xsl:import>指令只是编译时.

在XSLT 2.0中,可以将该use-when属性用于有限的条件编译.

例如:

<xsl:import href="module-A.xsl" 
     use-when="system-property('xsl:vendor')='vendor-A'"/>
Run Code Online (Sandbox Code Playgroud)

use-when属性的限制是在评估属性时没有动态上下文 - 特别是这意味着没有定义范围内变量.

非XSLT解决方案是在调用转换之前动态更改声明的href属性<xsl:import>:

  1. 将xsl样式表解析为XML文件

  2. 评估确定应导入哪个样式表的条件.

  3. 将声明的href属性值设置为<xsl:import>动态确定的要导入的样式表的URI.

  4. 使用刚修改的内存中xsl样式表调用转换.