變換語言 (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>