//[NotWorking ("default namespace seems null, not String.Empty")] public void DefaultXmlnsAttributeLookup() { string xml = @"<!DOCTYPE X [ <!ELEMENT X (Y)+> <!ENTITY baz 'urn:baz'> <!ATTLIST X xmlns CDATA 'urn:foo' xmlns:bar CDATA 'urn:bar' xmlns:baz CDATA #IMPLIED dummy CDATA 'dummy' baz:dummy CDATA 'dummy'> <!ELEMENT Y (#PCDATA)*> <!ATTLIST Y xmlns CDATA #IMPLIED xmlns:bar CDATA #IMPLIED> ]> <X xmlns:baz='&baz;'><Y/><Y>text.</Y><Y xmlns='' xmlns:bar='urn:hoge'>text.</Y></X>" ; XmlValidatingReader xvr = new XmlValidatingReader( xml, XmlNodeType.Document, null); xvr.Read(); // DTD xvr.Read(); // whitespace xvr.Read(); Assert.AreEqual("urn:foo", xvr.LookupNamespace(String.Empty), "#1-1"); Assert.AreEqual("urn:bar", xvr.LookupNamespace("bar"), "#1-2"); Assert.AreEqual("urn:baz", xvr.LookupNamespace("baz"), "#1-a"); Assert.IsTrue(xvr.MoveToAttribute("baz:dummy"), "#1-b"); Assert.AreEqual("urn:baz", xvr.NamespaceURI, "#1-c"); Assert.IsTrue(xvr.MoveToAttribute("dummy"), "#1-d"); Assert.AreEqual(String.Empty, xvr.NamespaceURI, "#1-e"); xvr.Read(); // first Y, empty element Assert.AreEqual("urn:foo", xvr.LookupNamespace(String.Empty), "#2-1"); Assert.AreEqual("urn:bar", xvr.LookupNamespace("bar"), "#2-2"); xvr.Read(); // second Y, start element Assert.AreEqual("urn:foo", xvr.LookupNamespace(String.Empty), "#3-1"); Assert.AreEqual("urn:bar", xvr.LookupNamespace("bar"), "#3-2"); xvr.Read(); // inside normal Y. Check inheritance Assert.AreEqual("urn:foo", xvr.LookupNamespace(String.Empty), "#4-1"); Assert.AreEqual("urn:bar", xvr.LookupNamespace("bar"), "#4-2"); xvr.Read(); // second Y, end element Assert.AreEqual("urn:foo", xvr.LookupNamespace(String.Empty), "#5-1"); Assert.AreEqual("urn:bar", xvr.LookupNamespace("bar"), "#5-2"); xvr.Read(); // third Y, suppresses default namespaces Assert.AreEqual(null, xvr.LookupNamespace(String.Empty), "#6-1"); Assert.AreEqual("urn:hoge", xvr.LookupNamespace("bar"), "#6-2"); xvr.Read(); // inside suppressing Y. Check inheritance Assert.AreEqual(null, xvr.LookupNamespace(String.Empty), "#7-1"); Assert.AreEqual("urn:hoge", xvr.LookupNamespace("bar"), "#7-2"); xvr.Read(); // end of suppressing element Assert.AreEqual(null, xvr.LookupNamespace(String.Empty), "#8-1"); Assert.AreEqual("urn:hoge", xvr.LookupNamespace("bar"), "#8-2"); }