このトピックでは、XMLNS ドメインに属し、汎用 XML パーサーによって構文解析されるメッセージを処理する場合の情報を提供しています。 XML ドメインの拡張である XMLNS ドメインは、ネームスペースをサポートします。 XML ドメインのメッセージの操作にある XML メッセージに関する指針に従ってください。それとともに、メッセージ本体の内容の操作のトピックにある情報も適用してください。
以下の例は、ESQL を使ってネームスペースを処理する方法を示しています。 この例のメイン・モジュールの先頭ではネームスペース定数を宣言しているため、ESQL ステートメントでネームスペース URI 全体ではなく、接頭部を使用することができます。
このネームスペース定数は ESQL だけに影響を与え、出力メッセージ内の接頭部を制御しません。 生成される出力メッセージ内の接頭部は、ネームスペース宣言によって制御されます。 XML.NamespaceDecl 相関名を使用して、ネームスペース宣言をツリーに組み込むことができます。 その後、そのエレメントを使用して、出力メッセージ内にネームスペース宣言を生成します。
出力メッセージが生成されるとき、エレメントまたは属性を修飾するネームスペースに対応するネームスペース宣言が存在しない場合には、NSn という形式の接頭部のネームスペースが自動生成されます (n は正の整数)。
CREATE COMPUTE MODULE xmlns_doc_flow_Compute CREATE ROUTINE Main() RETURNS BOOLEAN BEGIN CALL CopyMessageHeaders(); -- Declaration of namespace constants DECLARE sp1 NAMESPACE 'http://www.ibm.com/space1'; DECLARE sp2 NAMESPACE 'http://www.ibm.com/space2'; DECLARE sp3 NAMESPACE 'http://www.ibm.com/space3'; -- Namespace declaration to associate prefix 'space1' with the namespace SET OutputRoot.XMLNS.message.(XML.NamespaceDecl)xmlns:space1 = 'http://www.ibm.com/space1'; SET OutputRoot.XMLNS.message.sp1:data1 = 'Hello!'; -- Default Namespace declaration SET OutputRoot.XMLNS.message.sp2:data2.(XML.NamespaceDecl)xmlns = 'http://www.ibm.com/space2'; SET OutputRoot.XMLNS.message.sp2:data2.sp2:subData1 = 'Hola!'; SET OutputRoot.XMLNS.message.sp2:data2.sp2:subData2 = 'Guten Tag!'; SET OutputRoot.XMLNS.message.sp3:data3 = 'Bonjour!'; SET OutputRoot.Properties.MessageDomain = 'XMLNS'; RETURN TRUE; END; CREATE ROUTINE CopyMessageHeaders() BEGIN DECLARE I INTEGER 1; DECLARE J INTEGER CARDINALITY(InputRoot.*[]); WHILE I < J DO SET OutputRoot.*[I] = InputRoot.*[I]; SET I = I + 1; END WHILE; END; END MODULE;
<message xmlns:space1="http://www.ibm.com/space1"> <space1:data1>Hello!</space1:data1> <data2 xmlns="http://www.ibm.com/space2"> <subData1>Hola!</subData1> <subData2>Guten Tag!</subData2> </data2> <NS1:data3 xmlns:NS1="http://www.ibm.com/space3">Bonjour!</NS1:data3> </message>