2003-03-23 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
[mono.git] / mcs / class / System.XML / System.Xml / XmlDocumentType.cs
index a0ed34db3d94eb1dc77106d7a2af50916d58408c..9c8287bb0fcdfdf3435a88fc807765811f74ba2c 100644 (file)
+//\r
+// System.Xml.XmlDocumentType.cs\r
+//\r
+// Author: Duncan Mak (duncan@ximian.com)\r
+//        Atsushi Enomoto (ginga@kit.hi-ho.ne.jp)\r
+//\r
+// (C) Ximian, Inc.\r
+//\r
 using System;\r
+using System.Collections;\r
 \r
 namespace System.Xml\r
 {\r
-       /// <summary>\r
-       /// \r
-       /// </summary>\r
-       public class XmlDocumentType\r
+       public class XmlDocumentType  : XmlLinkedNode\r
        {\r
-               // Private data members\r
+               // Fields\r
+               string name;            // name of the document type\r
+               string publicId;        // public identifier on the DOCTYPE\r
+               string systemId;        // system identifier on the DOCTYPE\r
+               string internalSubset;  // value of the DTD internal subset\r
+               internal XmlNamedNodeMap entities;\r
+               internal XmlNamedNodeMap notations;\r
+               internal Hashtable elementDecls;\r
+               internal Hashtable attListDecls;\r
 \r
-               // public properties\r
+               // Constructor\r
+               protected internal XmlDocumentType (string name, string publicId,\r
+                                                   string systemId, string internalSubset,\r
+                                                   XmlDocument doc)\r
+                       : base (doc)\r
+               {\r
+                       this.name = name;\r
+                       this.publicId = publicId;\r
+                       this.systemId = systemId;\r
+                       this.internalSubset = internalSubset;\r
+                       entities = new XmlNamedNodeMap (this);\r
+                       notations = new XmlNamedNodeMap (this);\r
+                       elementDecls = new Hashtable ();\r
+                       attListDecls = new Hashtable ();\r
+               }\r
+\r
+\r
+               // Properties\r
+               public XmlNamedNodeMap Entities\r
+               {\r
+                       get { return entities; }\r
+               }\r
+                       \r
+               public string InternalSubset\r
+               {\r
+                       get { return internalSubset; }\r
+               }\r
+\r
+               public override bool IsReadOnly\r
+               {\r
+                       get { return true; } // always return true\r
+               }\r
+\r
+               public override string LocalName\r
+               {\r
+                       get { return name; }\r
+               }\r
+\r
+               public override string Name\r
+               {\r
+                       get { return name; }\r
+               }\r
+\r
+               public override XmlNodeType NodeType\r
+               {\r
+                       get { return XmlNodeType.DocumentType; }\r
+               }\r
+\r
+               public XmlNamedNodeMap Notations\r
+               {\r
+                       get { return notations; }\r
+               }\r
+\r
+               public string PublicId\r
+               {\r
+                       get { return publicId; }\r
+               }\r
+\r
+               public string SystemId\r
+               {\r
+                       get { return systemId; }\r
+               }\r
+\r
+               // Methods\r
+               public override XmlNode CloneNode (bool deep)\r
+               {\r
+                       // deep is ignored\r
+                       return new XmlDocumentType (name, publicId, systemId,\r
+                                                   internalSubset, OwnerDocument);\r
+               }\r
                \r
+               public override void WriteContentTo (XmlWriter w)\r
+               {\r
+                       // No effect\r
+               }\r
 \r
-               // Public Methods\r
+               public override void WriteTo (XmlWriter w)\r
+               {\r
+                       w.WriteDocType (name, publicId, systemId, internalSubset);\r
+               }\r
        }\r
 }\r