XML名前空間

やっぱり勘違いしていました。

XML名前空間の落とし穴

によると、hrefは、aに固有の名前空間に収容されているらしい。というか、属性のデフォルトの名前空間は、タグに拘束されているということのようだ。で、そんなものは普通は指定しなくて良いと言うことらしい。

しかし、そうすると解せないのは、MSDN LibraryのXmlNamespaceManager.AddNamespace Methodのprefixの説明。

The prefix to associate with the namespace being added. Use String.Empty to add a default namespace.

と書いてあるのだけれども、

XmlNamespaceManager nsm = new XmlNamespaceManager(doc.NameTable);
nsm.AddNamespace(string.Empty, "http://www.w3.org/1999/xhtml");

XmlNodeList anchors = doc.DocumentElement.SelectNodes("//a[@href!='']", nsm);

とやっても動かない。何でだろう。