6

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

4

5 に答える 5

2

ファクトリを構成するすべての可能な方法については、 TransformerFactory.newInstance()の javadoc を確認してください。

  1. システム プロパティ
  2. lib/jaxp.properties
  3. サービス構成ファイル (saxon JAR、/META-INF/services/javax.xml.transform.TransformerFactory にある場合があります)
于 2009-02-15T01:51:55.817 に答える
2

承認されたディレクトリに jar を配置しようとしましたか?

効果をグローバルにしたくない場合は、次のオプションを使用します。

-Djava.endorsed.dirs=my_dir

コマンドラインで。

于 2009-02-13T20:59:48.897 に答える
2

META-INF/services ディレクトリに次の名前のファイルが含まれているため、投稿した最後の例(-Djavax ...なし)が機能します

java.xml.transform.TransformerFactory

内容とともに

net.sf.saxon.TransformerFactoryImpl

使う理由

java -cp lib/saxon9.jar;myjar.jar

作品と

java -cp lib/saxon9.jar -jar myjar.jar

-jar オプションを使用すると、残りのコマンド ラインを無視し、jar のマニフェスト ファイルからすべて (クラスパスを含む) をプルするように java(w).exe に指示されます。jar マニフェストのクラスパスに saxon9.jar を配置すると、動作するはずです。

Manifest-Version: 1.0
Main-Class: net.my.MainClass
Class-Path: lib/saxon9.jar
于 2009-04-13T13:26:19.873 に答える
0

どうですか

java -Xbootclasspath:lib/saxon9.jar -classpath . -jar myApp.jar
于 2009-02-13T21:06:36.150 に答える