Muitas vezes é preciso converter dados de um formato para outro. Por exemplo, em uma mensagem, os tipos de itens são conhecidos por nomes e, em outra mensagem, os itens são conhecidos por números. Por exemplo:
Nome do Tipo Código do Tipo Confectionary 2000 Newspapers 3000 Hardware 4000
Considere a seguinte mensagem de entrada:
<Dados> <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>
Essa mensagem possui duas seções: a primeira é uma lista de itens na qual cada item possui um número de catálogo e um tipo; a segunda é uma tabela de conversão entre nomes de tipos descritivos e códigos de tipos numéricos. Se você incluir um nó Compute com a seguinte transformação:
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 );
será gerada a seguinte mensagem de saída:
<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>
No resultado, cada nome de tipo foi convertido em seu código correspondente. Nesse exemplo, os dados e a tabela de conversão estavam na mesma árvore de mensagens, embora isso não seja um requisito. Por exemplo, a tabela de conversão não pôde ser codificada em um banco de dados ou pode ter sido configurada, em LocalEnvironment, por um nó Compute anterior.