XSL変換にJAXBを利用するJavaアプリケーションを作成しました。コマンドラインでXSLT1.0ではなくXSLT2.0を使用できるように、クラスパスにsaxon9.jarを含めました。
java -classpath ./lib/saxon9.jar:./ -jar myApp.jar
使用されたXSLTを報告するためのコードをXSLに含めました。
<xsl:comment><xsl:text >
</xsl:text>XSLT Version: <xsl:value-of select="system-property('xsl:version')" /> <xsl:text >
</xsl:text>XSLT Vendor: <xsl:value-of select="system-property('xsl:vendor')" /> <xsl:text >
</xsl:text>XSLT Vendor URL: <xsl:value-of select="system-property('xsl:vendor-url')" /> <xsl:text >
</xsl:text></xsl:comment>
報告します。
XSLT Version: 1.0
XSLT Vendor: Apache Software Foundation (Xalan XSLTC)
XSLT Vendor URL: http://xml.apache.org/xalan-j
これは、JVMの一部であるデフォルトの実装です。
指定したSaxonを使用するにはどうすればよいですか?
ファローアップ:
したがって、これらのメソッドはどれも機能しませんでした(saxon jarを承認されたディレクトリに配置することを除いて)が、すべて機能するはずです。「-jarmyApp.jar」を使用することと、代替のXSLT実装が必要なことの組み合わせには互換性がないようです。言い換えると...
java -Djavax.xml.transform.TransformerFactory = net.sf.saxon.TransformerFactoryImpl -classpath ./lib/saxon9.jar:./ -jar myApp.jar
...機能しませんが、これは機能します...
java -Djavax.xml.transform.TransformerFactory = net.sf.saxon.TransformerFactoryImpl -classpath ./lib/saxon9.jar:./myApp.jar org.dacracot.myApp
...興味深いことに、私は工場を指定する必要さえなく、サクソンバージョンを入手しています...
java -classpath ./lib/saxon9.jar:./myApp.jar org.dacracot.myApp