我的目标是通过 XProc 访问位于 FTP 服务器上的 XML 文档。这个特定的 FTP 服务器需要身份验证。
我在 Java 8 上使用最新版本的 Calabash (1.1.6-96)。
当不需要身份验证时,以下 XProc 可以完美运行:
<p:declare-step xmlns:p="http://www.w3.org/ns/xproc"
xmlns:c="http://www.w3.org/ns/xproc-step" version="1.0">
<p:input port="source">
<p:document href="ftp://ftp.hq.nasa.gov/index.html"/>
</p:input>
<p:output port="result"/>
<p:identity/>
</p:declare-step>
但是,如果您尝试访问需要身份验证的 FTP 服务器:
<p:declare-step xmlns:p="http://www.w3.org/ns/xproc"
xmlns:c="http://www.w3.org/ns/xproc-step" version="1.0">
<p:input port="source">
<p:document href="ftp://user:passwordd@ftp.example.org/example.xml"/>
</p:input>
<p:output port="result"/>
<p:identity/>
</p:declare-step>
Calabash 将返回错误:
错误:如果 ap:document 元素引用的资源不存在、无法访问或不是格式良好的 XML 文档,则为动态错误。
表示它无法访问该文档。
奇怪的是,我安装了旧版本的 Oxygen (16.0),它带有旧版本的 Calabash (1.0.*),而第二个使用身份验证的 XProc 运行良好。因此,Calabash 内部要么发生了一些变化,要么与旧的 Oxygen/Calabash 配置相关的其他一些东西使它工作。
我也对访问此文件的替代方法持开放态度。我已经尝试换掉了<p:document>
,<p:http-request>
但这并没有成功。