9c8287bb0fcdfdf3435a88fc807765811f74ba2c
[mono.git] / mcs / class / System.XML / System.Xml / XmlDocumentType.cs
1 //\r
2 // System.Xml.XmlDocumentType.cs\r
3 //\r
4 // Author: Duncan Mak (duncan@ximian.com)\r
5 //         Atsushi Enomoto (ginga@kit.hi-ho.ne.jp)\r
6 //\r
7 // (C) Ximian, Inc.\r
8 //\r
9 using System;\r
10 using System.Collections;\r
11 \r
12 namespace System.Xml\r
13 {\r
14         public class XmlDocumentType  : XmlLinkedNode\r
15         {\r
16                 // Fields\r
17                 string name;            // name of the document type\r
18                 string publicId;        // public identifier on the DOCTYPE\r
19                 string systemId;        // system identifier on the DOCTYPE\r
20                 string internalSubset;  // value of the DTD internal subset\r
21                 internal XmlNamedNodeMap entities;\r
22                 internal XmlNamedNodeMap notations;\r
23                 internal Hashtable elementDecls;\r
24                 internal Hashtable attListDecls;\r
25 \r
26                 // Constructor\r
27                 protected internal XmlDocumentType (string name, string publicId,\r
28                                                     string systemId, string internalSubset,\r
29                                                     XmlDocument doc)\r
30                         : base (doc)\r
31                 {\r
32                         this.name = name;\r
33                         this.publicId = publicId;\r
34                         this.systemId = systemId;\r
35                         this.internalSubset = internalSubset;\r
36                         entities = new XmlNamedNodeMap (this);\r
37                         notations = new XmlNamedNodeMap (this);\r
38                         elementDecls = new Hashtable ();\r
39                         attListDecls = new Hashtable ();\r
40                 }\r
41 \r
42 \r
43                 // Properties\r
44                 public XmlNamedNodeMap Entities\r
45                 {\r
46                         get { return entities; }\r
47                 }\r
48                         \r
49                 public string InternalSubset\r
50                 {\r
51                         get { return internalSubset; }\r
52                 }\r
53 \r
54                 public override bool IsReadOnly\r
55                 {\r
56                         get { return true; } // always return true\r
57                 }\r
58 \r
59                 public override string LocalName\r
60                 {\r
61                         get { return name; }\r
62                 }\r
63 \r
64                 public override string Name\r
65                 {\r
66                         get { return name; }\r
67                 }\r
68 \r
69                 public override XmlNodeType NodeType\r
70                 {\r
71                         get { return XmlNodeType.DocumentType; }\r
72                 }\r
73 \r
74                 public XmlNamedNodeMap Notations\r
75                 {\r
76                         get { return notations; }\r
77                 }\r
78 \r
79                 public string PublicId\r
80                 {\r
81                         get { return publicId; }\r
82                 }\r
83 \r
84                 public string SystemId\r
85                 {\r
86                         get { return systemId; }\r
87                 }\r
88 \r
89                 // Methods\r
90                 public override XmlNode CloneNode (bool deep)\r
91                 {\r
92                         // deep is ignored\r
93                         return new XmlDocumentType (name, publicId, systemId,\r
94                                                     internalSubset, OwnerDocument);\r
95                 }\r
96                 \r
97                 public override void WriteContentTo (XmlWriter w)\r
98                 {\r
99                         // No effect\r
100                 }\r
101 \r
102                 public override void WriteTo (XmlWriter w)\r
103                 {\r
104                         w.WriteDocType (name, publicId, systemId, internalSubset);\r
105                 }\r
106         }\r
107 }\r