【问题标题】:Saxon and setBaseOutputURI resulting in "URI has an authority component" errorSaxon 和 setBaseOutputURI 导致“URI 具有权限组件”错误
【发布时间】:2013-07-16 11:39:12
【问题描述】:

我正在使用 saxon 从 1 个 xml 文件创建 5 个 html 文件。每当我运行代码窗口时,它都会顺利运行并创建所有必要的文件。但是,当我在 unix 中运行代码时,却导致了这个错误:

Failed to create output file file:/output1.html:   Permission denied

在 stackoverflow 中搜索,我了解到它正在尝试写入根目录,这让我尝试了 setBaseOutputURI()。

我正在尝试让 saxon 将 html 文件输出到 /foo/biz/html_out,所以我写了这段代码:

String filePathUri = "file://foo/biz/html_out/";
xsltTransformer.setBaseOutputURI(filePathUri);

错误现在显示

net.sf.saxon.s9api.SaxonApiException: Cannot write to URI file://foo/output1.html (URI has an authority component)
    at net.sf.saxon.s9api.XsltTransformer.transform(XsltTransformer.java:454)

我的问题是:

  1. 我是否得出了必须使用 setBaseOutputURI 的正确结论?

  2. 我是不是写错了 URI?

  3. 考虑到代码在 Windows 中运行良好,我还应该尝试其他方法吗?

【问题讨论】:

    标签: java unix uri saxon


    【解决方案1】:

    找到答案了!

    我必须使用“file:///foo/biz/html_out”作为 URI。额外的斜线使字符串的其余部分成为路径。

    【讨论】:

    • 三个斜线是正确的。我认为单斜线也可以。不幸的是,“文件”方案中的 URI 没有真正的标准。甚至很难找到每个特定操作系统的规则,更不用说跨操作系统工作的规则了。
    猜你喜欢
    • 2015-08-22
    • 2022-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    • 2016-08-26
    • 1970-01-01
    • 2015-08-17
    相关资源
    最近更新 更多