您通常需要将数据从一种格式转换成另一种格式。例如,在一条消息中,通过名称可以知道某项的类型,而在另一条消息中,通过号码可以知道某项。例如:
类型名 类型代码 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>
该消息有两部分:第一部分是项的列表,其中每项有一个编目号和类型;第二部分是描述的类型名称和数字类型代码之间的转换表。如果在下列转换中包括 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 节点在本地环境中设置。