【发布时间】:2013-07-16 08:30:51
【问题描述】:
我有一个如下的 XML。
<Doc>
<row>
<Col1>13820PKS-</Col1>
<Col6>01</Col6>
<Col9>1507462800</Col9>
<Col12>15074628</Col12>
<Col14>4</Col14>
</row>
<row>
<Col1>13820PKS-</Col1>
<Col6>01</Col6>
<Col9>1507462800</Col9>
<Col12>15074629</Col12>
<Col14>5</Col14>
</row>
<row>
<Col1>13820PKS-</Col1>
<Col6>01</Col6>
<Col9>1808502801</Col9>
<Col12>18085021</Col12>
<Col14>1</Col14>
</row>
<row>
<Col1>13820PKS-</Col1>
<Col6>02</Col6>
<Col9>2710004100</Col9>
<Col12>2710004100</Col12>
<Col14>1</Col14>
</row>
</Doc>
文档实际上有超过 2000 行。 最终结果应该是
<Doc>
<ListID id="01">
<MainArt>
<ItemCode>13820PKS-</ItemCode>
<List>
<SubArt>
<ItemCode>1507462800</ItemCode>
<SubArtList>
<row>
<ItemCode>15074628</ItemCode>
<Quantity>4</Quantity>
</row>
<row>
<ItemCode>15074629</ItemCode>
<Quantity>5</Quantity>
</row>
</SubArtList>
</SubArt>
<SubArt>
<ItemCode>1808502801</ItemCode>
<SubArtList>
<row>
<ItemCode>18085021</ItemCode>
<Quantity>1</Quantity>
</row>
</SubArtList>
</SubArt>
</List>
</MainArt>
</ListID>
<ListID id="02">
<MainArt>
<ItemCode>13820PKS-</ItemCode>
<List>
<SubArt>
<ItemCode>2710004100</ItemCode>
<SubArtList>
<row>
<ItemCode>2710004100</ItemCode>
<Quantity>1</Quantity>
</row>
</SubArtList>
</SubArt>
</List>
</MainArt>
</ListID>
</Doc>
我仍处于学习阶段,并不具备使用模板的技能。我尝试使用递归 for-each 循环来做到这一点,但这也没有用。 任何帮助将不胜感激。谢谢
【问题讨论】:
-
您是否要按 Col6 对行进行分组?
-
在 XSLT 1.0 中,您需要使用一种称为 Muenchian Grouping (jenitennison.com/xslt/grouping/muenchian.html) 的技术,这可能会让您在第一次看到它时感到头疼,但这是最好的方法!您能否修改您的问题以显示给定输入的实际预期输出,因为看起来您可能需要在此处进行多个分组。谢谢!
-
感谢您的回复。我知道 Muenchian 分组方法(知道意味着我读过它),但正如你所说,它让我的大脑受伤:)。
-
我还在学习如何实现模板,我认为如果不了解模板实现,我将无法理解“Muenchian Grouping”。我必须做多个分组。 Col12 和 Col14 在 Col9 之下,在 Col1 之下,在 Col6 之下。我知道它有点复杂。第二部分是预期的输出。
-
第二部分显示了预期输出的结构,但不是您真正期望的实际输出,我相信?因此,如果您可以显示当前输入的实际输出,那将有很大帮助。谢谢!