evaluateの第2引数contextNodeの罠

てっきり、そのcontextNode以下のノードのみが評価対象となると思い込んでしまった。

第2引数は単にドキュメント中の初期位置を指定するだけで、サブグラフを与えたりするわけではない。

document.evaluate('../*', document.getElementById("menu"), null, 7, null).snapshotItem(0).nodeName
// -> "DIV"

とか普通にできる。

第2引数の指定を生かすには

  • 頭に.をつける
  • 頭に/をつけずに、decendant::ほかを使う

などする。

http://mayokara.info/note/view/228

なんだと。

追記:2008.11.24

コンテキストノード配下の'a'や'div'要素を取得する場合は

 .//a
 .//div[@class='hoge']

という感じになる