参数化路径以从其他xslt导入xslt

时间:2018-05-09 15:02:40

标签: xslt include

我正在尝试参数化路径以将xslt文件包含到其他文件中,我一直在尝试使用描述的方式here

<xsl:param name="basedir" />
<xsl:include href="{$basedir}/team-menu.xsl" />

并调用xslt: xsltproc --stringparam basedir style example.xslt example.xml

但没办法。我没有做到这一点。似乎xsl:output元素是相关的,因为我能让它“工作”的唯一方法就是:

<xsl:include href="the/path/to/file/team-menu.xsl" />
<xsl:output method="xml" indent="yes"/>
<xsl:param name="basedir" />

我的意思是......将 param 放在输出之后,包含之前。大问题:我无法使用变量basedir。

有什么办法吗?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

在XSLT 3.0中,如果参数声明为static,则可以执行此操作,这意味着必须在编译时提供值。您还需要在属性前加上“_”:

<xsl:param name="basedir" static="yes"/>
<xsl:include _href="{$basedir}/team-menu.xsl" />

它不适用于普通变量的原因应该是相当明显的:变量值直到运行时才知道,并且在找到构成样式表的所有源代码之后才能开始执行。< / p>

根据处理器的不同,早期版本的XSLT可以通过使用用户提供的方式从API级别重定向xs:include / xs:import URI(在Java上)的URIResolver。