XPath は XML 文書と共に使用するように設計された照会言語ですが、内容を照会する任意のツリー構造で使用できます。
WebSphere® Message Broker は XPath を使用して、 ビット・ストリームの形式には関係なく論理メッセージ・ツリーからエレメントを選択します。 このトピックで使用される用語は、XPath 1.0 の W3C 定義での用語に基づいています。XPath、および XPath 1.0 規格の W3C 定義について詳しくは、W3C XPath 1.0 Specificationを参照してください。 XPath の使用例については、Java ユーザー定義 拡張 API 資料の MbXPath トピックを参照してください。
evaluateXPath() メソッドは、MbMessage オブジェクト (絶対パスのため)、 または MbElement オブジェクト (相対パスのため) に関して呼び出すことができます。 XPath 式は、メソッドにストリング・パラメーターとして渡されます。 このメソッドの 2 番目の形式が提供されていて、それは MbXPath オブジェクトを使用するものです。このオブジェクトは、XPath 式を変数バインディングおよびネーム・スペース・マッピング (これらが必要な場合) と共にカプセル化します。
<ns1:aaa xmlns:ns1='http://mydomain.com/namespace1' xmlns:ns2='http://mydomain.com/namespace2'> <ns2:aaa> <ns1:bbb/> </ns2:aaa> </ns1:aaa>
ネーム・スペース・プレフィックスはネーム・スペースを表すために便利ですが、それはそのマッピングが定義された文書内でのみ意味を持ちます。 ネーム・スペース URI はグローバルな意味を定義します。 さらに、ネーム・スペース URI は XMLNS マッピングが定義されていなくても構文エレメントに割り当てることができるので、 ネーム・スペース・プレフィックスの概念はメッセージ・フロー内で生成された文書に対して意味を持ちません。
このため、XMLNSC パーサーおよび MRM パーサーはネーム・スペース URI だけを ブローカーおよびユーザー・コード (ESQL またはユーザー定義コード) に対して公開します。長くなる可能性のある URI への省略形を作成するため独自のマッピングを ESQL を使用してセットアップできます。これらのマッピングは、XML 文書内で定義されたプレフィックスと (同じ名前にすることはできますが) 何の関係もありません。
MbMessage msg = assembly.getMessage(); List chapters= (List)msg.evaluateXPath("/document/chapter"); // this returns a list of all chapters in the document (length 1) MbElement chapter = (MbElement)chapters.get(0); // the first one // values can also be extracted directly using XPath String title = (String)msg.evaluateXPath("string(/document/chapter/@title)"); String chapterText = (String)msg.evaluateXPath("string(/document/chapter/text())");