Merge pull request #1155 from steffen-kiess/json-string
[mono.git] / mcs / class / Commons.Xml.Relaxng / Commons.Xml.Nvdl / NvdlValidationProvider.cs
old mode 100755 (executable)
new mode 100644 (file)
index 01ff911..0501b0e
@@ -8,8 +8,16 @@ namespace Commons.Xml.Nvdl
 {
        public class NvdlValidationProvider
        {
+               NvdlValidate validate;
+               string schema_type;
+               NvdlConfig config;
+
                public virtual NvdlValidatorGenerator CreateGenerator (NvdlValidate validate, string schemaType, NvdlConfig config)
                {
+                       this.validate = validate;
+                       this.schema_type = schemaType;
+                       this.config = config;
+
                        XmlReader schema = null;
                        // FIXME: we need a bit more strict check.
                        if (schemaType.Length < 5 ||
@@ -42,6 +50,18 @@ namespace Commons.Xml.Nvdl
                        return CreateGenerator (schema, config);
                }
 
+               public NvdlValidate ValidateAction {
+                       get { return validate; }
+               }
+
+               public NvdlConfig Config {
+                       get { return config; }
+               }
+
+               public string SchemaType {
+                       get { return schema_type; }
+               }
+
                public virtual NvdlValidatorGenerator CreateGenerator (XmlReader schema, NvdlConfig config)
                {
                        return null;
@@ -64,7 +84,8 @@ namespace Commons.Xml.Nvdl
                        XmlResolver r = config.XmlResolverInternal;
                        if (r == null)
                                return null;
-                       Uri uri = r.ResolveUri (null, validate.SchemaUri);
+                       Uri baseUri = r.ResolveUri (null, validate.SourceUri);
+                       Uri uri = r.ResolveUri (baseUri, validate.SchemaUri);
                        Stream stream = (Stream) r.GetEntity (
                                uri, null, typeof (Stream));
                        if (stream == null)
@@ -91,5 +112,10 @@ namespace Commons.Xml.Nvdl
                }
 
                public abstract bool AddOption (string name, string arg);
+
+               public virtual bool HandleError (Exception ex, XmlReader reader, string nvdlLocation)
+               {
+                       return false;
+               }
        }
 }