XSL,获取当前工作目录

问题描述:

我正在寻找将当前工作目录存储到变量中的XSL样式表的具体示例。XSL,获取当前工作目录

我需要这个,因为在我的情况下,我需要使用相对路径导入某些库样式表。了解我的处理器正在选择的路径作为当前目录就足够了。

编辑

没有供应商特定的请。

在XSLT 2.0中,可以使用标准的XPath 2.0函数resolve-uri()

待办事项,所包括的/导入的样式表模块的相对URI是相对于基地包括/导入样式表模块的URI - 而不是从“工作目录”!

下面是该函数的从W3˚F&输出规格说明书的一部分:

8.1 FN:解决-URI

FN:解决-URI(相对$如 的xs:字符串?)作为xs:anyURI?

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

摘要:此功能 的目的是使相对URI成为 针对绝对URI进行解析。

该函数的第一种形式 解决了相对于 静态上下文中base-uri属性的值 的$ relative问题。如果在 静态上下文中没有初始化base-uri 属性,则会引发错误 [err:FONS0005]。

这里是一个非常简单的例子

<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> 

当该转化针对任何XML文档(未使用)时,结果是施加:

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

这是正确的结果,因为我们的主要样式表模块保存为:

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

感谢dimitre,请您提供一个使用它来确定当前路径的具体示例。我看不到如何从文档 – Mike 2010-10-11 23:21:29

+1

@Mike:是的,我用一个例子更新了我的答案。 – 2010-10-12 01:35:51

+0

谢谢dimitre,我一如既往地感谢你对我的xslt问题的全面帮助。 – Mike 2010-10-12 17:36:53

在XSL世界中,不能保证绝对当前的工作目录存在,或者即使这个概念有意义。对这个问题的任何答案都必须是供应商特定的。

+0

@ Jim-Garrison:其实你的回答一般不是真的。 – 2010-10-11 23:17:56

+0

@Dimitre:你能说一点吗? – 2010-10-12 05:09:53

+0

@ Jim-Garrison:OP实际要求的是xslt样式表模块的* base-uri *,而不是工作目录。 – 2010-10-12 12:32:03