リストと反復エレメントの間のマッピング

次のような形式の XML 入力メッセージがあるとします。
   <MRM>
     <inner>abcde fghij 12345</inner>
   </MRM> 
ここで、inner エレメントのタイプは xsd:list であるため、1 つではなく 3 つのストリング値が関連付けられています。
次に示すように、各値が反復エレメントの 1 つのインスタンスに関連付けられる形式で 3 つの値を出力メッセージにコピーする場合、
   <MRM>
     <str1>abcde</str1>
     <str1>fghij</str1>
     <str1>12345</str1>
   </MRM> 
以下のような ESQL 構文は適切に作動すると期待するかもしれません。
   DECLARE D INTEGER;
   SET D = CARDINALITY(InputBody.str1.*[]);
   DECLARE M INTEGER 1;
   WHILE M <= D DO
      SET OutputRoot.MRM.str1[M] = InputBody.inner.*[M];
      SET M = M + 1;
   END WHILE;
しかし、次のステートメントの場合、
	SET OutputRoot.MRM.str1[M] = InputBody.inner.*[M];
ソースからターゲットへのツリー・コピーが要求されます。ターゲット・エレメントがまだ存在しないため、ステートメントはそれを作成し、その値とタイプはソースから設定されます。
したがって、タイプが xsd:list である入力エレメントが与えられている場合に、必要なフォーマットを持つ出力メッセージを作成するには、FIELDVALUE 関数を使用して、ソース・エレメントの値だけを明示的に取り出してください。
	SET OutputRoot.MRM.str1[M] = FIELDVALUE(InputBody.inner.*[M]);
関連タスク
ESQL の開発
メッセージ本体のエレメントへのアクセス
関連資料
SET ステートメント
FIELDVALUE 関数
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
最終更新 : 2009-02-20 12:44:08

ak20820_