Как получить элемент TOP N, соответствующий условию с помощью XPath

StackOverflow https://stackoverflow.com/questions/5899372

  •  29-10-2019
  •  | 
  •  

Вопрос

У меня есть такой XML

общий

Я бы хотел с одним xpath (я нахожусь в контексте С #, а не в шаблоне xslt) получить 2 первых элемента со значением 4, т.е.

общий

с /root/el[position() <= 2 and @value=4] я бы получил 0 элемент, потому что position () основан на родительском узле, а не на текущем подмножестве.

Я могу сделать это на C #, но кажется бесполезным загружать узел 1200, когда мне нужно всего 20.

Спасибо

Это было полезно?

Решение

В сценарии XSLT у меня работает следующее:

общий

Результат - идентификаторы 3 и 4, поэтому код генерирующего кода XPATH должен работать на вас.

Другие советы

Ответ @rsp правильный, но я хотел бы добавить пояснение.Не всегда верно, что [cond1 and cond2] эквивалентен [cond1][cond2].Вам нужна вторая форма.

Ваше выражение:

общий

... выбирает все элементы el, которые имеют атрибут value, равный 4, и чья позиция меньше или равна 2.В вашем документе таких элементов нет.

Вы хотите:

общий

... который сначала выбирает все элементы el с атрибутом value, равным 4 , а затем фильтрует этот список по позиции, если необходимо.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top