DFDL パーサーによって解析されるメッセージに適している場合は、ネーム・スペースを使用します。
ターゲット・ネーム・スペースを持つ DFDL スキーマ・ファイルを作成することができます。 その DFDL スキーマで定義されるメッセージはすべて、そのネーム・スペースに属します。 DFDL パーサーがメッセージの 1 つを構文解析する際に、論理メッセージ・ツリーに作成されるエレメントにネーム・スペースが組み込まれます。 エレメントへの ESQL 参照をコーディングする際に、ネーム・スペースを組み込む必要があります。 ネーム・スペースを組み込まない場合、ブローカーは no target ネーム・スペースを検索します。 no target ネーム・スペースでエレメントが見つからないと、ブローカーはメッセージ・モデル・スキーマ・ファイル内の他のすべての既知のネーム・スペースを検索します。 パフォーマンスおよび保全性の理由で、適用可能な場合はどこでもネーム・スペースを指定してください。
ネーム・スペースが使用可能であるときにエレメントを参照する最も効率のよい方法は、ネーム・スペース定数を定義し、その定数を適切な ESQL ステートメントで使用することです。 この手法により、ESQL コードがより読み取りやすく、管理しやすくなります。
DECLARE NAMESPACE ステートメントを使用して定数を次のように定義することができます。
DECLARE ns01 NAMESPACE 'http://www.ns01.com'
SET OutputRoot.DFDL.ns01:MyMessage.ns01:Element1 = InputBody.ns01:MyMessage.ns01:Element1;
ns01 は、宣言される方法のために、ネーム・スペースとして正しく解釈されます。
また、CHARACTER 変数を使ってネーム・スペースを宣言することもできます。
DECLARE ns02 CHARACTER 'http://www.ns02.com'
SET OutputRoot.DFDL.{ns02}:MyMessage.{ns02}:Element1 = InputBody.{ns02}:MyMessage.{ns02}:Element1;
このメソッドを使用する場合、宣言される変数を中括弧で囲んで、確実にネーム・スペースとして解釈されるようにすることが必要です。
CHARACTER 変数が変更されることが考えられる場合、CONSTANT CHARACTER 宣言を使用することができます。
DECLARE ns03 CONSTANT CHARACTER 'http://www.ns03.com'
SET OutputRoot.DFDL.{ns03}:MyMessage.{ns03}:Element1 = InputBody.{ns03}:MyMessage.{ns03}:Element1;
モジュールまたは関数内で、ネーム・スペース、定数、および変数を宣言できます。 しかし、スキーマ有効範囲 (つまり、モジュール有効範囲の外部) では、ネーム・スペースまたは定数だけを宣言できます。
DFDL でのネーム・スペースの使用について詳しくは、 DFDL v1.0 仕様の「ネーム・スペース」を参照してください。