我的尝试基于这个答案,但我没有运气。我在 Windows 上从 AutoHotkey 运行它,但我也无法让它从命令行运行。
使用此行设置默认文件夹。所有相关文件(Saxon 除外)都在该文件夹中。
SetWorkingDir E:\dwgs\Json\ORR Stations Table1410
此运行行返回“无效 URI”错误:
runwait %comspec% /k java -jar "C:\Program Files\My Small Programs\Saxon\saxon-he-12.5.jar" -u jar:"file:./ORR Stations Table1410.zip\!/ORR Stations Table1410.xml" -xsl:"ORR Table 1410 Compare with NR.xsl" -o:"ORR Table 1410 Compare with NR OUT.xml"
正确的语法是什么?
如果我使用
-s:"ORR Stations Table1410.xml"
运行未压缩的 .xml 文件,它就可以工作。
以下内容在 Mac 上对我有用(一行):
java net.sf.saxon.Transform -xsl:test.xsl -u
-s:jar:file:///Users/mike/Downloads/Archive.zip!/africa.xml -t
我手边没有 Windows 机器可以试用;不同的 shell 有不同的特殊字符转义规则。
现在在名称中添加空格,我发现以下方法有效:
-u -s:"jar:file:///Users/mike/Downloads/Archive%202/Archive.zip!/south%20america.xml"
它也可以在 URI 周围不带引号的情况下工作。
如果
Downloads
是当前目录,我也可以这样做
-u -s:jar:file:Archive%202/Archive.zip!/south%20america.xml
这有效(全部在一行)。
runwait java -jar "C:\Program Files\My Small Programs\Saxon\saxon-he-12.5.jar"
-u jar:file:ORR`%20Stations`%20Table1410.zip!/ORR`%20Stations`%20Table1410.xml
-xsl:ORR`%20Table`%201410`%20Compare`%20with`%20NR.xsl
-o:"ORR Table 1410 Compare with NR OUT.xml"
%20
替换空格。-s:
源选项,因为 -u
似乎是替代品。我会尝试
-s:"ORR Stations Table1410.zip?select=ORR Stations Table1410.xml"
。
或者对于 jar:URI 尝试在有空格的地方尝试使用 %20:
-u jar:"file:./ORR%20Stations%20Table1410.zip\!/ORR%20Stations%20Table1410.xml
。但在测试中我发现只有 jar URI 中的绝对文件 URI 才有效,例如 java -jar 'C:\Program Files\Saxonica\SaxonHE12-5J\saxon-he-12.5.jar' -t -u -xsl:./identity-xslt3-mode.xsl -s:'jar:file:///C:/Users/marti/OneDrive/Documents/xslt/blog-xslt-3-by-example/jar-zip-uri-test/sample%20file%201.zip!/sample%20file%201.xml'
有效。