Обозначение XPath в значении атрибута
У меня есть следующий XPath для соответствия атрибутам класса:
//span[@class='amount']
Я хочу сопоставить все элементы, у которых есть атрибут класса "количество", но также могут иметь и другие классы. Я думал, что смогу сделать это:
//span[@class='*amount*']
но это не работает... как я могу это сделать?
Ответы
Ответ 1
Используйте следующее выражение:
//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
, но не последний.
Ответ 2
Вам нужно использовать метод contains. См. Как использовать XPath содержит() здесь? и http://www.exampledepot.com/egs/org.w3c.dom/xpath_GetElemByAttr.html
//span[contains(@class,'amount')]