第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>