2010-07-23 Atsushi Enomoto <atsushi@ximian.com>
authorAtsushi Eno <atsushieno@veritas-vos-liberabit.com>
Fri, 23 Jul 2010 14:42:47 +0000 (22:42 +0800)
committerPhil Garcia <phil@thinkedge.com>
Fri, 23 Jul 2010 23:24:04 +0000 (07:24 +0800)
* RelaxngPattern.cs : inherit XmlResolver to parsed rng component.
  Fixed bug #622630.

mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng/ChangeLog [changed mode: 0644->0755]
mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng/RelaxngPattern.cs [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index ccfa713..2da640a
@@ -1,3 +1,8 @@
+2010-07-23  Atsushi Enomoto <atsushi@ximian.com>
+
+       * RelaxngPattern.cs : inherit XmlResolver to parsed rng component.
+         Fixed bug #622630.
+
 2010-06-25  Atsushi Enomoto <atsushi@ximian.com>
 
        * RelaxngReader.cs : don't use Name, use LocalName. Fixed bug #617264.
old mode 100644 (file)
new mode 100755 (executable)
index c7cebd9..a6e1940
@@ -81,14 +81,15 @@ namespace Commons.Xml.Relaxng
                {
                        XmlTextReader xtr = null;
                        RelaxngGrammar g = null;
+                       RelaxngPattern p;
                        try {
                                if (grammar.IsSourceCompactSyntax) {
-                                       return RncParser.ParseRnc (new StreamReader ((Stream) grammar.Resolver.GetEntity (uri, null, typeof (Stream))), null, BaseUri, nsContext);
+                                       p = RncParser.ParseRnc (new StreamReader ((Stream) grammar.Resolver.GetEntity (uri, null, typeof (Stream))), null, BaseUri, nsContext);
                                } else {
                                        xtr = new XmlTextReader (uri.AbsoluteUri, (Stream) grammar.Resolver.GetEntity (uri, null, typeof (Stream)));
                                        RelaxngReader r = new RelaxngReader (xtr, nsContext, grammar.Resolver);
                                        r.MoveToContent ();
-                                       return r.ReadPattern ();
+                                       p = r.ReadPattern ();
                                }
                        } catch (Exception ex) { // umm, bad catch though :-(
                                throw new RelaxngException (this, String.Format("Could not include grammar {0}: {1}", uri.AbsoluteUri, ex.Message), ex);
@@ -96,6 +97,8 @@ namespace Commons.Xml.Relaxng
                                if (xtr != null)
                                        xtr.Close ();
                        }
+                       p.XmlResolver = grammar.Resolver;
+                       return p;
                }
        }