【发布时间】:2011-10-13 20:21:59
【问题描述】:
我收到了一个格式如下定义的 XML。我正在编写一些代码来转换 XML,使其只有特定的节点会被展平。
<TransactionRequest>
<OrderRequests>
<OrderRequest>
<ReferenceNumber>1234567</ReferenceNumber>
<TransactionTime>2010-11-16T00:00:00-08:00</TransactionTime>
<IsRush>true</IsRush>
<ShippingAddress>
<Name>Tom Hanks</Name>
<Address1>1123 Canada Way</Address1>
<City>Burnaby</City>
<Province>BC</Province>
<PostalCode>V3B13B</PostalCode>
<HomePhone>6048871121</HomePhone>
<BusinessPhone>6041232342</BusinessPhone>
</ShippingAddress>
<ProgramType>C2</ProgramType>
<Comments>Deliver to the receptionist</Comments>
<Items>
<Item>
<Sku>UN10004</Sku>
<Quantity>2</Quantity>
</Item>
<Item>
<Sku>UN980011</Sku>
<Quantity>1</Quantity>
</Item>
</Items>
</OrderRequest>
</OrderRequests>
<TraceRequests>
<TraceRequest>
<ReferenceNumber>23432345</ReferenceNumber>
<TransactionTime>2010-11-16T00:00:00-08:00</TransactionTime>
<OriginalReferenceNumber>1234567</OriginalReferenceNumber>
<Comments>Trace Items</Comments>
<TraceItems>
<TraceItem>
<Sku>UN10004</Sku>
<Quantity>2</Quantity>
<ShipmentNumber>CM88888990</ShipmentNumber>
</TraceItem>
<TraceItem>
<Sku>UN980011</Sku>
<ProductCode>AA0091</ProductCode>
<Quantity>1</Quantity>
<ShipmentNumber>DDP123123123</ShipmentNumber>
</TraceItem>
</TraceItems>
</TraceRequest>
</TraceRequests>
</TransactionRequest>
我希望结果看起来像下面的 XML。不同之处在于,在此 XML 中,TraceRequest 节点将被拆分为每个 Items/Item 节点,方法是为每个 Items/Item 复制一次父信息。
<?xml version="1.0"?>
<TransactionRequest>
<OrderRequests>
<OrderRequest>
<ReferenceNumber>1234567</ReferenceNumber>
<TransactionTime>2010-11-16T00:00:00-08:00</TransactionTime>
<IsRush>true</IsRush>
<ShippingAddress>
<Name>Tom Hanks</Name>
<Address1>1123 Canada Way</Address1>
<City>Burnaby</City>
<Province>BC</Province>
<PostalCode>V3B13B</PostalCode>
<HomePhone>6048871121</HomePhone>
<BusinessPhone>6041232342</BusinessPhone>
</ShippingAddress>
<ProgramType>C2</ProgramType>
<Comments>Deliver to the receptionist</Comments>
<Items>
<Item>
<Sku>UN10004</Sku>
<Quantity>2</Quantity>
</Item>
<Item>
<Sku>UN980011</Sku>
<Quantity>1</Quantity>
</Item>
</Items>
</OrderRequest>
</OrderRequests>
<TraceRequests>
<TraceRequest>
<ReferenceNumber>23432345</ReferenceNumber>
<TransactionTime>2010-11-16T00:00:00-08:00</TransactionTime>
<OriginalReferenceNumber>1234567</OriginalReferenceNumber>
<Comments>Trace Items</Comments>
<Sku>UN10004</Sku>
<Quantity>2</Quantity>
<ShipmentNumber>CM88888990</ShipmentNumber>
</TraceRequest>
<TraceRequest>
<ReferenceNumber>23432345</ReferenceNumber>
<TransactionTime>2010-11-16T00:00:00-08:00</TransactionTime>
<OriginalReferenceNumber>1234567</OriginalReferenceNumber>
<Comments>Trace Items</Comments>
<Sku>UN980011</Sku>
<ProductCode>AA0091</ProductCode>
<Quantity>1</Quantity>
<ShipmentNumber>DDP123123123</ShipmentNumber>
</TraceRequest>
</TraceRequests>
</TransactionRequest>
我似乎无法生成 XSLT 来仅展平 TraceRequest 元素的特定子节点元素。
【问题讨论】: