尝试使用 XSLT 在一个“记录”下动态组合/分组具有相同“invoice_id”值的行项目(标题、行、费用)。
在输入的 XML 中,有多个项目,例如 Header、Line、Charge,它们的出现次数是无限的。
在输出 XML 中,我们尝试将发票 ID 相同的 Header、Line 和 Charges 分组到一个父节点“Record”下。父节点“记录”重复的次数与输入 XML 中的发票 ID 一样多。
请在下面找到输入和预期输出:
输入 XML 输入 XML 如下所示:
<?xml version="1.0" encoding="utf-8"?>
<ns:MT_OkayToPay_Source xmlns:ns="http://kpmg.com/xi/Coupa/OkayToPay">
<Header>
<type>Header</type>
<invoice_id>5</invoice_id>
</Header>
<Header>
<type>Header</type>
<invoice_id>6</invoice_id>
</Header>
<Line>
<type>Line</type>
<invoice_id>5</invoice_id>
</Line>
<Line>
<type>Line</type>
<invoice_id>6</invoice_id>
</Line>
<Charge>
<type>Charge</type>
<invoice_id>5</invoice_id>
<invoice_charge_invoice_id>10</invoice_charge_invoice_id>
</Charge>
<Charge>
<type>Charge</type>
<invoice_id>5</invoice_id>
<invoice_charge_invoice_id>11</invoice_charge_invoice_id>
</Charge>
<Charge>
<type>Charge</type>
<invoice_id>6</invoice_id>
<invoice_charge_invoice_id>13</invoice_charge_invoice_id>
</Charge>
<Charge>
<type>Charge</type>
<invoice_id>6</invoice_id>
<invoice_charge_invoice_id>14</invoice_charge_invoice_id>
</Charge>
</ns:MT_OkayToPay_Source>
输出 XML 预期的输出如下
<?xml version="1.0" encoding="utf-8"?>
<ns:MT_OkayToPay_Source xmlns:ns="http://kpmg.com/xi/Coupa/OkayToPay">
<Record>
<Header>
<type>Header</type>
<invoice_id>5</invoice_id>
</Header>
<Line>
<type>Line</type>
<invoice_id>5</invoice_id>
</Line>
<Charge>
<type>Charge</type>
<invoice_id>5</invoice_id>
<invoice_charge_invoice_id>10</invoice_charge_invoice_id>
</Charge>
<Charge>
<type>Charge</type>
<invoice_id>5</invoice_id>
<invoice_charge_invoice_id>11</invoice_charge_invoice_id>
</Charge>
</Record>
<Record>
<Header>
<type>Header</type>
<invoice_id>6</invoice_id>
</Header>
<Line>
<type>Line</type>
<invoice_id>6</invoice_id>
</Line>
<Charge>
<type>Charge</type>
<invoice_id>6</invoice_id>
<invoice_charge_invoice_id>13</invoice_charge_invoice_id>
</Charge>
<Charge>
<type>Charge</type>
<invoice_id>6</invoice_id>
<invoice_charge_invoice_id>14</invoice_charge_invoice_id>
</Charge>
</Record>
</ns:MT_OkayToPay_Source>
请帮忙。