Как дедуплицировать список узлов в XSLT и вернуть последний встреченный узел? - PullRequest
0 голосов
/ 28 апреля 2010

Я видел много вопросов "Дублировать этот 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 (integer) всегда увеличивается для элементов конкретного ключа. В идеале я бы хотел "самый большой штамп", но они всегда в порядке, поэтому ярлык в порядке.

Желаемый результат: (Заказ не действительно имеет значение.)

<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>

Я не совсем понимаю, как получить этот список. Есть идеи?

Я использую саксонский процессор, если это имеет значение.

1 Ответ

1 голос
/ 29 апреля 2010

Краткая версия:

Вместо использования [1] в мюнхенской группировке используйте [last ()]

...