变换语言范例

下列范例演示了 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</OrderRef>
		</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 的输出将会是:

<FredsMart>
		<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>