Есть ли выражение XPath DRYer для объединения?

Это отлично работает для поиска элементов HTML, похожих на кнопки (намеренно упрощено):

  //button[text()='Buy']
| //input[@type='submit' and @value='Buy']
| //a/img[@title='Buy']

Теперь мне нужно ограничить это контекст. Например, кнопка «Купить», которая появляется внутри помеченного поля:

//legend[text()='Flubber']

И это работает (.. приводит нас к содержащемуся набору полей):

  //legend[text()='Flubber']/..//button[text()='Buy']
| //legend[text()='Flubber']/..//input[@type='submit' and @value='Buy']
| //legend[text()='Flubber']/..//a/img[@title='Buy']

Но есть ли способ упростить это? К сожалению, такого рода вещи не работают:

//legend[text()='Flubber']/..//(
  button[text()='Buy']
| input[@type='submit' and @value='Buy']
| a/img[@title='Buy'])

(Обратите внимание, что это для XPath в браузере, поэтому решения XSLT не помогут.)

5
задан Chris Noe 1 April 2011 в 17:02
поделиться