XML メッセージ内のネーム・スペースは、XMLNSC パーサーと XMLNS パーサーによりサポートされます。 ネーム・スペースは XML パーサーではサポートされません。
構文解析
XMLNS パーサーと XMLNSC パーサーは、文書にネーム・スペースが含まれているかどうかにかかわらず、すべての整形式 XML 文書を構文解析できます。 エレメントまたは属性にネーム・スペースがある場合、それらのネーム・スペースはメッセージ・ツリー内のエレメントと属性に適用されます。 ネーム・スペース接頭部マッピングもメッセージ・ツリー内に保持され、メッセージ・ツリーを直列化して XML に戻す場合に使用されます。
- 入力 XML 内のエレメントまたは属性にネーム・スペースがある場合、メッセージ・ツリー内の対応するノードにもネーム・スペースがあります。
- エレメントにネーム・スペース宣言 (xmlns 属性) が含まれている場合、その接頭部とネーム・スペース URI を含む子エレメントがメッセージ・ツリー内で作成されます。
メッセージがメッセージ・フローを通って受け渡されている間にも、ネーム・スペースおよびネーム・スペース・マッピングは、メッセージ・ブローカーが提供する ESQL または他のいずれかの変換テクノロジーを使用して変更できます。
書き込み
ネーム・スペースとその接頭部は構文解析時にメッセージ・ツリー内に保持され、XMLNS パーサーおよび XMLNSC パーサーがメッセージ・ツリーを XML ビット・ストリームに変換するときに使用されます。
- メッセージ・ツリーを直列化するときに、パーサーは各 XML エレメントのネーム・スペース宣言をスキャンします。 検出された場合、それらを使用して出力文書内のネーム・スペース接頭部を選択します。
- メッセージ・ツリー内のエレメントにネーム・スペースがあるが、そのネーム・スペース URI に有効範囲内のネーム・スペース宣言がない場合、有効なネーム・スペース接頭部が自動的に生成され、出力 XML で使用されます。 自動生成される接頭部は、NS1、NS2 などの形式になります。
ヒント: メッセージ・ツリー内のエレメントに、「デフォルトのネーム・スペース」宣言である子エレメントがある場合、エレメントのすべての子 (XML エレメントであっても XML 属性であっても、どんなネストの深さでも) は、必ずネーム・スペースを持ちます。 この規則が実施されない場合、メッセージ・ブローカーはメッセージ・ツリーに対して正しい XML 出力を生成できません。