Saxon HE - XSLT 转换 - 尝试运行命令行代码时出错

Posted

技术标签:

【中文标题】Saxon HE - XSLT 转换 - 尝试运行命令行代码时出错【英文标题】:Saxon HE - XSLT Transform - Getting error when trying to run command line code 【发布时间】:2021-08-04 05:25:14 【问题描述】:

我正在为课堂做 XSLT 作业。说明告诉我“通过在 alldepartments.xsl 样式表中应用 getEmployees 模板来生成结果文档 Horizo​​ns.xml。”

于是,我拉起终端输入:java net.sf.saxon.Transform -it:getEmployees alldepartments.xsl -o:horizo​​ns.xml

我收到错误消息:“错误:无法找到或加载主类 net.sf.saxon.Transform 引起:java.lang.ClassNotFoundException: net.sf.saxon.Transform"

我试图解决这个问题,并在https://www.saxonica.com/html/documentation10/about/gettingstarted/gettingstartedjava.html找到了检查软件是否正常工作的说明

所以我在命令行中输入了以下内容:

java -cp c:\saxon\saxon-he-10.5.jar net.sf.saxon.Query -t -qs:"current-date()"

终端输出的只是:function dquote>

说实话,除了解压缩我下载的文件并将其放在我的 Mac (Big Sur 11.3.1) 上的应用程序文件夹中之外,我不确定如何安装 Saxon。我试图通过右键单击并选择打开来打开 .jar 文件,但它给了我错误消息:

“操作无法完成。执行失败 /Library/internet plugins/javaappletplugin.plugin/contents/home/bin/java: no such file or directory”

这是我的 JRE 版本:“16.0.1”2021-04-20 Java(TM) SE 运行时环境 (build 16.0.1+9-24) Java HotSpot(TM) 64 位服务器 VM(内部版本 16.0.1+9-24,混合模式,共享)

这是我的 JDK 版本:javac 16.0.1

照片是 SaxonHE10-5J 文件夹内部的,我尝试运行 saxon-he-10.5.jar 文件。

我不知道为什么事情不正常,或者下一步该怎么做。我真的很感激一些逐步的帮助。请让我知道您需要哪些其他信息来帮助我。

【问题讨论】:

【参考方案1】:

嗯,您的第一次尝试失败了,因为 Saxon 不在类路径中。我想你解决了。要解决这个问题,您需要以下内容:

java -cp c:\saxon\saxon-he-10.5.jar net.sf.saxon.Transform -it:getEmployees alldepartments.xsl -o:horizons.xml

恐怕您的第二次尝试(运行 XQuery)对我来说有点神秘。但是我很困惑,当您说您在 Mac 上运行时,为什么您会在 -cp 选项中使用 Windows 文件名?如果您已将 Saxon 安装到 Mac 上的应用程序文件夹中,那么类路径应该类似于 /Users/Nikofem/Applications/Saxon/saxon-he-10.5.jar

【讨论】:

感谢您的帮助!我将命令行代码更新为: java -cp /Users/me/SaxonHE10-5J/saxon-he-10.5.jar net.sf.saxon.Transform -it:getEmployees /Users/me/SaxonHE10-5J/alldepartments.xsl -o:horizo​​ns.xml 但现在它给了我错误:getEmployees 模板不存在。 @Nikofem,这听起来像是一个新的、与设置和运行 Saxon 不同的问题,现在取决于您的 XSLT 代码。考虑用一个最小但完整的 XSLT 示例和允许其他人重现错误的 XML 来提出一个新问题。

以上是关于Saxon HE - XSLT 转换 - 尝试运行命令行代码时出错的主要内容,如果未能解决你的问题,请参考以下文章

从 Saxon 9.4he 中的嵌入式资源加载 xml 和 xslt

如何在 Saxon-HE 中获得 EXSLT 支持?

如何在 .NET 中使用 Saxon-HE 9.8 使用 XSLT 3.0

BizTalk 2020 Saxon XSLT 3.0 转换异常

使用 Saxon-JS 识别 XSLT 转换的性能瓶颈

基于另一个变量的 XSLT 元素选择