32.5. Saxon の有効化
前提条件 リンクのコピーリンクがクリップボードにコピーされました!
Saxon パーサーを使用するための前提条件は、camel-saxon
アーティファクトに依存関係を追加することです(Maven を使用している場合は、この依存関係を Maven POM に追加するか、camel-saxon-2.21.0.fuse-750033-redhat-00001.jar
ファイルをクラスパスに追加します)。
Java DSL での Saxon パーサーの使用 リンクのコピーリンクがクリップボードにコピーされました!
Java DSL では、Saxon パーサーを有効にする最も簡単な方法は、saxon()
Fluent Builder メソッドを呼び出すことです。たとえば、次の例のように Saxon パーサーを呼び出すことができます。
XML DSL での Saxon パーサーの使用 リンクのコピーリンクがクリップボードにコピーされました!
XML DSL では、Saxon パーサーを有効にする最も簡単な方法は、xpath
要素で saxon
属性を true に設定することです。たとえば、次の例のように Saxon パーサーを呼び出すことができます。
<xpath saxon="true" resultType="java.lang.String">current-dateTime()</xpath>
<xpath saxon="true" resultType="java.lang.String">current-dateTime()</xpath>
Saxon を使ったプログラミング リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションコードで Saxon XML パーサーを使用する場合は、以下のコードを使用して明示的に Saxon トランスフォーマーファクトリーのインスタンスを作成することができます。
// Java import javax.xml.transform.TransformerFactory; import net.sf.saxon.TransformerFactoryImpl; ... TransformerFactory saxonFactory = new net.sf.saxon.TransformerFactoryImpl();
// Java
import javax.xml.transform.TransformerFactory;
import net.sf.saxon.TransformerFactoryImpl;
...
TransformerFactory saxonFactory = new net.sf.saxon.TransformerFactoryImpl();
一方、汎用の JAXP API を使用してトランスフォーマーファクトリーのインスタンスを作成する場合は、最初に ESBInstall/etc/system.properties
ファイルのjavax.xml.transform.TransformerFactory
プロパティーを以下のように設定する必要があります。
javax.xml.transform.TransformerFactory=net.sf.saxon.TransformerFactoryImpl
javax.xml.transform.TransformerFactory=net.sf.saxon.TransformerFactoryImpl
そして、以下のように汎用の JAXP API を使用して Saxon ファクトリーをインスタンス化することができます。
// Java import javax.xml.transform.TransformerFactory; ... TransformerFactory factory = TransformerFactory.newInstance();
// Java
import javax.xml.transform.TransformerFactory;
...
TransformerFactory factory = TransformerFactory.newInstance();
アプリケーションが Saxon を使用するサードパーティーのライブラリーに依存している場合、2 番目の汎用的なアプローチを使用する必要がある可能性があります。
Saxon ライブラリーは、OSGi バンドル net.sf.saxon/saxon9he
としてコンテナーにインストールする必要があります (通常はデフォルトでインストールされています)。バージョンが 7.1 未満の Fuse ESB では、汎用的な JAXP API を使用して Saxon をロードすることはできません。