Generalmente, necesita traducir datos de un formato a otro. Por ejemplo, en un mensaje los tipos de elementos se conocen por los nombres y en otro mensaje los elementos se conocen por números. Por ejemplo:
Type Name Type Code Confectionary 2000 Newspapers 3000 Hardware 4000
Observe el mensaje de entrada siguiente:
<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>
Este mensaje tiene dos secciones: la primera es una lista de Items en los que cada Item tiene un número de catálogo y un tipo, la segunda es una tabla de conversión entre los nombres de tipo descriptivo y los códigos de tipo numérico. Si incluye un nodo Compute con la transformación siguiente:
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 );
se genera el siguiente mensaje de entrada:
<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>
En el resultado, cada nombre de tipo se ha convertido a su código correspondiente. En este ejemplo, tanto los datos como la tabla de conversión estaban en el mismo árbol de mensaje aunque esto no es un requisito. Por ejemplo, la tabla de conversión puede estar codificada en una base de datos o puede haberse configurado en LocalEnvironment mediante un nodo Compute anterior.