2016-04-12 3 views
-1

Я хочу выбрать все элементы в одном дереве, если имя элемента [x или y или z] и имеют определенные атрибуты. Пример, который работает в РНР:Как выбрать определенные элементы с определенными атрибутами с помощью AND в XPath?

xpath = "//*[name()='x' or name()='y' or name()='z'][descendant::w[@attrib][@attrib2='".$variable."']]"; 

Так что я пытаюсь написать его эквивалент в Python 2.7:

xpath = "[//*[//x or //y or //z][descendant::w[@attrib][@attrib2='".{0}."']]".format(variable) 

Но это не работает для меня. На самом деле я не мог понять, почему PHP-код использует имя()? Могу ли я и должен ли я делать то же самое в python?

+0

@Epodax Я удалил тег php. – sheshkovsky

ответ

2

Вместо name()='foo' Я предпочел бы использовать self::foo. Следующий XPath должен быть эквивалентен вашему первому XPath:

xpath = '''//*[self::x or self::y or self::z] 
       [descendant::w[@attrib and @attrib2='{0}']] 
     '''.format(variable) 
Смежные вопросы