【发布时间】:2021-08-17 00:06:33
【问题描述】:
尝试使用 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>
请帮忙。
【问题讨论】:
-
请就您在尝试完成此操作时遇到的困难提出一个具体问题。否则看起来你只是在找人为你编写代码。---你可以在这里找到几个起点:stackoverflow.com/tags/xslt-grouping/info
-
顺便说一句,如果每张发票都有一个
Header和一个不同的invoice_id,那么这是一个小问题:只需为每个Header创建一个Record并使用key.
标签: xml xslt xslt-2.0 xslt-grouping