Как получить эквивалент max () на MSXML6? - PullRequest
1 голос
/ 07 января 2010

Очевидно, MSXML6 не поддерживает XSLT 2.0, по крайней мере, не функцию max(). Мне нужно выяснить узел, который содержит наибольшее значение среди своих братьев и сестер. Они в произвольном порядке.

Я хочу, чтобы заказ оставался идентичным, поэтому добавление order-by и проверка [0] исключены.

Я хочу сделать это с помощью одного оператора XPath. Я не хочу вызывать шаблоны или использовать более сложную логику, чем эта. Я уверен, что где-то встроены ужасающие MS Scripting Extensions. Eww.

Я думал о:

elem1[count(../elem1[@value < current()/@value]) = 0]

Но это не сработало, как я ожидал (всегда возвращает первый узел). Вы можете придумать еще какую-нибудь изящную магию XPath?

1 Ответ

4 голосов
/ 07 января 2010

Попробуйте

elem1[not(../elem1/@value > @value)]

То есть, вы хотите elem1, для которого это , а не , в случае, если другой elem1 имеет большее значение @value.

Вдохновение от эта удобная страница

...