XML メッセージでのデータの変換

データをある形式から別の形式へ変換しなければならないことがしばしばあります。例えば、1 つのメッセージでは、項目のタイプが名前によって示されており、別のメッセージでは、項目が番号によって示されていることがあります。以下に例を示します。

Type Name          Type Code
Confectionary      2000
Newspapers         3000
Hardware           4000

次の入力メッセージをご覧ください。

<Data>
<Items>
<Item>
<Cat>1000</Cat>
<Description>Milk Chocolate Bar</Description>
<Type>Confectionary</Type>
</Item>
<Item>
<Cat>1001</Cat>
<Description>Daily Newspaper</Description>
<Type>NewsPapers</Type>
</Item>
<Item>
<Cat>1002</Cat>
<Description>Kitchen Sink</Description>
<Type>Hardware</Type>
</Item>
</Items>
<TranslateTable>
<Translate>
<Name>Confectionary</Name>
<Number>2000</Number>
</Translate>
<Translate>
<Name>NewsPapers</Name>
<Number>3000</Number>
</Translate>
<Translate>
<Name>Hardware</Name>
<Number>4000</Number>
</Translate>
</TranslateTable>
</Data>

このメッセージには 2 つのセクションがあります。最初のものは項目のリストで、それぞれの項目には、カタログ番号とタイプがあります。2 番目のものは、記述タイプ名と数値タイプ・コードとの間の変換表です。以下の変換で Compute ノードを組み込む場合、

SET OutputRoot.XML.Result.Items.Item[] =
(SELECT M.Cat, M.Description, T.Number As Type
FROM
InputRoot.XML.Data.Items.Item[] As M,
InputRoot.XML.Data.TranslateTable.Translate[] As T
WHERE M.Type = T.Name
);

次の出力メッセージが生成されます。

<Result>
<Items>
<Item>
<Cat>1000</Cat>
<Description>Milk Chocolate Bar</Description>
<Type>2000</Type>
</Item>
<Item>
<Cat>1001</Cat>
<Description>Daily Newspaper</Description>
<Type>3000</Type>
</Item>
<Item>
<Cat>1002</Cat>
<Description>Kitchen Sink</Description>
<Type>4000</Type>
</Item>
</Items>
</Result>

結果では、それぞれのタイプ名が、それに対応するコードに変換されています。この例では、データおよび変換表の両方が、同じメッセージ・ツリーにありましたが、必ずしもそうでなければならないわけではありません。例えば、変換表がデータベース内にコード化されたり、前出の Compute ノードによりローカル環境でセットアップされたりする場合があります。

関連概念
メッセージ・フローの概要
ESQL の概要
メッセージのモデル化
関連タスク
メッセージ・フローの設計
メッセージ・フローの内容の定義
ESQL ファイルの管理
関連資料
Compute ノード
Database ノード
Filter ノード
ESQL 参照
SELECT 関数
SET ステートメント
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 Last updated: 5 01, 2006
ak05790_