можно выбрать несколько вариантов с помощью xpath? - PullRequest
6 голосов
/ 11 октября 2009
/html/body/form/select/option[@val = '1' and @val = '3']

так что значит выбрать первый и третий вариант в форме множественного выбора?

Ответы [ 3 ]

4 голосов
/ 11 октября 2009

Вы имели в виду or?

/html/body/form/select/option[@val = '1' or @val = '3']

Это должно выбрать оба элемента. Используя and, вы пытаетесь выбрать элемент, для которого val равно 1 и 3, что не будет работать. : -)

1 голос
/ 11 октября 2009

Для ясности, под select вы подразумеваете, что он возвращает эти узлы в результатах, верно? На самом деле не выбирает его в DOM?

В любом случае, вам нужно следующее:

 /html/body/form/select/option[1|3]

или

 /html/body/form/select/option[position()=1|postion()=3]

Обратите внимание на использование |, означающего "или", вы не хотите использовать "и", потому что это означает, что вы хотите, чтобы все результаты, которые оба в позициях 1 и 3, что невозможно. Вам нужны все результаты, которые находятся в либо в положении 1 или 3.

0 голосов
/ 11 октября 2009

Почти. Предикат (все в квадратных скобках) задает условие для включения определенного узла в результирующий набор, и для любого одного элемента невозможно иметь значение val равное 1 и 3 одновременно , Однако если вы замените and на or, выражение будет соответствовать любому узлу, отвечающему любому из критериев:

/html/body/form/select/option[@val = '1' or @val = '3']

Примечание: если вы хотите выбирать узлы на основе их положения, а не значений атрибутов, вы можете использовать функцию position() внутри предиката.

...