+//\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