当前位置: 首页 > 知识库问答 >
问题:

如何从命令行运行Saxon

韦飞尘
2023-03-14

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

我已经在我的计算机上安装了Java
我已经下载了SaxonHE10-6J。来自SourceForge的zip文件
根据这里的建议,我放置了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文件的路径-哦,我希望有一个命令模板,在这里我只需要更改2个文件路径(并可能为转换添加一些选项)。

我需要做什么?

共有2个答案

周威
2023-03-14

我自己从来没有使用过它:然而,就类路径而言,myUserName/Library/Java/Extensions是特殊的(您不需要将JAR文件放在类路径的这个目录中),但就-JAR选项而言,它并不特殊-它需要以正常方式是绝对或相对文件名,与类路径无关。

如果您选择将JAR文件放在这个神奇的位置,那么我将使用命令javanet.sf.saxon.Transform选项从类路径中选择Saxon,而不是直接识别-jar位置。

然而,有充分的理由不把撒克逊放在这个神奇的地方;一个原因是,它将影响那些实际上不想使用Saxon的应用程序(它们可能被编写为使用其他XSLT处理器,在停止工作之前,您可能根本不知道它们使用XSLT)。

黄元章
2023-03-14

最终我让它工作了。虽然这些并不完全是我所希望的详细、循序渐进的说明,但我将在这里总结我迄今所学到的知识。希望这能帮别人省去我不得不经历的几个小时的沮丧。

>

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

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

    • 不要将其放在myUserName/Library/Java/Extensions或myUserName/Library/Java/Extensions中

    要启动转换,请执行以下命令:

    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'
    

    此表单还可用于通过将net.sf.saxon.Transform更改为net.sf.saxon.Query来运行XQuery。

    有关向命令中添加更多选项和/或参数的信息,请参阅此处给出的说明:
    https://www.saxonica.com/html/documentation10/using-xsl/commandline/
    但不要按照页面顶部关于基本命令形式的说明进行操作。

    最欢迎更正/添加。

    文件夹名称包含以下内容的问题描述:

    >

  • 将所有3个文件(saxon-he-10.6.jarmystylesheet.xslsome.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' 
    

    结果:成功转型。

  •  类似资料:
    • 我知道以前有人问过这个问题,但是那里的信息都没有帮助我。 我的情况是:我无法运行编译后的Kotlin类。当我尝试像运行普通java类一样运行它时,我得到了以下结果: 这让我相信,考虑到这个输出,Kotlin运行时根本就不存在。所以我尝试了以下方法: 这让我想到,也许我需要将类文件添加到我声明的类路径中,所以: 我错过了什么?

    • 问题内容: 我很难找到答案。使用普通的Node.JS,您可以使用,CoffeeScript 和ES6具有的任何js文件。我如何使用Typescript进行操作? 我的项目有一个供Webpack / ts- loader使用的工具,用于为浏览器构建一个不错的小捆绑包。不过,在此之前,我需要从控制台运行一个构建步骤,该步骤将使用项目中使用的某些文件来生成模式,但是如果不进行编译,我似乎无法运行单个Ty

    • 我遵循以下指示https://code.visualstudio.com/docs/setup/mac但我没有成功。这就是我进去时发生的事情 我得到了以下信息: 我还查找了以下问题:如何在OSX上从命令行打开Visual Studio代码?,这没用。 我在VSCode中只有一个终端选项,zsh。

    • 问题内容: 到目前为止,我主要使用eclipse。现在,我正在尝试从终端运行Java,但程序包存在问题。 这是我的文件: 我使用编译此代码,然后运行,它给我: 当我删除一切正常。我想念什么? 给出: 问题答案: 您需要在一个目录级别上运行java命令,并以完全合格的软件包名称提供它,例如: 请参阅Java Launcher如何查找用户类 以了解其工作方式。

    • 问题内容: 我开发了OSGi捆绑包,通常通过Eclipse进行测试。在导出捆绑包之后,我得到了bundle.jar文件。我希望能够从命令行运行生成的文件。就像是: C:\ java -jar bundle.jar osgi_framework路径 但是,如何在其中包含osgi框架?而且,如何立即启动捆绑包? 问题答案: 您可以从命令行启动OSGi框架,如下所示。首先是春分: 注意 用VERSION

    • 问题内容: npm 已安装并正在IntelliJ IDEA 15中被积极使用 我的目标是在IntelliJ中为我的TypeScript源代码生成类型,但是我想学习使用Windows命令行,因此我可以显式指定命令行选项,以了解每个选项的作用。我对Googling所发现的与设置和使用它有关的各种花絮感到困惑…我敢肯定,我缺少一些非常基本的知识,那些博客或回答问题的人都认为这是常识。 。 这是我尝试过的