MRM パーサーによって構文解析されたメッセージには、ネーム・スペース・サポートを活用することができます。
メッセージのエレメントにアクセスしたいとき、ネーム・スペースが使用可能であれば、エレメントへの ESQL 参照をコーディングする際に、ネーム・スペースを組み込む必要があります。 そうしない場合は、ブローカーが notarget ネーム・スペースを検索します。 notarget ネーム・スペースにエレメントが見つからないと、ブローカーはメッセージ・ディクショナリー (つまり、デプロイされたメッセージ・セット) 内の他のすべての既知のネーム・スペースを検索します。 パフォーマンスおよび保全性の理由で、適用可能な場合はどこでもネーム・スペースを指定してください。
ネーム・スペースが使用可能であるときにエレメントを参照する最も効率のよい方法は、ネーム・スペース定数を定義し、これを適切な ESQL ステートメントで使用することです。 これで、ESQL コードがより読み取りやすく、管理しやすくなります。
DECLARE NAMESPACE ステートメントを使用して定数を次のように定義することができます。
DECLARE ns01 NAMESPACE 'http://www.ns01.com' . . SET OutputRoot.MRM.Element1 = InputBody.ns01:Element1;
ns01 は、宣言される方法のために、ネーム・スペースとして正しく解釈されます。
また、CHARACTER 変数を使ってネーム・スペースを宣言することもできます。
DECLARE ns02 CHARACTER 'http://www.ns02.com' . . SET OutputRoot.MRM.Element2 = InputBody.{ns02}:Element2;
このメソッドを使用する場合、宣言される変数を中括弧で囲んで、確実にネーム・スペースとして解釈されるようにすることが必要です。
CHARACTER 変数が変更されることが考えられる場合、CONSTANT CHARACTER 宣言を使用することができます。
DECLARE ns03 CONSTANT CHARACTER 'http://www.ns03.com' . . SET OutputRoot.MRM.Element3 = InputBody.{ns03}:Element3;
モジュールまたは関数内で、ネーム・スペース、定数、および変数を宣言できます。 しかし、スキーマ有効範囲 (つまり、モジュール有効範囲の外部) では、ネーム・スペースまたは定数だけを宣言できます。
ビデオ のサンプルは、ネーム・スペースの使用のより詳細な例を提供します。
ネーム・スペースはバージョン 2.1 ではサポートされていないため、ネーム・スペースを利用するメッセージ・セットまたはメッセージ・フローをバージョン 2.1 ブローカーへデプロイすることはできません。