32.5. Saxon の有効化
前提条件 リンクのコピーリンクがクリップボードにコピーされました!
Saxon パーサーを使用するための前提条件は、camel-saxon アーティファクトに依存関係を追加することです(Maven を使用する場合はこの依存関係を Maven POM に追加するか、または camel-saxon-2.21.0.fuse-760027-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 をロードすることはできません。