(DISTFILES): Comment out a few missing files.
[mono-project.git] / mcs / class / System.XML / System.Xml.Schema / XmlSchemaReader.cs
blob3b3529b483b500b4791dfd38cf58cce384f2cd0e
2 //
3 // Permission is hereby granted, free of charge, to any person obtaining
4 // a copy of this software and associated documentation files (the
5 // "Software"), to deal in the Software without restriction, including
6 // without limitation the rights to use, copy, modify, merge, publish,
7 // distribute, sublicense, and/or sell copies of the Software, and to
8 // permit persons to whom the Software is furnished to do so, subject to
9 // the following conditions:
10 //
11 // The above copyright notice and this permission notice shall be
12 // included in all copies or substantial portions of the Software.
13 //
14 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22 using System;
23 using System.Xml;
25 namespace System.Xml.Schema
27 /// <summary>
28 /// A wrapper around XmlReader
29 /// </summary>
30 internal class XmlSchemaReader : XmlReader, IXmlLineInfo
32 XmlReader reader;
33 ValidationEventHandler handler;
34 bool hasLineInfo;
35 public XmlSchemaReader(XmlReader reader,ValidationEventHandler handler)
37 this.reader = reader;
38 this.handler = handler;
39 if(reader is IXmlLineInfo)
41 IXmlLineInfo info = (IXmlLineInfo)reader;
42 hasLineInfo = info.HasLineInfo();
46 /// <summary>
47 /// Returns the Namespace:LocalName for the object
48 /// </summary>
49 public string FullName
51 get { return NamespaceURI + ":" + LocalName; }
54 public XmlReader Reader
56 get { return this.reader; }
59 public void RaiseInvalidElementError()
61 string errstr = "Element "+FullName + " is invalid in this context.\n";
62 if(hasLineInfo)
63 errstr += "The error occured on ("+((IXmlLineInfo)reader).LineNumber
64 +","+((IXmlLineInfo)reader).LinePosition+")";
65 XmlSchemaObject.error(handler, errstr, null);
66 SkipToEnd();
68 /// <summary>
69 /// Reads till the next Element or EndElement. Also checks that the Namespace of the element is
70 /// Schema's Namespace.
71 /// </summary>
72 /// <returns></returns>
73 public bool ReadNextElement()
75 MoveToElement();
76 while(Read())
78 if(NodeType == XmlNodeType.Element || NodeType == XmlNodeType.EndElement)
80 if(reader.NamespaceURI != XmlSchema.Namespace)
82 RaiseInvalidElementError();
84 else
86 return true;
90 return false;
93 /// <summary>
94 /// Skips to the end of the current element
95 /// </summary>
96 public void SkipToEnd()
98 MoveToElement();
99 if(IsEmptyElement || NodeType != XmlNodeType.Element)
100 return;
101 if(NodeType == XmlNodeType.Element)
103 int depth = Depth;
104 while(Read())
106 if(Depth == depth)
107 break;
110 return;
113 #region LineInfo
114 public bool HasLineInfo()
116 return hasLineInfo;
118 public int LineNumber
120 get { return hasLineInfo?((IXmlLineInfo)reader).LineNumber: 0; }
122 public int LinePosition
124 get { return hasLineInfo?((IXmlLineInfo)reader).LinePosition: 0; }
126 #endregion
128 #region Delegates
129 public override int AttributeCount
131 get { return reader.AttributeCount; }
133 public override string BaseURI
135 get { return reader.BaseURI; }
137 public override bool CanResolveEntity
139 get { return reader.CanResolveEntity; }
141 public override int Depth
143 get { return reader.Depth; }
145 public override bool EOF
147 get { return reader.EOF; }
149 public override bool HasAttributes
151 get { return reader.HasAttributes; }
153 public override bool HasValue
155 get { return reader.HasValue; }
157 public override bool IsDefault
159 get { return reader.IsDefault; }
161 public override bool IsEmptyElement
163 get { return reader.IsEmptyElement; }
165 public override string this[ int i ]
167 get { return reader[i]; }
169 public override string this[ string name ]
171 get { return reader[name]; }
173 public override string this[ string name, string namespaceURI ]
175 get { return reader[name,namespaceURI]; }
177 public override string LocalName
179 get { return reader.LocalName; }
181 public override string Name
183 get { return reader.Name; }
185 public override string NamespaceURI
187 get { return reader.NamespaceURI; }
189 public override XmlNameTable NameTable
191 get { return reader.NameTable; }
193 public override XmlNodeType NodeType
195 get { return reader.NodeType; }
197 public override string Prefix
199 get { return reader.Prefix; }
201 public override char QuoteChar
203 get { return reader.QuoteChar; }
205 public override ReadState ReadState
207 get { return reader.ReadState; }
209 public override string Value
211 get { return reader.Value; }
213 public override string XmlLang
215 get { return reader.XmlLang; }
217 public override XmlSpace XmlSpace
219 get { return reader.XmlSpace; }
222 public override void Close()
224 reader.Close();
227 public override bool Equals(object obj)
229 return reader.Equals(obj);
232 public override string GetAttribute(int i)
234 return reader.GetAttribute(i);
237 public override string GetAttribute(string name)
239 return reader.GetAttribute(name);
242 public override string GetAttribute(string name, string namespaceURI)
244 return reader.GetAttribute(name, namespaceURI);
247 public override int GetHashCode()
249 return reader.GetHashCode();
252 public override bool IsStartElement()
254 return reader.IsStartElement();
257 public override bool IsStartElement(string localname, string ns)
259 return reader.IsStartElement(localname, ns);
262 public override bool IsStartElement(string name)
264 return reader.IsStartElement(name);
267 public override string LookupNamespace(string prefix)
269 return reader.LookupNamespace(prefix);
272 public override void MoveToAttribute(int i)
274 reader.MoveToAttribute(i);
277 public override bool MoveToAttribute(string name)
279 return reader.MoveToAttribute(name);
282 public override bool MoveToAttribute(string name, string ns)
284 return reader.MoveToAttribute(name,ns);
287 public override System.Xml.XmlNodeType MoveToContent()
289 return reader.MoveToContent();
292 public override bool MoveToElement()
294 return reader.MoveToElement();
297 public override bool MoveToFirstAttribute()
299 return reader.MoveToFirstAttribute();
302 public override bool MoveToNextAttribute()
304 return reader.MoveToNextAttribute();
307 public override bool Read()
309 return reader.Read();
312 public override bool ReadAttributeValue()
314 return reader.ReadAttributeValue();
317 public override string ReadElementString()
319 return reader.ReadElementString();
322 public override string ReadElementString(string localname, string ns)
324 return reader.ReadElementString(localname, ns);
327 public override string ReadElementString(string name)
329 return reader.ReadElementString(name);
332 public override void ReadEndElement()
334 reader.ReadEndElement();
337 public override string ReadInnerXml()
339 return reader.ReadInnerXml();
342 public override string ReadOuterXml()
344 return reader.ReadOuterXml();
347 public override void ReadStartElement()
349 reader.ReadStartElement();
352 public override void ReadStartElement(string localname, string ns)
354 reader.ReadStartElement(localname, ns);
357 public override void ReadStartElement(string name)
359 reader.ReadStartElement(name);
362 public override string ReadString()
364 return reader.ReadString();
367 public override void ResolveEntity()
369 reader.ResolveEntity();
372 public override void Skip()
374 reader.Skip();
377 public override string ToString()
379 return reader.ToString();
382 #endregion