获取相对于节点集的previous-sibling

时间:2010-08-12 07:11:42

标签: xslt-1.0

我按字母顺序查询和排序一组XML元素,我将其应用于模板,以生成按字母顺序排列的列表。我想在这个非常初始的节点前面添加相同的首字母:

A
Abe
Amel
Andrew
B
Bobby
Benny
...

前一个兄弟轴相对于文档而不是节点集。我该怎么办?

1 个答案:

答案 0 :(得分:0)

您在此处描述的是分组问题。在xslt 1中处理分组的标准方法是“Muenchian”方法。这里有一个非常详细的解释: http://www.jenitennison.com/xslt/grouping/muenchian.html

基本思想是创建一个键,指定要分组的内容。在这种情况下,您将使用其名称的第一个字母创建与人员节点匹配的密钥。

然后你编写一个循环遍历人员的循环,并检查每个人是否是第一个匹配给定密钥(第一个字母)的循环。如果是,那么你输入一个分组分隔符。

然后你有一个嵌套循环(或apply-templates),它有一个匹配规则,只接收带有第一个字母的节点。您可以使用xslt:sort对它们进行排序,然后输出它们。

如果您可以发布实际XML的样本(而不仅仅是您想要的输出),那么我可以写一个示例样式表来解析它。