* XmlDataReader.cs, XmlDataInferenceLoader.cs, XmlDiffLoader.cs:
authorKonstantin Triger <kostat@mono-cvs.ximian.com>
Mon, 19 Feb 2007 14:12:46 +0000 (14:12 -0000)
committerKonstantin Triger <kostat@mono-cvs.ximian.com>
Mon, 19 Feb 2007 14:12:46 +0000 (14:12 -0000)
ignore attributes from "http://www.w3.org/XML/1998/namespace".
* XmlConstants.cs: add constant for "http://www.w3.org/XML/1998/namespace".
* XmlDataInferenceLoader.cs: track the added elements index to fix the
added column ordinal.

svn path=/trunk/mcs/; revision=73118

mcs/class/System.Data/System.Data/ChangeLog
mcs/class/System.Data/System.Data/XmlConstants.cs
mcs/class/System.Data/System.Data/XmlDataInferenceLoader.cs
mcs/class/System.Data/System.Data/XmlDataReader.cs
mcs/class/System.Data/System.Data/XmlDiffLoader.cs
mcs/class/System.Data/Test/System.Data/DataSetInferXmlSchemaTest.cs
mcs/class/System.Data/Test/System.Data/DataSetReadXmlTest.cs

index 6521b2158d58e1c3558ffbfff8e7cdbfdca9b767..bd57205a7b1623ffdc5e54e645d94b62fe117893 100644 (file)
@@ -1,3 +1,11 @@
+2007-02-19  Konstantin Triger <kostat@mainsoft.com>
+
+       * XmlDataReader.cs, XmlDataInferenceLoader.cs, XmlDiffLoader.cs:
+               ignore attributes from "http://www.w3.org/XML/1998/namespace".
+       * XmlConstants.cs: add constant for "http://www.w3.org/XML/1998/namespace".
+       * XmlDataInferenceLoader.cs: track the added elements index to fix the
+               added column ordinal.
+
 2006-12-11  Chris Toshok  <toshok@ximian.com>
 
        * DataView.cs: GetItemProperties should return an empty collection
index b4fdd903cc6e597ab0869858f979acf36146a4d7..9314805cbd3a20d8803bd99a3705be9a7f483d49 100644 (file)
@@ -49,6 +49,9 @@ internal class XmlConstants
        public const string SchemaNamespace = "http://www.w3.org/2001/XMLSchema";
        
        public const string XmlnsNS = "http://www.w3.org/2000/xmlns/";
+#if NET_2_0
+       public const string XmlNS = "http://www.w3.org/XML/1998/namespace";
+#endif
        
        //xs elements and values 
        //TODO - these must exist somwhere else???
index 30d47cf6aae234639c846563b031e35cc77399dd..dd1c62b221084b681b61aacdc316684f79bc9064 100644 (file)
@@ -76,6 +76,9 @@ namespace System.Data
                public DataColumn SimpleContent;\r
                public DataColumn PrimaryKey;\r
                public DataColumn ReferenceKey;\r
+#if NET_2_0\r
+               public int lastElementIndex = -1;\r
+#endif\r
 \r
                // Parent TableMapping\r
                public TableMapping ParentTable;\r
@@ -255,6 +258,9 @@ namespace System.Data
                        if (col != null) {\r
                                if (col.ColumnMapping != MappingType.Element)\r
                                        throw new DataException (String.Format ("Column {0} is already mapped to {1}.", localName, col.ColumnMapping));\r
+#if NET_2_0\r
+                               table.lastElementIndex = table.Elements.IndexOf (col);\r
+#endif\r
                                return;\r
                        }\r
                        if (table.ChildTables [localName] != null)\r
@@ -266,7 +272,11 @@ namespace System.Data
                        col = new DataColumn (localName, typeof (string));\r
                        col.Namespace = el.NamespaceURI;\r
                        col.Prefix = el.Prefix;\r
+#if NET_2_0\r
+                       table.Elements.Insert (++table.lastElementIndex, col);\r
+#else\r
                        table.Elements.Add (col);\r
+#endif\r
                }\r
 \r
                private void CheckExtraneousElementColumn (TableMapping parentTable, XmlElement el)\r
@@ -347,7 +357,11 @@ namespace System.Data
                        bool isElementRepeated = false;\r
 \r
                        foreach (XmlAttribute attr in el.Attributes) {\r
-                               if (attr.NamespaceURI == XmlConstants.XmlnsNS)\r
+                               if (attr.NamespaceURI == XmlConstants.XmlnsNS\r
+#if NET_2_0\r
+                                       || attr.NamespaceURI == XmlConstants.XmlNS\r
+#endif\r
+                                       )\r
                                        continue;\r
                                if (ignoredNamespaces != null &&\r
                                        ignoredNamespaces.Contains (attr.NamespaceURI))\r
@@ -485,7 +499,11 @@ namespace System.Data
                        }\r
 \r
                        foreach (XmlAttribute attr in el.Attributes) {\r
-                               if (attr.NamespaceURI == XmlConstants.XmlnsNS)\r
+                               if (attr.NamespaceURI == XmlConstants.XmlnsNS \r
+#if NET_2_0\r
+                                       || attr.NamespaceURI == XmlConstants.XmlNS\r
+#endif\r
+                                       )\r
                                        continue;\r
                                if (ignoredNamespaces != null && ignoredNamespaces.Contains (attr.NamespaceURI))\r
                                        continue;\r
@@ -524,7 +542,11 @@ namespace System.Data
                        ArrayList ignoredNamespaces)\r
                {\r
                        foreach (XmlAttribute attr in top.Attributes) {\r
-                               if (attr.NamespaceURI == XmlConstants.XmlnsNS)\r
+                               if (attr.NamespaceURI == XmlConstants.XmlnsNS\r
+#if NET_2_0\r
+                                       || attr.NamespaceURI == XmlConstants.XmlNS\r
+#endif\r
+                                       )\r
                                        continue;\r
                                if (ignoredNamespaces != null &&\r
                                        ignoredNamespaces.Contains (attr.NamespaceURI))\r
@@ -551,7 +573,11 @@ namespace System.Data
                private bool IsPossibleColumnElement (XmlElement el)\r
                {\r
                        foreach (XmlAttribute attr in el.Attributes) {\r
-                               if (attr.NamespaceURI == XmlConstants.XmlnsNS)\r
+                               if (attr.NamespaceURI == XmlConstants.XmlnsNS\r
+#if NET_2_0\r
+                                       || attr.NamespaceURI == XmlConstants.XmlNS\r
+#endif\r
+                                       )\r
                                        continue;\r
                                return false;\r
                        }\r
index 8cc749699f4ce70ea36fb21da169d8ab2989ae7a..afffe10c476f344eca8e23b9a58932b5bd00010d 100644 (file)
@@ -193,7 +193,11 @@ namespace System.Data
                        // Consume attributes\r
                        if (reader.MoveToFirstAttribute ()) {\r
                                do {\r
-                                       if (reader.NamespaceURI == XmlConstants.XmlnsNS)\r
+                                       if (reader.NamespaceURI == XmlConstants.XmlnsNS\r
+#if NET_2_0\r
+                                       || reader.NamespaceURI == XmlConstants.XmlNS\r
+#endif\r
+                                               )\r
                                                continue;\r
                                        ReadElementAttribute (row);\r
                                } while (reader.MoveToNextAttribute ());\r
index 45efcb97dfa4d23521c11e560e082b6c46ab88ee..2c7e085f15b29bd053d928756fe31c8596a27d18 100644 (file)
@@ -229,6 +229,9 @@ namespace System.Data {
                        do {
                                switch (reader.NamespaceURI) {
                                case XmlConstants.XmlnsNS:
+#if NET_2_0
+                               case XmlConstants.XmlNS:
+#endif
                                case XmlConstants.DiffgrNamespace:
                                case XmlConstants.MsdataNamespace:
                                case XmlConstants.MspropNamespace:
index 8c513409c4acdeef0f22fe1c9db5d76d3086b782..fbbcf38e34c74205d37a783cafe286333ee361b6 100644 (file)
@@ -324,9 +324,17 @@ namespace MonoTests.System.Data
                        DataSet ds = GetDataSet (xml11, null);
                        AssertDataSet ("ds", ds, "NewDataSet", 1, 0);
                        DataTable dt = ds.Tables [0];
+#if NET_2_0
+                       AssertDataTable ("dt", dt, "root", 1, 0, 0, 0, 0, 0);
+#else
                        AssertDataTable ("dt", dt, "root", 2, 0, 0, 0, 0, 0);
+#endif
                        AssertDataColumn ("element", dt.Columns [0], "child_after_significant_space", true, false, 0, 1, "child_after_significant_space", MappingType.Element, typeof (string), DBNull.Value, String.Empty, -1, String.Empty, 0, String.Empty, false, false);
+#if NET_2_0
+                       Assert.AreEqual (1, dt.Columns.Count, "xml:space is not treated as column");
+#else
                        AssertDataColumn ("xml:space", dt.Columns [1], "space", true, false, 0, 1, "space", MappingType.Attribute, typeof (string), DBNull.Value, String.Empty, -1, "http://www.w3.org/XML/1998/namespace", 1, "xml", false, false);
+#endif
                }
 
                [Test]
index b0ef8216d90f592eecfe3ff12863839692f11cae..15b91f0ec833550010e321110827c1d9b050b464 100644 (file)
@@ -669,9 +669,6 @@ namespace MonoTests.System.Data
                }\r
 \r
                [Test] // bug #80045\r
-#if NET_2_0\r
-               [Category ("NotWorking")]\r
-#endif\r
                public void ColumnOrder ()\r
                {\r
                        string xml = "<?xml version=\"1.0\" standalone=\"yes\"?>" +\r
@@ -712,7 +709,9 @@ namespace MonoTests.System.Data
                }\r
 \r
                [Test] // bug #80048\r
+#if NET_1_1\r
                [Category ("NotWorking")]\r
+#endif\r
                public void XmlSpace ()\r
                {\r
                        string xml = "<?xml version=\"1.0\" standalone=\"yes\"?>" +\r