É possível converter os dados de uma forma para outra.
Um exemplo típico de requisito para converter os dados é se os itens forem conhecidos em uma mensagem pelo nomes e em outra mensagem pelos 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 tem duas seções: a primeira seção é uma lista de itens na qual cada item tem 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. Inclua um nó Compute na seguinte transformação:
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
);
A seguinte mensagem de saída é gerada:
<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 poderia ser codificada em um banco de dados ou pode ter sido configurada no LocalEnvironment por um nó Compute anterior.