如何在XSLT中重复复制节点列表 - 并返回遇到的最后一个节点?

时间:2010-04-28 18:58:15

标签: xslt xslt-2.0

我已经看到很多“重复删除这个xml”的问题,但是每个人都希望第一个节点或节点是相同的。我有一个更大的难题。

我有一个XML文章列表,显示了一个相关的片段:

<item><key>Article1</key><stamp>100</stamp></item>
<item><key>Article1</key><stamp>130</stamp></item>
<item><key>Article2</key><stamp>800</stamp></item>
<item><key>Article1</key><stamp>180</stamp></item>
<item><key>Article3</key><stamp>900</stamp></item>
<item><key>Article3</key><stamp>950</stamp></item>
<item><key>Article4</key><stamp>990</stamp></item>
<item><key>Article5</key><stamp>999</stamp></item>

我想要一个节点列表,其中键是唯一的,并返回 last 实例,而不是第一个:对于特定键的元素,Stamp(整数)总是在增加。理想情况下,我想要“最大的邮票”,但它们总是有序,所以快捷方式是可以的。

期望的结果:(订单真的很重要。)

<item><key>Article2</key><stamp>800</stamp></item>
<item><key>Article1</key><stamp>180</stamp></item>
<item><key>Article3</key><stamp>950</stamp></item>
<item><key>Article4</key><stamp>990</stamp></item>
<item><key>Article5</key><stamp>999</stamp></item>

我对如何获得此列表感到有些困惑。有什么想法吗?

如果重要的话,我正在使用Saxon处理器。

1 个答案:

答案 0 :(得分:1)

简短版本:

不要在Muenchian分组中使用[1],而是使用[last()]