2005-01-31 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mcs / class / System.XML / Mono.Xml.XPath / XPathNavigatorReader.cs
index 46e9ea93ad418676d7cf2e70fd52d1a2ac55dd96..5a5cf1f3f2c4169e32f64705b140f1a4e0a3d0d7 100755 (executable)
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
 //\r
+\r
 using System;\r
 using System.Text;\r
 using System.Xml;\r
+using System.Xml.Schema;\r
 using System.Xml.XPath;\r
 \r
 namespace Mono.Xml.XPath\r
@@ -57,7 +59,9 @@ namespace Mono.Xml.XPath
                bool endElement;\r
                bool attributeValueConsumed;\r
                StringBuilder readStringBuffer = new StringBuilder ();\r
+#if NET_2_0\r
                StringBuilder innerXmlBuilder = new StringBuilder ();\r
+#endif\r
 \r
                int depth = 0;\r
                int attributeCount = 0;\r
@@ -65,6 +69,17 @@ namespace Mono.Xml.XPath
                bool nextIsEOF;\r
 \r
                #region Properties\r
+\r
+#if NET_2_0\r
+               public override bool CanReadBinaryContent {\r
+                       get { return true; }\r
+               }\r
+\r
+               public override bool CanReadValueChunk {\r
+                       get { return true; }\r
+               }\r
+#endif\r
+\r
                public override XmlNodeType NodeType \r
                {\r
                        get {\r
@@ -128,7 +143,7 @@ namespace Mono.Xml.XPath
                                if (eof)\r
                                        return String.Empty;\r
                                else if (current.NodeType == XPathNodeType.Namespace)\r
-                                       return XmlNamespaceManager.XmlnsXmlns;\r
+                                       return "http://www.w3.org/2000/xmlns/";\r
                                else\r
                                        return current.NamespaceURI;\r
                        }\r
@@ -201,9 +216,15 @@ namespace Mono.Xml.XPath
                        get { return current.IsEmptyElement; }\r
                }\r
 \r
-               // It makes no sense.\r
                public override bool IsDefault {\r
-                       get { return false; }\r
+                       get {\r
+#if NET_2_0\r
+                               IXmlSchemaInfo si = current as IXmlSchemaInfo;\r
+                               return si != null && si.IsDefault;\r
+#else\r
+                               return false; // no way to check this.\r
+#endif\r
+                       }\r
                }\r
 \r
                // It makes no sense.\r
@@ -211,6 +232,12 @@ namespace Mono.Xml.XPath
                        get { return '\"'; }\r
                }\r
 \r
+#if NET_2_0\r
+               public override IXmlSchemaInfo SchemaInfo {\r
+                       get { return current.SchemaInfo; }\r
+               }\r
+#endif\r
+\r
                public override string XmlLang {\r
                        get { return current.XmlLang; }\r
                }\r
@@ -431,6 +458,11 @@ namespace Mono.Xml.XPath
 \r
                public override bool Read ()\r
                {\r
+#if NET_2_0\r
+                       if (Binary != null)\r
+                               Binary.Reset ();\r
+#endif\r
+\r
                        switch (ReadState) {\r
                        case ReadState.EndOfFile:\r
                        case ReadState.Closed:\r
@@ -447,8 +479,7 @@ namespace Mono.Xml.XPath
                                                nextIsEOF = true;\r
                                        attributeCount = GetAttributeCount ();\r
                                        return true;\r
-                               case XPathNodeType.Namespace:\r
-                               case XPathNodeType.Attribute:\r
+                               default:\r
                                        nextIsEOF = true;\r
                                        return true;\r
                                }\r
@@ -672,3 +703,4 @@ namespace Mono.Xml.XPath
                #endregion\r
        }\r
 }\r
+\r