4

次のXMLマークアップがあるとします。

<root xmlns="Demo">
    <child name="foo"/>
</root>

そして要素にXPathNavigator配置され、<child>

string withNs = navigator.GetAttribute("name", navigator.NamespaceURI);
string withoutNs = navigator.GetAttribute("name", "");

奇妙な結果を生成します:withNsは空で、withoutNsが含まれていますfoo

何故ですか?name属性は要素のDemoように名前空間になければならないので、私はそれが逆になると予想していました。child

MSDNのドキュメントには、渡すことの魔法の意味が記載されていないnamespaceURI=""ため、属性の実際の名前空間URIを渡す必要があると想定しました。

4

1 に答える 1

5

属性は要素と同様に名前空間nameにある必要があるためです。Demochild

w3c仕様に従って、属性は属性が属する要素の名前空間を継承しません。そのため、正しい結果が得られました。

関連記事: http://web.archive.org/web/20170118162309/http: //www.xmlplease.com/attributexmlns

于 2009-12-17T16:13:23.890 に答える