XSL, get current working directory

限于喜欢 提交于 2020-01-03 15:33:11

问题


I'm looking for a concrete example of an XSL stylesheet storing the current working directory into a variable.

I need this because in my situation, I need to import certain library stylesheets using a relative path. Knowing the path my processor is choosing as the current directory would be sufficient.

EDIT

Nothing vendor specific please.


回答1:


In XSLT 2.0 one can use the standard XPath 2.0 function resolve-uri().

Do note, that the relative URIs of the included/imported stylesheet modules are relative to the base URI of the including/importing stylesheet module -- not from the "working directory"!

Here is part of the description of this function from the W3 F&O specification:

8.1 fn:resolve-uri

fn:resolve-uri($relative as xs:string?) as xs:anyURI?

fn:resolve-uri($relative as xs:string?, $base as xs:string) as xs:anyURI?

Summary: The purpose of this function is to enable a relative URI to be resolved against an absolute URI.

The first form of this function resolves $relative against the value of the base-uri property from the static context. If the base-uri property is not initialized in the static context an error is raised [err:FONS0005].

Here is a very simple example:

<xsl:stylesheet version="2.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text"/>

 <xsl:template match="/">
  <xsl:sequence select=
   "resolve-uri('resolve-uri-example2.xsl')"/>
 </xsl:template>
</xsl:stylesheet>

when this transformation is applied against any xml document (not used), the result is:

file:///c:/tests/resolve-uri-example2.xsl

This is the correct result, because our main stylesheet module is saved as:

c:/tests/resolve-uri-example2.xsl



回答2:


In the XSL world there's no guarantee that an absolute current working directory exists, or even that the concept has meaning. Any answer to this question would necessarily be vendor-specific.



来源:https://stackoverflow.com/questions/3910389/xsl-get-current-working-directory

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!