Я написал приложение Java, которое использует JAXB для XSL-преобразований. Я включил saxon9.jar в свой путь к классам, чтобы использовать XSLT 2.0 вместо XSLT 1.0 в командной строке.Реализация Java по умолчанию JAXB выбрана по моему пути к классам
java -classpath ./lib/saxon9.jar:./ -jar myApp.jar
Я включил код в свой XSL, чтобы сообщить о используемом XSLT.
<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.
Как я могу использовать саксон, который я указал?
Развейте:
Так ни один из этих методов не работал (за исключение размещения Саксонской баночки в одобренном каталоге), но все они должны работали. Кажется, комбинация моего использования «-jar myApp.jar» и желание альтернативной реализации XSLT были несовместимы. Другими словами ...
Java -Djavax.xml.transform.TransformerFactory = net.sf.saxon.TransformerFactoryImpl -classpath ./lib/saxon9.jar:./ -jar MyApp.jar
.. .does не работает, но это делает ...
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
Это сработало, но мне это точно не нравится. Изменение всей моей JVM похоже на цель пути к классам. – dacracot
Я знаю. Однако это единственный способ заменить класс JVM, и его лучше избегать. Даже с помощью собственных ClassLoaders вы не можете загрузить класс из пакетов java или javax. – kgiannakakis
Это нарушило другие приложения ... а именно затмение. – dacracot