XMLNS ドメインのメッセージの操作

このトピックでは、XMLNS ドメインに属し、汎用 XML パーサーによって構文解析されるメッセージを処理する場合の情報を提供しています。 XML ドメインの拡張である XMLNS ドメインは、ネーム・スペースをサポートします。 XML ドメインのメッセージの操作にある XML メッセージに関する指針に従ってください。それとともに、メッセージ本体の内容の操作のトピックにある情報も適用してください。

以下の例は、ESQL を使ってネーム・スペースを処理する方法を示しています。 この例のメイン・モジュールの先頭ではネーム・スペース定数を宣言しているため、ESQL ステートメントでネーム・スペース URI 全体ではなく、接頭部を使用することができます。

このネーム・スペース定数は ESQL だけに影響を与え、出力メッセージ内の接頭部を制御しません。 生成される出力メッセージ内の接頭部は、ネーム・スペース宣言によって制御されます。 XML.NamespaceDecl 相関名を使用して、ネーム・スペース宣言をツリーに組み込むことができます。 その後、そのエレメントを使用して、出力メッセージ内にネーム・スペース宣言を生成します。

出力メッセージが生成されるとき、エレメントまたは属性を修飾するネーム・スペースに対応するネーム・スペース宣言が存在しない場合には、NSn という形式の接頭部のネーム・スペースが自動生成されます (n は正の整数)。

CREATE COMPUTE MODULE xmlns_doc_flow_Compute
CREATE FUNCTION 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 PROCEDURE 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;
この ESQL が処理されると、次の出力メッセージが生成されます。
<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>

名前付き XML エレメントを (複合エレメントの場合はその子孫も) 不透明として 構文解析することも指定できます。つまり、 不透明エレメントの開始タグと終了タグの間に含まれる 実際の XML ビット・ストリームを含む値 (UTF-16 エンコード) で、メッセージ・ツリーに 単一の名前付きエレメントを作成します。このオプションを指定すると、 エレメントの内容がメッセージ・フロー内で重要でない場合に、 パフォーマンスが向上します。

XML エレメントを不透明として構文解析することを指定するには、PARSE 文節で ESQL CREATE ステートメントを使用して XML ドキュメントを構文解析します。PARSE 文節の FORMAT 修飾子を ストリング定数「XMLNS_OPAQUE」 (大/小文字を区別します) に 設定し、PARSE 文節の TYPE 修飾子を不透明として構文解析する XML エレメントの 名前に設定します。TYPE 文節は、ネーム・スペースなしエレメント名を指定する (任意の ネーム・スペースに一致させる) か、ネーム・スペース接頭部または完全ネーム・スペース URI を持つ エレメント名を指定する (特定のネーム・スペースに一致させる) ことができます。

次の例をご覧ください。

DECLARE soap NAMESPACE 'http://schemas.xmlsoap.org/soap/envelope/';

DECLARE BitStream BLOB ASBITSTREAM(InputRoot.XMLNS
                                   ENCODING InputRoot.Properties.Encoding
                                   CCSID InputRoot.Properties.CodedCharSetId);
--No Namespace
  CREATE LASTCHILD OF OutputRoot
    DOMAIN('XMLNS')
          PARSE (BitStream
                 ENCODING InputRoot.Properties.Encoding
                 CCSID InputRoot.Properties.CodedCharSetId
                 FORMAT 'XMLNS_OPAQUE'
                 TYPE 'Body');

--Namespace Prefix
  CREATE LASTCHILD OF OutputRoot
    DOMAIN('XMLNS')
          PARSE (BitStream
                 ENCODING InputRoot.Properties.Encoding
                 CCSID InputRoot.Properties.CodedCharSetId
                 FORMAT 'XMLNS_OPAQUE'
                 TYPE 'soap:Body');

--Namespace URI
  CREATE LASTCHILD OF OutputRoot
    DOMAIN('XMLNS')
          PARSE (BitStream
                 ENCODING InputRoot.Properties.Encoding
                 CCSID InputRoot.Properties.CodedCharSetId
                 FORMAT 'XMLNS_OPAQUE'
                 TYPE '{http://schemas.xmlsoap.org/soap/envelope/}Body');

XML エレメントの 不透明構文解析は XMLNS ドメインのみで使用できます。この指定方法は、将来のリリースで 変更されることがあります。

CREATE およびその使用方法の例の詳細については、CREATE ステートメントを参照してください。

関連概念
メッセージ・フローの概要
XML パーサーおよびドメイン
ESQL の概要
関連タスク
メッセージ・フローの設計
メッセージ・フローの内容の定義
XML ドメインのメッセージの操作
関連資料
ESQL 参照
DECLARE ステートメント
SET ステートメント
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ac17330_