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
在XSL世界中,不能保证绝对当前的工作目录存在,或者即使这个概念有意义。对这个问题的任何答案都必须是供应商特定的。
@ Jim-Garrison:其实你的回答一般不是真的。 – 2010-10-11 23:17:56
@Dimitre:你能说一点吗? – 2010-10-12 05:09:53
@ Jim-Garrison:OP实际要求的是xslt样式表模块的* base-uri *,而不是工作目录。 – 2010-10-12 12:32:03
感谢dimitre,请您提供一个使用它来确定当前路径的具体示例。我看不到如何从文档 – Mike 2010-10-11 23:21:29
@Mike:是的,我用一个例子更新了我的答案。 – 2010-10-12 01:35:51
谢谢dimitre,我一如既往地感谢你对我的xslt问题的全面帮助。 – Mike 2010-10-12 17:36:53