我试图将路径参数化,以便将xslt文件包含到其他路径中,我一直在尝试使用描述here的方式。
<xsl:param name="basedir" />
<xsl:include href="{$basedir}/team-menu.xsl" />
并调用xslt:xsltproc --stringparam basedir style example.xslt example.xml
但不可能。我不是亚伯来工作的。如果xsl: way元素是相关的,因为只有这样我才能使它“工作”:
<xsl:include href="the/path/to/file/team-menu.xsl" />
<xsl:output method="xml" indent="yes"/>
<xsl:param name="basedir" />
我是说..。将param放在输出后,并将包含放在前面。大问题:我不能使用变量basedir。
有办法吗??
提前谢谢你。
发布于 2018-05-09 09:57:06
在XSLT3.0中,只要参数声明为静态,就可以这样做,这意味着必须在编译时提供这些值。还需要在属性前面加上"_":
<xsl:param name="basedir" static="yes"/>
<xsl:include _href="{$basedir}/team-menu.xsl" />
它不适用于普通变量的原因应该是相当明显的:变量值直到运行时才知道,并且直到找到构成样式表的所有源代码之后才能开始执行。
根据处理器的不同,您可以使用早期版本的XSLT,从API级别重定向xs:include
/xs:import
URI,例如(在URIResolver上)使用用户提供的URIResolver。
https://stackoverflow.com/questions/50256543
复制相似问题