*** empty log message ***
[mono.git] / mcs / class / System.XML / System.Xml / XmlComment.cs
index d3e5dcedebfef2558302d9fa4bc3c7d0c86c2acc..a515a1a95f9cdd18a7d4970a347e127bb3612869 100644 (file)
-using System;\r
-\r
-namespace System.Xml\r
-{\r
-       /// <summary>\r
-       /// \r
-       /// </summary>\r
-       /// \r
-\r
-       /*\r
-        * Section 2.5 of the XML spec says...\r
-       [Definition: Comments may appear anywhere in a document outside other markup;\r  in addition, they may appear within the document type declaration at places\r    allowed by the grammar. They are not part of the document's character data; \r   an XML processor may, but need not, make it possible for an application to retrieve \r   the text of comments. For compatibility, the string "--" (double-hyphen)\r       must not occur within comments.] Parameter entity references are not recognized\r        within comments.\r
-       \r
-       Note that the grammar does not allow a comment ending in --->.\r\r
-       Comment ::=   '<!--' ((Char - '-') | ('-' (Char - '-')))* '-->'\r
-       */\r
-       public class XmlComment : XmlCharacterData\r
-       {\r
-               // Private data members\r
-\r
-               // public properties\r
-               public override string InnerText \r
-               {\r
-                       get\r
-                       {\r
-                               // TODO - implement XmlComment.InnerText.get\r
-                               throw new NotImplementedException();\r
-                       }\r
-                       \r
-                       set\r
-                       {\r
-                               // TODO - implement XmlComment.InnerText.set\r
-                               throw new NotImplementedException();\r
-                       }\r
-               }\r
-\r
-               public override string LocalName \r
-               {\r
-                       get\r
-                       {\r
-                               return "#comment";\r
-                       }\r
-               }\r
-\r
-               public override string Name \r
-               {\r
-                       get\r
-                       {\r
-                               return "#comment";\r
-                       }\r
-               }\r
-\r
-               public override string Value \r
-               {\r
-                       get\r
-                       {\r
-                               return Fvalue;\r
-                       }\r
-                       \r
-                       set\r
-                       {\r
-                               // TODO - Do our well-formedness checks on Value.set? (no)\r
-                               Fvalue = value;\r
-                       }\r
-               }\r
-               \r
-\r
-               // Public Methods\r
-               public override XmlNode CloneNode(bool deep)\r
-               {\r
-                       // TODO - implement XmlComment.CloneNode(bool)\r
-                       throw new NotImplementedException();\r
-               }\r
-\r
-               public override void WriteContentTo(XmlWriter w)\r
-               {\r
-                       // TODO - implement XmlComment.WriteContentTo(XmlWriter)\r
-                       throw new NotImplementedException();\r
-               }\r
-\r
-               public override void WriteTo(XmlWriter w)\r
-               {\r
-                       // TODO - implement XmlComment.WriteTo(XmlWriter)\r
-                       throw new NotImplementedException();\r
-               }\r
-\r
-\r
-               // Internal methods\r
-               /// <summary>\r
-               /// Returns an exception object if passed text is not well-formed.\r
-               /// Text is passed without introductory syntax elements.\r
-               /// For comments, the leading "<!--" and trailing "-->" should be stripped.\r
-               /// </summary>\r
-               /// <param name="data"></param>\r
-               /// <returns></returns>\r
-               private XmlException wellFormed(string data, XmlInputSource src)\r
-               {\r
-                       if (data.IndexOf("--") != -1)\r
-                               return new XmlException("Invalid characters (\"--\") in comment", src);\r
-                       if (data[0] == '-')\r
-                               return new XmlException("Invalid comment beginning (<!---)", src);\r
-                       if (data[data.Length - 1] == '-')\r
-                               return new XmlException("Invalid comment ending (--->)", src);\r
-                       return null;\r
-\r
-               }\r
-               // Constructors\r
-               internal XmlComment(XmlDocument aOwner, string txt, XmlInputSource src) : base(aOwner)\r
-               {\r
-                       XmlException e = wellFormed(txt, src);\r
-\r
-                       if ( e == null )\r
-                       {\r
-                               Fvalue = txt;\r
-                       }\r
-                       else\r
-                               throw e;\r
-               }\r
-       }\r
-}\r
+//
+// System.Xml.XmlComment
+//
+// Author:
+//   Kral Ferch <kral_ferch@hotmail.com>
+//
+// (C) 2002 Kral Ferch
+//
+
+using System;
+using System.Xml.XPath;
+
+namespace System.Xml
+{
+       public class XmlComment : XmlCharacterData
+       {
+               #region Constructors
+
+               protected internal XmlComment (string comment, XmlDocument doc)
+                       : base (comment, doc)
+               {
+               }
+
+               #endregion
+
+               #region Properties
+
+               public override string LocalName {
+                       get { return "#comment"; }
+               }
+
+               public override string Name {
+                       get { return "#comment"; }
+               }
+
+               public override XmlNodeType NodeType {
+                       get { return XmlNodeType.Comment; }
+               }
+               
+               internal override XPathNodeType XPathNodeType {
+                       get {
+                               return XPathNodeType.Comment;
+                       }
+               }
+
+               #endregion
+
+               #region Methods
+
+               public override XmlNode CloneNode (bool deep)
+               {
+                       // discard deep because Comments have no children.
+                       return new XmlComment(Value, OwnerDocument); 
+               }
+
+               public override void WriteContentTo (XmlWriter w) { }
+
+               public override void WriteTo (XmlWriter w)
+               {
+                       w.WriteComment (Data);
+               }
+
+               #endregion
+       }
+}