变换语言 (TML) 中的示例数据
该范例演示了 map(映射)命令,其中输入内的单个字段将映射至输出内的单个字段:
<transformation>
<map>
<target>FredsMart/PurchaseOrder/OrderRef</target>
<source>SSC/Payload/SalesOrder/OrderNum</source>
</map>
</transformation>
包含在源中的任何数据,如果没有映射至目标上,则不会输出这些数据。每个字段必须进行特定的映射。如果输入数据如下:
<SSC>
<Payload>
<SalesOrder>
<OrderNum>123456</OrderNum>
<Amount>12.34</Amount>
</SalesOrder>
</Payload>
</SSC>
TML 将生成下列输出:
<FredsMart> <PurchaseOrder>123456</PurchaseOrder> </FredsMart>
在 TML 处理各条命令时,目标会“接合”在一起以创建一个完整的文档结构。所给参数信息的次序并不重要,换言之,目标可在源之前进行设置,反之亦然。另外,各字段会按照所设置的次序写入输出。因此,我们可以对该 TML 进行修改,使范例数据包含金额 (amount) 字段的映射,并在订单号 (OrderNum) 字段前输出:
<transformation>
<map>
<source>SSC/Payload/SalesOrder/Amount</source>
<target>FredsMart/PurchaseOrder/TotalAmount</target>
</map>
<map>
<target>FredsMart/PurchaseOrder/OrderRef</target>
<source>SSC/Payload/SalesOrder/OrderNum</source>
</map>
</transformation>
该 TML 的输出是:
<FresMart>
<PurchaseOrder>
<TotalAmount>12.34</TotalAmount>
<OrderRef>123456</OrderRef>
</PurchaseOrder>
</FredsMart>
同时,TML 还支持单个目标字段具有多个源字段。在这种情况下,各个源将按照 TML 中所提供的次序写入目标内。如这个范例中所述,值将附加上去:
<transformation>
<map>
<target>FredsMart/PurchaseOrder/OrderRef</target>
<source>SSC/Payload/SalesOrder/OrderNum</source>
<source>SSC/Payload/SalesOrder/Amount</source>
</map>
<transformation>
该 TML 的输出是:
<FredsMart>
<PurchaseOrder>
<OrderRef>123456</OrderRef>
</PurchaseOrder>
</FredsMart>