2 // System.Xml.XmlParserContext
5 // Jason Diamond (jason@injektilo.org)
6 // Atsushi Enomoto (ginga@kit.hi-ho.ne.jp)
8 // (C) 2001, 2002 Jason Diamond http://injektilo.org/
9 // (C) 2003 Atsushi Enomoto
11 using System.Collections;
17 public class XmlParserContext
21 public XmlParserContext (
23 XmlNamespaceManager nsMgr,
42 public XmlParserContext (
44 XmlNamespaceManager nsMgr,
64 public XmlParserContext (
66 XmlNamespaceManager nsMgr,
70 string internalSubset,
90 public XmlParserContext (
92 XmlNamespaceManager nsMgr,
96 string internalSubset,
104 (docTypeName != null && docTypeName != String.Empty) ?
105 new XmlTextReader ("", nt).GenerateDTDObjectModel (
106 docTypeName, pubId, sysId, internalSubset) : null,
114 internal XmlParserContext (XmlNameTable nt,
115 XmlNamespaceManager nsMgr,
123 this.nameTable = nsMgr.NameTable;
127 this.namespaceManager = nsMgr;
129 this.docTypeName = dtd.Name;
130 this.publicID = dtd.PublicId;
131 this.systemID = dtd.SystemId;
132 this.internalSubset = dtd.InternalSubset;
137 baseURIStack = new Stack ();
138 xmlLangStack = new Stack ();
139 xmlSpaceStack = new Stack ();
140 baseURIStack.Push (baseURI != null ? baseURI : String.Empty);
141 xmlLangStack.Push (xmlLang);
142 xmlSpaceStack.Push (xmlSpace);
148 private string baseURI;
149 private string docTypeName;
150 private Encoding encoding;
151 private string internalSubset;
152 private XmlNamespaceManager namespaceManager;
153 private XmlNameTable nameTable;
154 private string publicID;
155 private string systemID;
156 private string xmlLang;
157 private XmlSpace xmlSpace;
158 private Stack baseURIStack;
159 private Stack xmlLangStack;
160 private Stack xmlSpaceStack;
161 private DTDObjectModel dtd;
167 public string BaseURI {
168 get { return baseURI != null ? baseURI : baseURIStack.Peek () as string; }
169 set { baseURI = value; }
172 public string DocTypeName {
173 get { return docTypeName != null ? docTypeName : dtd != null ? dtd.Name : null; }
174 set { docTypeName = value; }
177 internal DTDObjectModel Dtd {
182 public Encoding Encoding {
183 get { return encoding; }
184 set { encoding = value; }
187 public string InternalSubset {
188 get { return internalSubset != null ? internalSubset : dtd != null ? dtd.InternalSubset : null; }
189 set { internalSubset = value; }
192 public XmlNamespaceManager NamespaceManager {
193 get { return namespaceManager; }
194 set { namespaceManager = value; }
197 public XmlNameTable NameTable {
198 get { return nameTable; }
199 set { nameTable = value; }
202 public string PublicId {
203 get { return publicID != null ? publicID : dtd != null ? dtd.PublicId : null; }
204 set { publicID = value; }
207 public string SystemId {
208 get { return systemID != null ? systemID : dtd != null ? dtd.SystemId : null; }
209 set { systemID = value; }
212 public string XmlLang {
213 get { return xmlLang != null ? xmlLang : xmlLangStack.Peek () as string; }
214 set { xmlLang = value; }
217 public XmlSpace XmlSpace {
218 get { return xmlSpace != XmlSpace.None ? xmlSpace : (XmlSpace) xmlSpaceStack.Peek (); }
219 set { xmlSpace = value; }
225 internal void PushScope ()
227 baseURIStack.Push (BaseURI);
228 xmlLangStack.Push (XmlLang);
229 xmlSpaceStack.Push (XmlSpace);
232 xmlSpace = XmlSpace.None;
235 internal void PopScope ()
239 xmlSpaceStack.Pop ();
242 xmlSpace = XmlSpace.None;