Fixed.
[mono.git] / mcs / class / Commons.Xml.Relaxng / Commons.Xml.Relaxng / RelaxngGrammar.cs
index b7653f594f272047c72a66581f3a631c5c16cc6d..938a8a69393e0be0d21d16c8138e4eba1003a5ff 100644 (file)
@@ -46,6 +46,9 @@ namespace Commons.Xml.Relaxng
                public static string NamespaceURI =
                        "http://relaxng.org/ns/structure/1.0";
 
+               // Parser condition: it is used to resolve "included" source
+               bool isSourceRnc;
+
                // object model fields
                string defaultNamespace;
                RelaxngGrammarContentList starts = new RelaxngGrammarContentList ();
@@ -53,8 +56,6 @@ namespace Commons.Xml.Relaxng
                RelaxngGrammarContentList includes = new RelaxngGrammarContentList ();
                RelaxngGrammarContentList divs = new RelaxngGrammarContentList ();
 
-               RelaxngDatatypeProvider provider;
-
                // compiled fields.
                RdpPattern startPattern;
 
@@ -100,14 +101,19 @@ namespace Commons.Xml.Relaxng
                        ElementDefMap.Clear ();
                }
 
+               internal bool IsSourceCompactSyntax {
+                       get { return isSourceRnc; }
+                       set { isSourceRnc = value; }
+               }
+
                internal RelaxngGrammar ParentGrammar {
                        get { return parentGrammar; }
                        set { parentGrammar = value; }
                }
 
                internal RelaxngDatatypeProvider Provider {
-                       get { return parentGrammar != null ? parentGrammar.Provider : provider; }
-                       set { provider = value; }
+                       get { return (base.DataProvider == null) ? (parentGrammar != null ? parentGrammar.Provider : base.DataProvider) : base.DataProvider; }
+                       set { base.DataProvider = value; }
                }
 
                public override RelaxngPatternType PatternType {