如何在xsl:include元素中使用XSLT处理中的表达式

时间:2010-05-04 09:21:05

标签: xslt

我需要包含一个存在于2个变体中的XSLT,具体取决于param值。 但是,似乎无法在xsl:include元素的href属性中编写表达式。我的上一次试验看起来像这样:

  

< xsl:param name =“ml-fmt”select =“mono”/>

     

...
  < xsl:include href =“{$ ml-fmt} /format.xsl”/>

使用的XSLT引擎是Saxon 9.2.0.6

有人知道如何做一些接近的事情吗?

2 个答案:

答案 0 :(得分:1)

你不能

如果您知道要包含的所有可能的xslt样式表模块,则可以使用xsl:use-when属性以便有选择地仅包含其中一些。但是,xsl:use-when有其自身的局限性。引用the XSLT 2.0 Spec

XSLT名称空间中的任何元素都可能有一个use-when属性,其值是一个可以静态计算的XPath表达式”。

实现动态包含的方法,但它需要一些非XSLT初始化:

调用转换的代码(想想C#或Java或者你的编程语言)可以编辑加载的(作为XML)XSLT样式表的DOM,并可以设置href属性的值{所需的任何<xsl:import>元素。

答案 1 :(得分:1)

正如Dimitre所说,你不能这样做,但你可以从头开始生成XSLT文件,或者通过在准备转换的代码中插入节点来稍微修改现有的XSLT文件。