Как получить элемент TOP N, соответствующий условию с помощью XPath
Вопрос
У меня есть такой 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
, а затем фильтрует этот список по позиции, если необходимо.