如何从命令行 运行 Saxon
How to run Saxon from command line
任何人都可以 post 详细的分步说明如何安装 Saxon (10 HE) 以及如何 运行 在 MacOS (10.13.6) 中从命令行进行转换?
我已经在我的电脑上安装了Java。
我已经从 SourceForge 下载了 SaxonHE10-6J.zip
文件。
根据建议 here,我已将 saxon-he-10.6.jar
放在 myUserName/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'
这导致:
Unable to access jarfile saxon-he-10.6.jar
我所有的尝试,包括将 .jar 文件移动到 /Library/Java/Extensions
目录或在命令中包含 .jar 文件的完整路径,都失败了,并出现相同的错误消息。
请注意,我不是 Java 开发人员,我不打算在应用程序中使用它。我想要的只是能够偶尔进行一次转换。
我还应该注意,我的 XML 和 XSLT 文件的位置可能会因情况而异。我希望能够将 .jar 文件保存在一个固定位置,并根据需要提供 XML 和 XSLT 文件的路径 - IOW,我想要一个命令模板,我只需要更改 2文件路径(并可能向转换添加一些选项)。
我需要做什么?
我自己从不使用它:然而 myUserName/Library/Java/Extensions
就类路径而言是特殊的(你不需要将 JAR 文件放在类路径的这个目录中),但它不是就 -jar 选项而言是特殊的 - 它需要是正常方式下的绝对或相对文件名,并且与类路径无关。
如果您选择将 JAR 文件放在这个神奇的位置,那么我会使用命令 java net.sf.saxon.Transform options
从类路径中选择 Saxon,而不是直接识别 -jar 位置。
但是,有充分的理由不把撒克逊人放在这个神奇的地方;一个原因是它会影响实际上不想使用 Saxon 的应用程序(它们可能被编写为使用其他 XSLT 处理器,并且您可能根本不知道它们使用 XSLT,直到它们停止工作)。
最终我成功了。虽然这些并不是我所希望的详细的分步说明,但我将在这里总结我到目前为止所学的内容。希望这会节省一些人我不得不经历的挫败感。
确保您的计算机上安装了 Java。如果没有,请下载
从 Oracle 并安装。
从 SourceForge 下载 Saxon。解压缩并将其放在您的任意位置
硬盘,除了:
- 不要放在
/Library/Java/Extensions
或myUserName/Library/Java/Extensions
中;
- 不要将其放在名称中包含
/
的文件夹中(说明见下文)。
要启动 t运行 信息,请发出命令:
java -jar 'path/to/saxon-he-10.6.jar' -xsl:'path/to/mystylesheet.xsl' -s:'path/to/some.xml'
或者,您可以使用:
java -cp 'path/to/saxon-he-10.6.jar' net.sf.saxon.Transform -xsl:'path/to/mystylesheet.xsl' -s:'path/to/some.xml'
此表单也可用于 运行 XQuery,方法是更改
net.sf.saxon.Transform
到 net.sf.saxon.Query
.
要向您的命令添加更多选项 and/or 参数,请参阅
此处给出的说明:
https://www.saxonica.com/html/documentation10/using-xsl/commandline/
但不要按照页面顶部的说明进行操作
基本命令的形式。
Corrections/additions 非常欢迎。
文件夹名称包含/
的问题描述:
将所有 3 个文件(saxon-he-10.6.jar
、mystylesheet.xsl
和
some.xml
在我的文档文件夹中名为 XML/RSS
的文件夹中;
运行以下命令:
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'
收到以下错误:
Error: Could not find or load main class net.sf.saxon.Transform Caused by: java.lang.ClassNotFoundException: net.sf.saxon.Transform
仅将 .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'
结果:运行形成成功。
将 .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'
结果:运行形成成功。
任何人都可以 post 详细的分步说明如何安装 Saxon (10 HE) 以及如何 运行 在 MacOS (10.13.6) 中从命令行进行转换?
我已经在我的电脑上安装了Java。
我已经从 SourceForge 下载了 SaxonHE10-6J.zip
文件。
根据建议 here,我已将 saxon-he-10.6.jar
放在 myUserName/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'
这导致:
Unable to access jarfile saxon-he-10.6.jar
我所有的尝试,包括将 .jar 文件移动到 /Library/Java/Extensions
目录或在命令中包含 .jar 文件的完整路径,都失败了,并出现相同的错误消息。
请注意,我不是 Java 开发人员,我不打算在应用程序中使用它。我想要的只是能够偶尔进行一次转换。
我还应该注意,我的 XML 和 XSLT 文件的位置可能会因情况而异。我希望能够将 .jar 文件保存在一个固定位置,并根据需要提供 XML 和 XSLT 文件的路径 - IOW,我想要一个命令模板,我只需要更改 2文件路径(并可能向转换添加一些选项)。
我需要做什么?
我自己从不使用它:然而 myUserName/Library/Java/Extensions
就类路径而言是特殊的(你不需要将 JAR 文件放在类路径的这个目录中),但它不是就 -jar 选项而言是特殊的 - 它需要是正常方式下的绝对或相对文件名,并且与类路径无关。
如果您选择将 JAR 文件放在这个神奇的位置,那么我会使用命令 java net.sf.saxon.Transform options
从类路径中选择 Saxon,而不是直接识别 -jar 位置。
但是,有充分的理由不把撒克逊人放在这个神奇的地方;一个原因是它会影响实际上不想使用 Saxon 的应用程序(它们可能被编写为使用其他 XSLT 处理器,并且您可能根本不知道它们使用 XSLT,直到它们停止工作)。
最终我成功了。虽然这些并不是我所希望的详细的分步说明,但我将在这里总结我到目前为止所学的内容。希望这会节省一些人我不得不经历的挫败感。
确保您的计算机上安装了 Java。如果没有,请下载 从 Oracle 并安装。
从 SourceForge 下载 Saxon。解压缩并将其放在您的任意位置 硬盘,除了:
- 不要放在
/Library/Java/Extensions
或myUserName/Library/Java/Extensions
中; - 不要将其放在名称中包含
/
的文件夹中(说明见下文)。
- 不要放在
要启动 t运行 信息,请发出命令:
java -jar 'path/to/saxon-he-10.6.jar' -xsl:'path/to/mystylesheet.xsl' -s:'path/to/some.xml'
或者,您可以使用:
java -cp 'path/to/saxon-he-10.6.jar' net.sf.saxon.Transform -xsl:'path/to/mystylesheet.xsl' -s:'path/to/some.xml'
此表单也可用于 运行 XQuery,方法是更改
net.sf.saxon.Transform
到net.sf.saxon.Query
.要向您的命令添加更多选项 and/or 参数,请参阅 此处给出的说明:
https://www.saxonica.com/html/documentation10/using-xsl/commandline/
但不要按照页面顶部的说明进行操作 基本命令的形式。
Corrections/additions 非常欢迎。
文件夹名称包含/
的问题描述:
将所有 3 个文件(
saxon-he-10.6.jar
、mystylesheet.xsl
和some.xml
在我的文档文件夹中名为XML/RSS
的文件夹中;运行以下命令:
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'
收到以下错误:
Error: Could not find or load main class net.sf.saxon.Transform Caused by: java.lang.ClassNotFoundException: net.sf.saxon.Transform
仅将 .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'
结果:运行形成成功。
将 .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'
结果:运行形成成功。