【发布时间】:2011-04-16 14:20:27
【问题描述】:
我有这个 XML 文件:
<Elements>
<Element name="A.B.C.x">
<Child>...</Child>
<Child>...</Child>
<Child>...</Child>
</Element>
<Element name="A.B.C.y">
<Child>...</Child>
<Child>...</Child>
</Element>
<Element name="A.D.E.y">
<Child>...</Child>
</Element>
<Element name="A.D.E.z">
<Child>...</Child>
<Child>...</Child>
<Child>...</Child>
</Element>
</Elements>
我需要创建 XSL 才能得到这个结果:
<Elements>
<Element name="A.B.C">
<LastToken name="x" childCount="3" />
<LastToken name="y" childCount="2" />
</Element>
<Element name="A.D.E">
<LastToken name="y" childCount="1" />
<LastToken name="z" childCount="3" />
</Element>
</Elements>
我仅限于没有扩展的 XSL 1.0,我不知道如何实现结果。
任何帮助表示赞赏。
提前致谢。
编辑:随着一些答案的出现,我看到我必须澄清我的问题/任务:Element 节点的name 属性中的标记不限于一个字符。 'name' 属性的示例值可以是This.Is.Grouping.Target.AndThisIsGroupChild
【问题讨论】:
-
很好的问题,+1。请参阅我的答案以获得完整的解决方案,该解决方案仅对
name属性值的格式做出最小假设。 -
还添加了一个 XSLT 2.0 解决方案,它对
name属性的格式有没有个假设。 -
完全用不假设任何东西的 XSLT 1.0 解决方案取代了 XSLT 1.0 解决方案——这是最一般情况下的完整解决方案! :)