Как я могу проигнорировать первый элемент и получить отдых элементов?
<ul>
<li><a href="#">some link</a></li>
<li><a href="#">some link 2</a></li>
<li><a href="#">link i want to find</a></li>
</ul>
Спасибо
если вы хотите игнорировать "первый" элемент только тогда:
//li[position()>1]
or
(//a)[position()>1]
если вы хотите только последний (как кажется в вашем примере):
//li[last()]
or
(//a)[last()]
Вы можете использовать position ()
, чтобы пропустить «первый», но в зависимости от того, какой элемент вас интересует и какой контекст таков, что вам может потребоваться небольшое изменение вашего XPATH.
Например, если вы хотите обратиться ко всем элементам li
и получить все, кроме первого, вы можете использовать:
//li[position()>1]
, и он будет работать должным образом, возвращая все li
, кроме первого.
Однако, если вы хотите адресовать все элементы a
, вам необходимо немного изменить XPATH.В контексте выражения // a [position ()> 1]
каждый из элементов a
будет иметь position ()
из 1 и last ()
вернет true. Таким образом, он всегда будет возвращать каждый a
и не будет пропускать первый.
Вам нужно заключить выражение, которое выбирает a
в круглые скобки, чтобы сгруппировать их в набор узлов, а затем применить фильтр предикатов к позиции.
(// a) [position ()> 1]
В качестве альтернативы вы также можете использовать такое выражение:
//a[preceding::a]
Это найдет все элементы a
, кроме первого (поскольку а
предшествует первому).