考虑:
<xsl:result-document
href="{string-join(
($scripts-offset, $metadata-directory, $redirect-file),
'/'
)}"
format="text">
其中string-join的净效果是“../ resources / foo.txt”。
这应该是什么相对的?样式表?输入文件?
修改
谢雪儿回答:在提出这个问题之后,我有一阵能量和咖啡,并仔细阅读了xs:result-document的规范,并且我还阅读了Saxon-B的实现。该规范要求href相对于“主输出文档”。根据您调用Saxon的方式,它可能会从您将其作为目标提供的File对象中正确设置...或者可能需要您进行额外调用来设置它。因此,所有问题都得到了支持,并为所有麻烦感到抱歉。答案 0 :(得分:3)
来自http://www.w3.org/TR/xslt20/#creating-result-trees
href
属性是可选的。该 默认值是零长度 串。有效价值 属性必须是URI引用, 这可能是绝对的或相对的。 可能有实现定义 对绝对形式的限制 可以使用的URI,但是 不需要实现 执行任何限制。任何合法的 必须接受相对URI。注意 零长度字符串是合法的 相对URI。文档节点的基URI 最终结果树的根是 基于有效价值
href
属性。如果有效值 是一个相对URI,然后它被解析 相对于基本输出URI。如果 该实现提供了一个API 访问最终结果树,然后它 必须允许最终结果树 通过此基本URI识别。
来自http://www.w3.org/TR/xslt20/#dt-base-output-uri
本文件未指明任何内容 应用程序编程接口或 用于启动a的其他接口 转型。但是,本节 描述的信息 转换时提供 启动。除非另有说明 表示,信息是 必需的。
- 基本输出URI。 [定义:基本输出URI 是一个URI 在解析分配给final的相对URI时用作基URI 结果树。如果转换生成多个最终结果树,则通常会为每个结果树分配相对于此基数的URI URI。建立基本输出URI的方式是实现定义的。
但更重要的是,请考虑一下这个说明:
注意:强>
最终结果树的基URI 不一定是一样的 其序列化的URI 磁盘上的表示,如果有的话。对于 例如,服务器(或浏览器客户端) 可能只存储最终结果树 内存或内部磁盘缓存。 只要处理器满足 请求这些URI,它是 他们实际上在哪里无关紧要 写在磁盘上,如果有的话。
答案 1 :(得分:1)
在Saxon和AltovaXML中,它相对于来自XSLT处理器的路径被调用。例如:
cd somePath
java -classpath lib\saxon9he.jar net.sf.saxon.Transform -o:output.xml xml\input.xml xsl\stylesheet.xsl
"C:\Program Files (x86)\Altova\AltovaXML2011\AltovaXML.exe" -xslt2 xsl\stylesheet.xsl -in xml\input.xml -out output.xml
在你的情况下,它将是:
somePath\..\resources\foo.txt