15
votes

I want to perform an XSLT 2.0 transformation by the use of command line executions. I heard that i could use the Saxon library by a shell command like java -jar sax.jar -input foo.xml -xsl foo.xsl -output bar.xml. Does anyone know how exactly i can achieve that goal?

By the way, i am not limited to Java. Any other shell solution is fine.

2
Be aware that a Sax parser does not perform XSLT. Sax parser parse XML in a stream and fire events. Saxon is an XSLT processor. Most of the time a XSLT processor does not stream. Saxon (in his commercial version) has streaming capabilities with the latest instructions provided by XSLT 3.0. - Vincent Biragnet
thanks for clarification of correct naming - Alp

2 Answers

12
votes

The documentation of Saxon is online: http://www.saxonica.com/documentation/#!using-xsl/commandline. So you need java -jar saxon9he.jar -xsl:foo.xsl -s:foo.xml -o:bar.xml.

2
votes

Update: check solution 2 and 3 if your java is version 11 or later, where .internal. are not available anymore.

I just wrote this bash script to use com.sun.org.apache.xalan.internal.xsltc.cmdline classes for transforming XML. Works with openjdk just fine. Not a solution for production use cases but handy for debugging.

P.S. took the idea from this blog