XSLT 1.0 中唯一可移植的分组方法是 Muenchian 方法,其核心是通过 定义键并结合 generate-id() 识别每组首个节点,再用 key() 获取同组全部节点。

XSLT 2.0 的 <for-each-group></for-each-group> 配合 group-by 是最直观的分组方式,而 XSLT 1.0 没有原生分组指令,必须用 Muenchian 方法模拟——它不是“替代方案”,而是 XSLT 1.0 中唯一被广泛验证、可移植的等效实现。
核心原理:用 key + generate-id 实现“首次出现即代表新组”
Muenchian 分组本质是两步走:先定义键(<key></key>),再筛选每个键值下第一个匹配节点。只有这个“首个节点”才触发分组逻辑,其余同组节点通过 key() 函数批量获取。
-
定义键:用
<key name="k" match="book" use="author"></key>建立“作者 → 所有 book 元素”的映射 -
识别组头:用
book[generate-id() = generate-id(key('k', author)[1])]找出每个作者第一次出现的 book -
遍历组内成员:在该节点上下文中调用
key('k', author)拿到全部同作者书籍
典型结构模板(可直接复用)
以下是最简可用骨架,适配任意 XML 结构:
标签: go
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~