XPath Cookbookネタで書いてたんですが、長くなったのでとりあえずこちらに。 id:taizoooにリクエストされた//とdescendant::の違いについて。 下準備として、こういうHTMLをサンプルとして使用します。(サンプルはFirebugのコンソールで実行できます) document.body.innerHTML = <><![CDATA[ <ul id="root"> <li> <a href="#a1">a1</a> </li> <li> <a href="#b1">b1</a> </li> <li> <a href="#c1">c1</a> <a href="#c2">c2</a> </li> <li> <a href="#d1">d1</a> <a href="#d2">d2</a> </li> </ul> ]]></>.toString(); まず、//*とd