digital 千里眼 @abp_jp

アナログな日常とデジタルの接点

見るだけでわかる XPath の * と node() の違い

  • AutoPagerize の SITEINFO 書くときに役立つ知識
  • 「node()と*の違い」については AutoPagerize Wiki の XPath Cookbook 先頭にサラっと書いてあるけど...未経験者には厳しい解説です。もっとわかりやすくってことで...

1.id が content の要素を指定する XPath は id("content") ですね


2.では、その直下の子要素が必要なケース

視覚的に違いを示すとこんな感じ

id("content")/* id("content")/node()

3.該当する要素数を数えてみると

id("content")/* id("content")/node()

なぜ?該当数が異なるのか

4.該当した要素の XPath の末尾を見てみると...

id("content")/* id("content")/node()

node() はテキストノードも含む」ことがわかった
テキストノード:改行とか空白とか...もちろん意味のある文字列が含まれることもあります

まとめ

  • 含まれるテキストノードがスペースや改行のみなら * を使うべき
  • ただし、要素間のテキストノードに記事を入れているページもあるので、その場合は node() を使った指定をすること
ついでに「お知らせ」