第33章 XQuery
概要
XQuery は当初、データベース内の XML フォームに保存されているデータのクエリー言語として開発されました。XQuery 言語を使用すると、メッセージが XML 形式の場合に、現在のメッセージの一部を選択できます。XQuery は、XPath 言語のスーパーセットです。したがって、有効なすべての XPath 式は有効な XQuery 式でもあります。
Java 構文
XQuery 式を xquery()
に渡すには、いくつかの方法があります。単純な式の場合は、XQuery の式を文字列として渡すことができます (java.lang.String
)。XQuery 式が長い場合は、ファイルに式を保存することが推奨されます。このファイルは、オーバーロードされた xquery()
メソッドに java.io.File
引数または java.net.URL
引数を渡すことで参照できます。XQuery 式は、メッセージの内容に対して暗黙的に作用し、結果としてノードセットを返します。コンテキストに応じて、戻り値は述語 (空のノードセットは false として解釈されます) または式として解釈されます。
Saxon モジュールの追加
XQuery をルートで使用するには、例33.1「camel-saxon 依存関係の追加」 で示されたように、camel-saxon
の依存関係をプロジェクトに追加する必要があります。
例33.1 camel-saxon 依存関係の追加
<!-- Maven POM File --> ... <dependencies> ... <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-saxon</artifactId> <version>${camel-version}</version> </dependency> ... </dependencies>
Camel on EAP デプロイメント
camel-saxon
コンポーネントは、Camel on EAP (Wildfly Camel) フレームワークによってサポートされており、Red Hat JBoss Enterprise Application Platform (JBoss EAP) コンテナー上でシンプルなデプロイモデルを提供します。
静的インポート
アプリケーションコードで xquery()
static メソッドを使用するには、以下の import ステートメントを Java ソースファイルに追加します。
import static org.apache.camel.component.xquery.XQueryBuilder.xquery;
変数
表33.1「XQuery 変数」 に、XQuery を使用する際にアクセス可能な変数の一覧を示します。
変数 | 型 | 説明 |
---|---|---|
|
| 現在のエクスチェンジ |
|
| IN メッセージのボディー |
|
| OUT メッセージのボディー |
|
| キーが key である IN メッセージヘッダー |
|
| キーが key である OUT メッセージヘッダー |
key |
| キーが key であるエクスチェンジプロパティー |
例
例33.2「XQuery を使用するルート」 は、XQuery を使用するルートを示しています。
例33.2 XQuery を使用するルート
<camelContext> <route> <from uri="activemq:MyQueue"/> <filter> <language langauge="xquery">/foo:person[@name='James']</language> <to uri="mqseries:SomeOtherQueue"/> </filter> </route> </camelContext>