上記の回答には問題があるため、この質問に対する正規の回答を書きたいと思います。
私たちの問題
CSSのセレクタ:
.foo
クラスfooを持つ要素を選択します。
XPathでこれをどのように行いますか?
XPathはCSSよりも強力ですが、XPathにはCSSクラスセレクターに相当するネイティブな機能はありません。ただし、解決策があります。
それを行う正しい方法
XPathでの同等のセレクターは次のとおりです。
//*[contains(concat(" ", normalize-space(@class), " "), " foo ")]
関数normalize-spaceは、先頭と末尾の空白を取り除きます(また、空白文字のシーケンスを単一の空白で置き換えます)。
(より一般的な意味で)これはCSSセレクターと同等です。
*[class~="foo"]
これは、クラス属性値が空白で区切られた値のリストであるすべての要素に一致します。値の1つはfooとまったく同じです。
いくつかの明白だが間違った方法
XPathセレクター:
//*[@class="foo"]
動作しません!たとえば、複数のクラスを持つ要素とは一致しないためです。
<div class="foo bar">
また、クラス名の前後に余分な空白がある場合も一致しません。
<div class=" foo ">
「改良された」XPathセレクター
//*[contains(@class, "foo")]
どちらも機能しません!たとえば、要素がfoobarクラスの要素と誤って一致するためです。
<div class="foobar">
クレジットは、私がウェブで見つけたこの問題の最も早い公開された解決策であるこのフェラに行きます:http :
//dubinko.info/blog/2007/10/01/simple-parsing-of-space-seprated-attributes- in-xpathxslt /