デフォルト名前空間とxpath

知らなかったのでメモ。

  • xmlns="..."という風に接頭辞なしで定義した名前空間はデフォルト名前空間と呼ばれる。
  • 接頭辞なしの要素はデフォルト名前空間に属する。
  • XPathのノードテストはデフォルト名前空間を扱えない。例えば、/foo/bar のように書いた場合は名前空間なしの要素と見なされるが、実際の要素はデフォルト名前空間に属しているため、一致しない。

結局、XPath側で適当な接頭辞をつけたら、対象のXML文章には手を入れずに対応できました。