-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
+ }
+}