2007年 10月 03日

XPath でドキュメント順に複数の要素とってくる

たとえば getElementsByTagName だと、"*" わたして自分で配列つくってやるか、それぞれに要素名を渡したあとにドキュメント順にソートしたりしなくちゃいけないけど、XPath のときはそういうのする必要がない。

$X("//body | //html | //link ")
//=> [html, link, link, link, link, link, link, body]

パイプ演算子はオペランドにノード集合をとる。どうでもいいけどパイプとバイブは似てる。

でも true / false をオペランドにしてもエラーがでない。"//html | false" は html をかえすし、"//html | true" もかえす。数値や文字列だとだめ。実装依存なのかな。

自分は $X を unsafeWindow にエクスポートしてる。