+2006-03-28 Atsushi Enomoto <atsushi@ximian.com>
+
+ Based on the patch by Alexandre Alapetite:
+ * RelaxngException.cs : added another constructor that takes
+ pattern, string and innerException.
+ * RelaxngReader.cs
+ RelaxngPattern.cs :
+ - wrap xml resolution error in RelaxngInclude.Read(). This change
+ is argurable but might be convenient for certain users.
+ - Added another constructor to RelaxngReader, and another overload
+ for RelaxngPattern.Read(), otherwise RelaxngPattern.Read() can
+ never use different XmlResolvers.
+
2006-03-27 Atsushi Enomoto <atsushi@ximian.com>
Patch by Alexandre Alapetite (http://alexandre.alapetite.net/cv/)
}
public RelaxngException (RelaxngElementBase source, string message)
- : base (message + String.Format (" {0} ({1}, {2})", source.BaseUri, source.LineNumber, source.LinePosition))
+ : this (source, message, null)
+ {
+ }
+
+ public RelaxngException (RelaxngElementBase source, string message, Exception innerException)
+ : base (message + String.Format (" {0} ({1}, {2})", source.BaseUri, source.LineNumber, source.LinePosition), innerException)
{
}
}
RelaxngReader r = new RelaxngReader (xtr, ns);
r.MoveToContent ();
g = r.ReadPattern () as RelaxngGrammar;
+ } catch (Exception ex) { // umm, bad catch though :-(
+ throw new RelaxngException (this, String.Format("Could not include grammar {0}: {1}", uri.AbsoluteUri, ex.Message), ex);
} finally {
if (xtr != null)
xtr.Close ();
public static RelaxngPattern Read (XmlReader xmlReader, RelaxngDatatypeProvider provider)
{
- RelaxngReader r = new RelaxngReader (xmlReader, null);
+ return Read (xmlReader, provider, new XmlUrlResolver ());
+ }
+
+ public static RelaxngPattern Read (XmlReader xmlReader, RelaxngDatatypeProvider provider, XmlResolver xmlResolver)
+ {
+ RelaxngReader r = new RelaxngReader (xmlReader, null, xmlResolver);
if (r.ReadState == ReadState.Initial)
r.Read ();
r.MoveToContent ();
// fields
Stack nsStack = new Stack ();
Stack datatypeLibraryStack = new Stack ();
- XmlResolver resolver = new XmlUrlResolver ();
+ XmlResolver resolver;
// ArrayList annotationNamespaces = new ArrayList ();
// ctor
}
public RelaxngReader (XmlReader reader, string ns)
+ : this (reader, ns, new XmlUrlResolver ())
+ {
+ }
+
+ public RelaxngReader (XmlReader reader, string ns, XmlResolver resolver)
// : base (grammarForRelaxng == null ? reader : new RelaxngValidatingReader (reader, grammarForRelaxng))
: base (reader)
{
+ this.resolver = resolver;
if (Reader.ReadState == ReadState.Initial)
Read ();
MoveToContent ();