XMLNSC パーサーは、ネーム・スペースのフル・サポートを提供します。
XMLNSC パーサーは、ネーム・スペース宣言を表すために、以下のフィールド・タイプを使用します。 メッセージ・ツリー中でネーム・スペース宣言を作成するときには、この表にリストされているフィールド・タイプ定数を使用します。
XML 構成 | XMLNSC フィールド・タイプ定数 | 値 |
---|---|---|
ネーム・スペース宣言 |
|
|
XML 構成 | XMLNSC フィールド・タイプ定数 | 目的 |
---|---|---|
ネーム・スペース宣言 | XMLNSC.NamespaceDecl | 単一引用符と二重引用符内のネーム・スペース宣言を突き合わせます |
DECLARE space1 NAMESPACE 'namespace1';
SET OutputRoot.XMLNSC.space1:root.(XMLNSC.NamespaceDecl)xmlns:ns1 = space1;
SET OutputRoot.XMLNSC.space1:root.space1:example = 'ABCDE';
これによって、次の XML メッセージが作成されます。 <ns1:root xmlns:ns1="namespace1">
<ns1:example>ABCDE</ns1:example>
</ns1:root>
ネーム・スペース定数 space1 は、ESQL のローカル変数にすぎないことに注意してください。NameSpaceDecl エレメントが定義し、出力メッセージに表示されるネーム・スペース接頭部 ns1 に、これが影響を与えることはありません。 しかし、ここで示すように、space1 は、ns1 の NameSpaceDecl を初期化するために使用できます。 これによって、実際には非常に長いストリングになるのが一般的な、ネーム・スペース URI (この例では「namespace1」) を複写する必要がなくなります。
DECLARE space1 NAMESPACE 'namespace1';
SET OutputRoot.XMLNSC.space1:root.(XMLNSC.NamespaceDecl)xmlns = space1;
SET OutputRoot.XMLNSC.space1:root.space1:example = 'ABCDE';
これによって、次の XML メッセージが作成されます。 <root xmlns="namespace1">
<example>ABCDE</example>
</root>
構文エレメント root および example が空でないネーム・スペースを持つ必要のあることに注意してください。 デフォルトのネーム・スペース宣言は、接頭部を持たないすべての子エレメントがネーム・スペース namespace1 にあることを意味します。 DECLARE space1 NAMESPACE 'namespace1';
SET OutputRoot.XMLNSC.root.(XMLNSC.NamespaceDecl)xmlns = space1;
SET OutputRoot.XMLNSC.root.example = 'ABCDE';
この例のようにすると、XMLNSC パーサーはメッセージ・ツリーを作成しようとする際に、メッセージ BIP5014 を出します。 エレメント root および example は両方とも、デフォルトのネーム・スペース宣言の有効範囲内にあります。したがって ESQL では、これらのエレメントは、そのネーム・スペースにバインドされたネーム・スペース接頭部により修飾される必要があります。SET OutputRoot.(XMLNSC.DoubleNamespaceDecl)xmlns:ns2 = space1;
この SET ステートメント例は、ネーム・スペース xmlns に名前 ns2 を使用したネーム・スペース宣言を作成します。CREATE LASTCHILD OF OutputRoot IDENTITY (XMLNSC.DoubleNamespaceDecl)xmlns:ns2 VALUE space1;
CREATE LASTCHILD OF OutputRoot TYPE XMLNSC.DoubleNamespaceDecl NAMESPACE 'xmlns' NAME 'ns2' VALUE space1;
上記の CREATE ステートメントの例も、ネーム・スペース xmlns に名前 ns2 を使用したネーム・スペース宣言を作成します。CREATE LASTCHILD OF OutputRoot TYPE XMLNSC.DoubleNamespaceDecl NAME 'xmlns:ns2' VALUE space1;