我有一个XML,其中包含有关多个记录的信息。
我希望根据匹配的子节点对子元素进行分组。
我需要执行以下操作的XSLT脚本
如果'MainId',我想将所有'info'标签分组为一个'body' 对于多个'body'元素是相同的。我需要这个分组 不论'body'内其他节点中的值如何,都可以完成。
输入XML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Root xmlns="12345">
<Main>
<Header>
<DateTime>2019-02-21- 6:36:43 PM</DateTime>
<NbOfRecords>2</NbOfRecords>
</Header>
<Body>
<Id>1000198</Id>
<Info>
<CustId>
<Id>
<MainId>AB123</MainId>
</Id>
</CustId>
<AddInfo>
<info>
<Amt>
<ActAmt Ccy="Test">149500</ActAmt>
</Amt>
</info>
<info>
<Amt>
<NegAmt Ccy="Test">0</NegAmt>
</Amt>
</info>
</AddInfo>
</Info>
</Body>
<Body>
<Id>1000199</Id>
<Info>
<CustId>
<Id>
<MainId>AB123</MainId>
</Id>
</CustId>
<AddInfo>
<info>
<Amt>
<ActAmt Ccy="Test">16000</ActAmt>
</Amt>
</info>
<info>
<Amt>
<NegAmt Ccy="Test">0</NegAmt>
</Amt>
</info>
</AddInfo>
</Info>
</Body>
<Body>
<Id>1000200</Id>
<Info>
<CustId>
<Id>
<MainId>BC124</MainId>
</Id>
</CustId>
<AddInfo>
<info>
<Amt>
<ActAmt Ccy="GBP">16000</ActAmt>
</Amt>
</info>
<info>
<Amt>
<NegAmt Ccy="GBP">12000</NegAmt>
</Amt>
</info>
</AddInfo>
</Info>
</Body>
</Main>
预期的输出XML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Root xmlns="12345">
<Main>
<Header>
<DateTime>2019-02-21- 6:36:43 PM</DateTime>
<NbOfRecords>2</NbOfRecords>
</Header>
<Body>
<Id>1000198</Id>
<Info>
<CustId>
<Id>
<MainId>AB123</MainId>
</Id>
</CustId>
<AddInfo>
<info>
<Amt>
<ActAmt Ccy="Test">149500</ActAmt>
</Amt>
</info>
<info>
<Amt>
<NegAmt Ccy="Test">0</NegAmt>
</Amt>
</info>
<info>
<Amt>
<ActAmt Ccy="Test">16000</ActAmt>
</Amt>
</info>
<info>
<Amt>
<NegAmt Ccy="Test">0</NegAmt>
</Amt>
</info>
</AddInfo>
</Info>
</Body>
<Body>
<Id>1000200</Id>
<Info>
<CustId>
<Id>
<MainId>BC124</MainId>
</Id>
</CustId>
<AddInfo>
<info>
<Amt>
<ActAmt Ccy="GBP">16000</ActAmt>
</Amt>
</info>
<info>
<Amt>
<NegAmt Ccy="GBP">12000</NegAmt>
</Amt>
</info>
</AddInfo>
</Info>
</Body>
</Main>
这是包含我的输入XML的XSLT:http://xsltfiddle.liberty-development.net/pPzifp9