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 模板来生成结果文档 Horizons.xml。”
于是,我拉起终端输入:java net.sf.saxon.Transform -it:getEmployees alldepartments.xsl -o:horizons.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:horizons.xml 但现在它给了我错误:getEmployees 模板不存在。 @Nikofem,这听起来像是一个新的、与设置和运行 Saxon 不同的问题,现在取决于您的 XSLT 代码。考虑用一个最小但完整的 XSLT 示例和允许其他人重现错误的 XML 来提出一个新问题。以上是关于Saxon HE - XSLT 转换 - 尝试运行命令行代码时出错的主要内容,如果未能解决你的问题,请参考以下文章
从 Saxon 9.4he 中的嵌入式资源加载 xml 和 xslt
如何在 .NET 中使用 Saxon-HE 9.8 使用 XSLT 3.0