我在另一个问题上评论了当前的问题:现在更复杂,因为需要重复。举例说明:
<root>
<c>cccc</c>
<a gr="g1_1">aaaa</a> <b gr="g1_1">1111</b>
<a gr="g2_1" into="g1_1">bbbb</a> <b gr="g2_1" into="g1_1">56565</b>
<a gr="g3_1" into="g2_1">BB</a> <b gr="g3_1" into="g2_1">55</b>
<a gr="g1_2">xxxx</a> <b gr="g1_2">2222</b>
<a gr="g2_2" into="g1_2">wwww</a> <b gr="g2_2" into="g1_2">3433</b>
</root>
必须用fold
标签括起来,导致(在 XSLT 之后):
<root>
<c>cccc</c>
<fold>
<a gr="g1_1">aaaa</a> <b gr="g1_1">1111</b>
<fold><a gr="g2_1" into="g1_1">bbbb</a>
<b gr="g2_1" into="g1_1">56565</b>
<fold><a gr="g3_1" into="g2_1">BB</a>
<b gr="g3_1" into="g2_1">55</b>
</fold>
</fold>
</fold>
<fold>
<a gr="g1_2">xxxx</a> <b gr="g1_2">2222</b>
<fold><a gr="g2_2" into="g1_2">wwww</a>
<b gr="g2_2" into="g1_2">3433</b>
</fold>
</fold>
</root>
笔记
该示例有一个“分组标签”(@gr
)和一个“超级分组”标签(@into
指向父组)。
@gr
是唯一组的ID,也用语法表示“折叠级别” ,"g" level "_" level-id
因此,如果需要我们可以为折叠级别添加显式属性......或者可以添加辅助结构(gdef
作为输入元数据),
<gdef>
<group gr="g1_1" level="1" into=""/>
<group gr="g2_1" level="2" into="g1_1"/>
<group gr="g3_1" level="3" into="g2_1"/>
<group gr="g1_2" level="1" into=""/>
<group gr="g2_2" level="2" into="1_2"/>
</gdef>
或等等。