2015-11-20 2 views
0

Я даже не знаю, как описать это :)Xpath: Две объединенные коллекции?

У меня есть куча div с, с аналогичными идентификаторами, которые случайным образом часть добавляется в каждую (случайная часть различна для каждой сессии). и глубоко вложили в одну из них пучку ящиков ввода радио, без чего я могу привязать (также у всего дерева под div нет уникальных атрибутов, к которым я могу привязать).

Мне нужен первый переключатель. Я получаю необходимый div с (//div[contains(@id,'div-question')])[2], и я думал, что смогу продолжить его с подобной конструкцией, но я не могу понять, как это сделать. Я также устал следующее:

(//div[contains(@id,'div-question')])[2]//input[@type='radio' and position() = 1] 

но вернуть мне все радио-кнопки, а не только первый из них (я использую FirePath из FireBug - это может быть, это ошибка?)

Итак, как Я присоединяюсь к двум поисковым запросам //...?

+0

Вы можете разместить пример HTML на некоторых веб-сайт, таких как jsfiddle? –

+0

@IlyaKogan - https://jsfiddle.net/cvy5voae/, thnx – flamey

ответ

3

//x[position()=1] возвращает каждый потомок x, являющийся первым дочерним элементом его родителя. Чтобы выбрать первого потомка x, вам понадобится (//x)[position()=1]. При сложном пути становится проще использовать ось потомков явно, а не в // стенографии:

descendant::div[contains(@id,'div-question')][2] 
    /descendant::input[@type='radio'][1] 
Смежные вопросы