我希望我生成的输出文件包含指向相对于样式表的路径的文件路径。样式表的位置可以更改,我不想为样式表使用参数。我的解决方案是获取完整的样式表 URI:
<xsl:variable name="stylesheetURI" select="document-uri(document(''))" />
现在我只需要从$stylesheetURI
. 这启发了我编写 PHP 函数basename和dirname的 XSLT 2.0 克隆:
<xsl:function name="de:basename">
<xsl:param name="file"></xsl:param>
<xsl:sequence select="tokenize($file, '/')[last()]" />
</xsl:function>
<xsl:function name="de:dirname">
<xsl:param name="file"></xsl:param>
<xsl:sequence
select="string-join(tokenize($file, '/')[position() != last()], '/')" />
</xsl:function>
现在我可以在我的模板中做这样的事情:
<img src="{concat(de:dirname($stylesheetURI),'/img/myimage,png')}" />
我的问题是:是否有更好/更快的方法来使用本机 XSLT 2.0 完成此任务?