【发布时间】:2013-08-27 13:14:16
【问题描述】:
我对 XSLT 有非常基本的了解,目前我正在努力实现一些我仍在努力弄清楚是否可能的目标。
可以是 XSLT 1.0 或 2.0
基本上这是我的 XML 的结构
<?xml version="1.0" encoding="windows-1252"?>
<Root>
<DataPage>
<Record>
<TEMP>xxx</TEMP>
<DEBITNO>6250281</DEBITNO>
<DOSSIERNUMMERINT>2012365</DOSSIERNUMMERINT>
<ID>0123456789Z60</ID>
<DATE>31/01/2013</DATE>
<YEAR>2006</YEAR>
<DESC>Test Item 1</DESC>
<AMOUNT> 38170.0000000</AMOUNT>
<HEAD>123</HEAD>
</Record>
</DataPage>
<DataPage>
<Record>
<TEMP>xxx</TEMP>
<DEBITNO>6250281</DEBITNO>
<DOSSIERNUMMERINT>2012365</DOSSIERNUMMERINT>
<ID>0123456789Z70</ID>
<DATE>22/02/2013</DATE>
<YEAR>2006</YEAR>
<DESC>Test Item 2</DESC>
<AMOUNT> 14410.0000000</AMOUNT>
<HEAD>123</HEAD>
</Record>
</DataPage>
<DataPage>
<Record>
<TEMP>xxx</TEMP>
<DEBITNO>3849322</DEBITNO>
<DOSSIERNUMMERINT>20132394</DOSSIERNUMMERINT>
<ID>34958701223Z20</ID>
<DATE>06/01/2013</DATE>
<YEAR>2006</YEAR>
<DESC>Test Item 1</DESC>
<AMOUNT> 33811.0000000</AMOUNT>
<HEAD>567</HEAD>
</Record>
</DataPage>
</Root>
我希望输出如下
<?xml version="1.0" encoding="windows-1252"?>
<Root>
<DataPage>
<Record>
<TEMP>xxx</TEMP>
<DEBITNO>6250281</DEBITNO>
<DOSSIERNUMMERINT>2012365</DOSSIERNUMMERINT>
<Line>
<ID>0123456789Z60</ID>
<DATE>31/01/2013</DATE>
<YEAR>2006</YEAR>
<DESC>Test Item 1</DESC>
<AMOUNT> 38170.0000000</AMOUNT>
</Line>
<Line>
<ID>0123456789Z70</ID>
<DATE>22/02/2013</DATE>
<YEAR>2006</YEAR>
<DESC>Test Item 2</DESC>
<AMOUNT> 14410.0000000</AMOUNT>
</Line>
<HEAD>123</HEAD>
</Record>
</DataPage>
<DataPage>
<Record>
<TEMP>xxx</TEMP>
<DEBITNO>3849322</DEBITNO>
<DOSSIERNUMMERINT>20132394</DOSSIERNUMMERINT>
<Line>
<ID>34958701223Z20</ID>
<DATE>06/01/2013</DATE>
<YEAR>2006</YEAR>
<DESC>Test Item 1</DESC>
<AMOUNT> 33811.0000000</AMOUNT>
</Line>
<HEAD>567</HEAD>
</Record>
</DataPage>
</Root>
所以逻辑是合并具有相同 DEBITNO 的所有记录。
合并的规则是除了 ID、日期、年份、DESC 和 AMOUNT 之外的所有内容都可以从第一次出现
ID、Date、Year、DESC 和 AMOUNT 需要放在一个标签中,因此如果有 2 条记录具有相同的 DEBITNO,则将有 2 个行项目,如果有 5 条记录具有相同的 DEBITNO,则结果记录将有 5 个订单项。
我希望这是有道理的。
这样的事情可能吗?
问候,
【问题讨论】:
标签: xml xslt merge data-manipulation