Windows 上的 xsltproc:I/O 错误:如果参数是绝对路径,则参数无效

问题描述 投票:0回答:3

我按照 本指南 在 Windows 上使用 xsltproc

当我使用相对路径运行

xsltproc
时,即:

xsltproc -o "..\output.html" "c:\templates\out.xsl" "c:\data\input.xml"

一切都好。 但是当我使用绝对路径运行它时,它失败了,例如:

xsltproc -o "c:\output.html" "c:\templates\out.xsl" "c:\data\input.xml"
I/O error : Invalid argument
I/O error : Invalid argument

尝试使用正斜杠和反斜杠作为路径分隔符,结果相同(问题仅针对

-o
参数)

xsltproc
期望如何编码 Windows 绝对路径

windows xslt mingw mingw32 msys
3个回答
0
投票

对我来说,这是输出文件路径的问题;即使它被双引号它仍然给出了错误。一旦我删除了包含空格的文件夹,它就起作用了。奇怪的是,输入的

%I
文件位于同一个包含空间的文件夹中,我不需要修改该文件夹。


0
投票

xsltproc 似乎不知道驱动器号(“

C:\path\to\output\output.html
”)。空格和反斜杠没有问题。如果我从“输出”(“
\path\to\output\output.html
”)中删除驱动器号,一切正常。

这个“解决方案”的问题是输入和输出必须共享驱动器号。

延斯


0
投票

在 Windows 和 Linux 环境中都使用过 xsltproc。 Windows xsltproc 进程将某些路径视为统一资源标识符 (URI) 类型。在命令行上处理直接 xsl 和 xml 输入文件的路径是 Windows 标准,但输出和内部路径必须采用 URI 格式。不知道为什么 Windows 版本需要这个而 Linux 版本不需要,可能是编译时的问题。例如: Linux: 命令行 XSL 文件路径:“/library/parser.xsl 的路径” 命令行 XML 文件路径:“/path to input/input.xml” 命令行--输出文件路径:“/输出路径/output.html” 内部“document()”文件路径:“/path to input/input2.xml” 视窗: 命令行 XSL 文件路径:“C:\库路径\parser.xsl” 命令行 XML 文件路径:“C:\path to input\input.xml” 命令行--输出文件路径:“C:/path%20to%20output/output.html” 内部“document()”文件路径:“C:/path%20to%20input/input2.xml”

© www.soinside.com 2019 - 2024. All rights reserved.