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);
とやっても動かない。何でだろう。