Saxon和setBaseOutputURI导致"URI具有权限组件"错误

Jub*_*kie 4 java unix uri saxon

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

Failed to create output file file:/output1.html:   Permission denied
Run Code Online (Sandbox Code Playgroud)

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

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

String filePathUri = "file://foo/biz/html_out/";
xsltTransformer.setBaseOutputURI(filePathUri);
Run Code Online (Sandbox Code Playgroud)

错误现在读取

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)
Run Code Online (Sandbox Code Playgroud)

我的问题是:

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

  2. 我写错了URI吗?

  3. 考虑到代码在Windows中正常工作,还有其他我应该尝试的吗?

Jub*_*kie 10

找到答案了!

我不得不使用"file:/// foo/biz/html_out"作为URI.额外的斜杠使字符串的其余部分成为文本路径.

  • 三个斜线是正确的.我认为,单一的斜线也会起作用.不幸的是,"文件"方案中没有真正的URI标准; 甚至很难找到每个特定操作系统的规则,更不用说跨操作系统工作的规则了. (4认同)