データをある形式から別の形式へ変換することができます。
データ変換が必要とされる典型例としては、あるメッセージでは項目が名前によって示されており、別のメッセージでは番号によって示されているという場合です。 以下に例を示します。
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.XMLNS.Result.Items.Item[] =
(SELECT M.Cat, M.Description, T.Number As Type
FROM
InputRoot.XMLNS.Data.Items.Item[] As M,
InputRoot.XMLNS.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 ノードによりローカル環境でセットアップされたりする場合があります。