32.5. Saxon の有効化
前提条件
Saxon パーサーを使用するための前提条件は、camel-saxon アーティファクトに依存関係を追加することです (Maven を使用している場合は、この依存関係を Maven POM に追加するか、camel-saxon-2.23.2.fuse-780036-redhat-00001.jar ファイルをクラスパスに追加します)。
Java DSL での Saxon パーサーの使用
Java DSL では、Saxon パーサーを有効にする最も簡単な方法は、saxon() Fluent Builder メソッドを呼び出すことです。たとえば、次の例のように Saxon パーサーを呼び出すことができます。
// Java
// create a builder to evaluate the xpath using saxon
XPathBuilder builder = XPathBuilder.xpath("tokenize(/foo/bar, '_')[2]").saxon();
// evaluate as a String result
String result = builder.evaluate(context, "<foo><bar>abc_def_ghi</bar></foo>");XML DSL での Saxon パーサーの使用
XML DSL では、Saxon パーサーを有効にする最も簡単な方法は、xpath 要素で saxon 属性を true に設定することです。たとえば、次の例のように Saxon パーサーを呼び出すことができます。
<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();
一方、汎用の JAXP API を使用してトランスフォーマーファクトリーのインスタンスを作成する場合は、最初に ESBInstall/etc/system.properties ファイルのjavax.xml.transform.TransformerFactory プロパティーを以下のように設定する必要があります。
javax.xml.transform.TransformerFactory=net.sf.saxon.TransformerFactoryImpl
そして、以下のように汎用の JAXP API を使用して Saxon ファクトリーをインスタンス化することができます。
// 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 をロードすることはできません。