XPATH って なんですか



XPathとは、/html/descendant::li[@class="navigation"]という風な「式」でXMLノードを特定する技術だ。XPathの書き方を新たに憶える必要はあるが、これを使えば、複雑な条件に合致するノードのリストを一発で取得することができる。

注意点も書いておく。

  • Geckoの場合、text/htmlな文書では要素名は全て大文字として解釈される(これはDOMの仕様による)。なので、XPath式の中でも大文字で要素名を書かないといけない。XMLとしてパースされた場合と両方に対応させたいなら、こんな風に書かないといけない。descendant::*[local-name()="DIV" or local-name()="div"]

  • 軸としてancestorやprecending-siblingなどを指定しても、取得できるノードのリストは文書順で並んでいる。例えば、あるリンクに対してancestor::*と指定しても、「親のli要素」「その親のul要素」「その親のdiv要素」……という順番でなく、「ルートのhtml要素」「その子のbody要素」「その子のdiv要素」……という順番で結果が帰ってくる。Geckoでは、これはevaluate()メソッドに渡す型の指定が何であっても変わらない。

というわけで、上記の点に気をつけてXPathをばしばし活用しちゃってください。

ということだそうです。
W3C 邦訳

CSS3あたりをXPath1.0あたりに変換する表


JavaScript-XPath をリリースしました!さあ、あなたも XPath を使おう!(解説付き) - IT戦記