我需要包含一个存在于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
有人知道如何做一些接近的事情吗?
答案 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文件。