Подтвердить что ты не робот

XPath: Как выбрать node с некоторым атрибутом по индексу?

У меня есть несколько узлов с определенным атрибутом, и мне нужно выбрать один из них по индексу. Например, мне нужно выбрать второй <div> с классом 'test' - //div[@class='test'][2] не работает.

Есть ли способ выбрать node с некоторым атрибутом по индексу? Как это сделать?

4b9b3361

Ответ 1

Это FAQ.

В XPath оператор [] имеет более высокий приоритет (сильнее связывается), чем псевдо-оператор //.

Из-за этого выражение:

//div[@class='test'][2]

выбирает все элементы div, атрибут class - это "test", а кто (элементы div) являются вторым таким дочерним элементом div своего родителя. Это не то, что вы хотите.

Использование

(//div[@class='test'])[2]

Ответ 2

Я полагаю, что в спецификации XML атрибуты не имеют порядка.
Note that the order of attribute specifications in a start-tag or empty-element tag is not significant.
См. здесь Я думаю, что вам лучше всего перегруппировать свою структуру, чтобы порядок атрибутов ничего не описывал. Если вы можете дать более подробную информацию, мы можем предложить предложения.

EDIT: перечитав сообщение, похоже, что вы пытаетесь найти порядок node, а не порядок атрибутов. node разрешен, и ваш синтаксис выглядит ОК вне руки. Какое программное обеспечение вы делаете в этом?