web-dev-qa-db-ja.com

属性値のXPathワイルドカード

クラススパンの属性を照合する次のXPathがあります。

//span[@class='amount']

「amount」のクラス属性を持つすべての要素を一致させたいが、他のクラスも持つ可能性がある。私はこれを行うことができると思いました:

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

しかし、それはうまくいきません...どうすればいいですか?

27
Colin Brown

次の式を使用します。

//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>

最初の4つのspan要素を選択しますが、最後の要素は選択しません。

35
Wayne Burkett

Containsメソッドを使用する必要があります。参照 XPath contains()の使用方法はこちら

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

19
Alexei Levenkov