node()と*の違い //node() //* をそれぞれ実行してみればわかるが、node()はテキストノードなどを含めたすべてのノードを、*はNode.ELEMENT_NODEな要素だけを選択する。この違いはパフォーマンスに影響を与えるので、意識して使い分けるのが良い。 なお、 * はattributeとnamespaceを基準点とした場合はそれぞれattributeとnamespaceを選択する(例://@* は全てのAttrを選択する)。 詳細は仕様書でXML Path Language (XPath) - 2.3 ノードテスト 省略シンタックスと非省略、そして少しの応用 // は /descendant-or-self::node()/ の省略形である。/divは/child::divの省略形で、//div[1]は//div[position()=1]を(さらに)省略した形である