He escrito una aplicación java que utiliza JAXB para transformaciones XSL. He incluido saxon9.jar en mi classpath para poder usar XSLT 2.0 en lugar de XSLT 1.0 en la línea de comandos.La implementación JAXB predeterminada de Java se elige sobre mi classpath
java -classpath ./lib/saxon9.jar:./ -jar myApp.jar
He incluido el código en mi XSL para informar el XSLT utilizado.
<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>
Informa.
XSLT Version: 1.0
XSLT Vendor: Apache Software Foundation (Xalan XSLTC)
XSLT Vendor URL: http://xml.apache.org/xalan-j
Esta es la implementación predeterminada que forma parte de la JVM.
¿Cómo hago para usar el Saxon que he especificado?
seguimiento:
Así que ninguno de estos métodos trabajado (excepto la colocación de la jarra sajón en el directorio de aprobación), pero todos ellos deberían haber funcionado. Parece que la combinación de mi uso del "-jar myApp.jar" y el deseo de una implementación XSLT alternativa eran incompatibles. En otras palabras ...
java -classpath -Djavax.xml.transform.TransformerFactory = net.sf.saxon.TransformerFactoryImpl ./lib/saxon9.jar:./-jar myApp.jar
.. .no funciona, pero esto sí ...
java -Djavax.xml.transform.TransformerFactory = net.sf.saxon.TransformerFactoryImpl -classpath ./lib/saxon9.jar:./myApp.jar org.dacracot .myApp
... curiosamente, no tienen ni siquiera para especificar la fábrica y me sale la versión sajona ...
java-classpath ./lib/saxon9.jar:./myApp.jar org.dacracot.myApp
Esto funcionó, pero seguro que no me gusta. Cambiar mi JVM completa parece contrario al propósito de la ruta de clases. – dacracot
Lo sé. Sin embargo, esta es la única forma de reemplazar una clase JVM y es mejor evitarla. Incluso con sus propios ClassLoaders no puede cargar una clase de los paquetes java o javax. – kgiannakakis
Esto rompió otras aplicaciones ... es decir, eclipse. – dacracot