データをある形式から別の形式へ変換しなければならないことがしばしばあります。例えば、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 ノードによりローカル環境でセットアップされたりする場合があります。