变换语言 (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>