如何从命令行运行 Saxon

y.a*_*zim 0 java xslt macos command-line saxon

任何人都可以发布详细的分步说明,说明如何安装 Saxon (10 HE) 以及如何从 MacOS (10.13.6) 中的命令行运行转换?

我已经在我的电脑上安装了Java。
我已经SaxonHE10-6J.zip从 SourceForge 下载了该文件。
根据此处的建议,我已将其放入文件夹saxon-he-10.6.jarmyUserName/Library/Java/Extensions然后我打开终端应用程序并输入基于此答案的
命令:

java -jar saxon-he-10.6.jar -'/Users/myUserName/Documents/path/to/mystylesheet.xsl' -s:'/Users/myUserName/Documents/path/to/some.xml'
Run Code Online (Sandbox Code Playgroud)

这导致:

Unable to access jarfile saxon-he-10.6.jar
Run Code Online (Sandbox Code Playgroud)

我的所有尝试(包括将 .jar 文件移动到/Library/Java/Extensions 目录或在命令中包含 .jar 文件的完整路径)都失败了,并出现相同的错误消息。

请注意,我不是 Java 开发人员,我不打算在应用程序中使用它。我想要的只是能够偶尔进行一次转变。

我还应该注意,XML 和 XSLT 文件的位置可能会因情况而异。我希望能够将 .jar 文件保留在恒定位置,并根据需要提供 XML 和 XSLT 文件的路径 - IOW,我想要一个命令模板,我只需要更改 2 个文件路径(并且可能为转换添加一些选项)。

我需要做什么?

y.a*_*zim 6

最终我成功了。虽然这些并不完全是我所希望的详细的分步说明,但我将在这里总结我迄今为止所学到的内容。希望这能让某人免去我所经历的沮丧时光。

  • 确保您的计算机上安装了 Java。如果没有,请从 Oracle 下载并安装。

  • 从 SourceForge 下载 Saxon。解压缩并将其放置在硬盘上的任何位置,除了:

    • 请勿将其放入/Library/Java/Extensions或放入myUserName/Library/Java/Extensions
    • 不要将其放在名称包含 a 的文件夹中/(请参阅下面的说明)。
  • 要启动转换,请发出命令:

    java -jar 'path/to/saxon-he-10.6.jar' -xsl:'path/to/mystylesheet.xsl' -s:'path/to/some.xml'
    
    Run Code Online (Sandbox Code Playgroud)
  • 或者,您可以使用:

    java -cp 'path/to/saxon-he-10.6.jar' net.sf.saxon.Transform -xsl:'path/to/mystylesheet.xsl' -s:'path/to/some.xml'
    
    Run Code Online (Sandbox Code Playgroud)

    net.sf.saxon.Transform通过更改为,此形式也可用于运行 XQuery net.sf.saxon.Query

  • 要向命令添加更多选项和/或参数,请参阅此处给出的说明: https:
    //www.saxonica.com/html/documentation10/using-xsl/commandline/
    ,但不要遵循页面顶部的说明关于基本命令的形式。

欢迎更正/补充。


文件夹名称问题的描述包含/

  1. 将所有 3 个文件(saxon-he-10.6.jarmystylesheet.xsl) 放入我的 Documents 文件夹中some.xml命名的文件夹中XML/RSS

  2. 运行以下命令:

    java -jar '/Users/myUserName/Documents/XML:RSS/saxon-he-10.6.jar' -xsl:'/Users/myUserName/Documents/XML:RSS/mystylesheet.xsl' -s:'/Users/myUserName/Documents/XML:RSS/some.xml' 
    
    Run Code Online (Sandbox Code Playgroud)

    收到以下错误:

    Error: Could not find or load main class net.sf.saxon.Transform Caused by: java.lang.ClassNotFoundException: net.sf.saxon.Transform
    
    Run Code Online (Sandbox Code Playgroud)
  3. 仅将 .jar 文件移至父文件夹并运行以下命令:

    java -jar '/Users/myUserName/Documents/saxon-he-10.6.jar' -xsl:'/Users/myUserName/Documents/XML:RSS/mystylesheet.xsl' -s:'/Users/myUserName/Documents/XML:RSS/some.xml' 
    
    Run Code Online (Sandbox Code Playgroud)

    结果:转型成功。

  4. 将 .jar 文件移回原处,将文件夹重命名为XMLRSS并运行以下命令:

    java -jar '/Users/myUserName/Documents/XMLRSS/saxon-he-10.6.jar' -xsl:'/Users/myUserName/Documents/XMLRSS/mystylesheet.xsl' -s:'/Users/myUserName/Documents/XMLRSS/some.xml' 
    
    Run Code Online (Sandbox Code Playgroud)

    结果:转型成功。