XPath は XML 文書と共に使用するように設計された照会言語ですが、照会目的のために任意のツリー構造に対して使用できます。 WebSphere Message Broker は XPath を使用して、 ビット・ストリームの形式には関係なく論理メッセージ・ツリーからエレメントを選択します。 XPath および XPath 1.0 規格の W3C 定義について詳しくは、XPathを参照してください。 このトピックで使用される用語は、XPath 1.0 の W3C 定義での用語に基づいています。
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 マッピングが定義されていなくても構文エレメントに割り当てることができるので、 ネーム・スペース・プレフィックスの概念はメッセージ・フロー内で生成された文書に対して意味を持ちません。
このため、XMLNS(C) および MRM パーサーはネーム・スペース URI だけを ブローカーおよびユーザー・コード (ESQL またはプラグイン・コード) に対して公開します。ESQL では、ユーザーが独自のマッピングをセットアップして、 長い可能性のあるこれらの URI に対する省略形を作成することが可能です。 これらのマッピングは、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())");