Подстановочный знак XPath в значении атрибута - PullRequest
27 голосов
/ 23 декабря 2011

У меня есть следующий XPath для сопоставления атрибутов диапазона класса:

//span[@class='amount']

Я хочу сопоставить все элементы, которые имеют атрибут класса "amount", но также могут иметь и другие классы.Я думал, что смогу сделать это:

//span[@class='*amount*'] 

но это не работает ... как я могу это сделать?

Ответы [ 2 ]

35 голосов
/ 23 декабря 2011

Используйте следующее выражение:

//span[contains(concat(' ', @class, ' '), ' amount ')]

Вы можете использовать contains самостоятельно, но это также будет соответствовать классам, таким как someamount.Проверьте вышеприведенное выражение на следующем входе:

<root>
  <span class="test amount blah"/>
  <span class="amount test"/>
  <span class="test amount"/>
  <span class="amount"/>
  <span class="someamount"/>
</root>

Он выберет первые четыре span элемента, но не последний.

17 голосов
/ 23 декабря 2011

Вы должны использовать метод содержит.См. Как использовать XPath содержит () здесь?

//span[contains(@class,'amount')]

...