Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过linux shell实现XSLT 2.0转换_Java_Shell_Xslt_Jar_Saxon - Fatal编程技术网

Java 通过linux shell实现XSLT 2.0转换

Java 通过linux shell实现XSLT 2.0转换,java,shell,xslt,jar,saxon,Java,Shell,Xslt,Jar,Saxon,我想通过使用命令行执行来执行XSLT2.0转换。我听说我可以通过shell命令使用Saxon库,比如java-jar sax.jar-input foo.xml-xsl foo.xsl-output bar.xml。有人知道我如何才能实现这个目标吗 顺便说一下,我并不局限于Java。任何其他shell解决方案都可以。Saxon的文档在线:。因此,您需要java-jar saxon9he.jar-xsl:foo.xsl-s:foo.xml-o:bar.xml更新:如果您的java是11版或更高版本

我想通过使用命令行执行来执行XSLT2.0转换。我听说我可以通过shell命令使用Saxon库,比如
java-jar sax.jar-input foo.xml-xsl foo.xsl-output bar.xml
。有人知道我如何才能实现这个目标吗


顺便说一下,我并不局限于Java。任何其他shell解决方案都可以。

Saxon的文档在线:。因此,您需要
java-jar saxon9he.jar-xsl:foo.xsl-s:foo.xml-o:bar.xml
更新:如果您的java是11版或更高版本,请检查解决方案2和3,其中
.internal.
不再可用

我刚刚编写了使用com.sun.org.apache.xalan.internal.xsltc.cmdline类来转换XML。与openjdk配合使用很好。不是用于生产用例的解决方案,但便于调试

p.S.从

  • 解决方案2:使用
  • 解决方案3:

非常感谢。我还发现:这也很好,还是你更喜欢什么?你的Ubuntu发行版附带的Saxon版本可能相当旧。下载最新版本可能更好(不过如果您是初学者,可能不会注意到太多差异)。Sax解析器解析流中的XML并触发事件。Saxon是一个XSLT处理器。大多数情况下,XSLT处理器不会流式处理。Saxon(在他的商业版本中)具有流媒体功能,具有XSLT 3.0提供的最新指令。感谢您对正确命名的澄清。它似乎与所有
.internal.
内容一样,在一段时间后消失了。。。因此,bash脚本最终使用JDK生成ClassNotFoundException11@OndraŽižka,你说得对。我已经用另一个解决方案更新了答案。你认为Java停止嵌入XSLT了吗,或者说我们已经没有办法再访问它了?