生成された出力ファイルに、スタイルシートへの相対パスを指すファイル パスを含めたいと思います。スタイルシートの場所は変更される可能性があり、スタイルシートにパラメーターを使用したくありません。これに対する私の解決策は、完全なスタイルシート 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 でこれを達成するためのより良い/より高速な方法はありますか?