アプリケーションで Xalan を使用していますが、比較するテスト出力を生成するためにリファレンス実装で Saxon を使用する必要があります。単体テスト中に両方を使用したい。ただし、プロジェクト .pom で Saxon への依存関係を追加するとすぐに、アプリケーションはテスト中にすべての xslt および XPath 操作に Saxon を使用しているように見えます。
<dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>Saxon-HE</artifactId>
<version>9.4</version>
<scope>test</scope>
</dependency>
これにより、XPath の動作が異なるため、出力を生成するときにメイン アプリケーションが失敗します。テスト範囲外でメイン アプリケーションを実行すると動作します。
Xalan を使用してメイン アプリケーションを実行し、テスト中に Saxon を使用してテストを実行するにはどうすればよいですか?
Xalan および Saxon パーツを実行する前に、次のプロパティを設定しようとしました。
System.setProperty("javax.xml.transform.TransformerFactory", "org.apache.xalan.processor.TransformerFactoryImpl ");
System.setProperty("javax.xml.transform.TransformerFactory", "net.sf.saxon.TransformerFactoryImpl");
また、Xalan と Saxon のパーツを別のプロジェクトに配置しようとしました。また、3 番目のプロジェクトから両方を使用しようとしましたが、同じ結果になりました。