【发布时间】:2020-03-27 15:16:03
【问题描述】:
我想根据 XML 标记值对 XML 文件进行分组。下面是我的输入 XML。
<Root>
<GroupNumber>3</GroupNumber>
<EDICustomer>
<Company>IWS</Company>
<Customer>150</Customer>
<CreationDate>2020-03-15T10:29:08.813</CreationDate>
<CreationTime>2020-03-15T10:29:08.813</CreationTime>
<EDICustomerLine>
<Barcode>447896130245</Barcode>
<ItemDescription>Medium</ItemDescription>
<Warehouse>B01</Warehouse>
<Status>12</Status>
</EDICustomerLine>
<EDICustomerLine>
<Barcode>447896130245</Barcode>
<ItemDescription>Medium</ItemDescription>
<Warehouse>B01</Warehouse>
<Status>12</Status>
</EDICustomerLine>
<EDICustomerLine>
<Barcode>447896130245</Barcode>
<ItemDescription>Medium</ItemDescription>
<Warehouse>B01</Warehouse>
<Status>12</Status>
</EDICustomerLine>
<EDICustomerLine>
<Barcode>447896130245</Barcode>
<ItemDescription>Medium</ItemDescription>
<Warehouse>B01</Warehouse>
<Status>12</Status>
</EDICustomerLine>
</EDICustomer>
</Root>
我不知道会有多少 EDICustomerLine 标记。如果 GroupNumber 值大于 EDICustomerLine 标签的数量,则保留 EDICustomer 子标签,但如果 GroupNumber 小于 EDICustomerLine 标签,我们必须根据 GroupNumber 标签值拆分 EDICustomerLine 标签。所以在这种情况下,预期的 XML 将如下所示。
<Root>
<EDICustomer>
<Company>IWS</Company>
<Customer>150</Customer>
<CreationDate>2020-03-15T10:29:08.813</CreationDate>
<CreationTime>2020-03-15T10:29:08.813</CreationTime>
<EDICustomerLine>
<Barcode>447896130245</Barcode>
<ItemDescription>Medium</ItemDescription>
<Warehouse>B01</Warehouse>
<Status>12</Status>
</EDICustomerLine>
<EDICustomerLine>
<Barcode>447896130245</Barcode>
<ItemDescription>Medium</ItemDescription>
<Warehouse>B01</Warehouse>
<Status>12</Status>
</EDICustomerLine>
<EDICustomerLine>
<Barcode>447896130245</Barcode>
<ItemDescription>Medium</ItemDescription>
<Warehouse>B01</Warehouse>
<Status>12</Status>
</EDICustomerLine>
</EDICustomer>
<EDICustomer>
<Company>IWS</Company>
<Customer>150</Customer>
<CreationDate>2020-03-15T10:29:08.813</CreationDate>
<CreationTime>2020-03-15T10:29:08.813</CreationTime>
<EDICustomerLine>
<Barcode>447896130245</Barcode>
<ItemDescription>Medium</ItemDescription>
<Warehouse>B01</Warehouse>
<Status>12</Status>
</EDICustomerLine>
</EDICustomer>
</Root>
第一个 EDICustomer 父标记包含 Company、Customer、CreationDate、CreationTime 和 3,基于 Group 编号值。就像第二个 EDICustomer 应该包含 3 个或更少的标签。我们不知道会有多少 EDICustomerLine 标签和 Group Number 的值。还有
<Company>IWS</Company>
<Customer>150</Customer>
<CreationDate>2020-03-15T10:29:08.813</CreationDate>
<CreationTime>2020-03-15T10:29:08.813</CreationTime>
以上部分应在所有 EDICustomer 组中重复(如果我们找到一种方法,可以根据组号循环 EDICustomerLine)。
首先我想知道这种情况在 XSLT 中是否可行。
如果可以的话,你们能帮帮我吗?
【问题讨论】:
标签: xml formatting grouping xslt-1.0 xslt-2.0