{
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;
- if (schemaType != "text/xml")
+ // FIXME: we need a bit more strict check.
+ if (schemaType.Length < 5 ||
+ !schemaType.EndsWith ("xml") ||
+ Char.IsLetter (schemaType, schemaType.Length - 4))
return null;
string schemaUri = validate.SchemaUri;
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;
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)
{
// creates individual validator with schema
// (which should be provided in derived constructor).
- public abstract XmlReader CreateValidator (XmlReader reader, XmlResolver resolver);
+ public abstract XmlReader CreateValidator (XmlReader reader,
+ XmlResolver resolver);
+
+ public virtual XmlReader CreateAttributeValidator (
+ XmlReader reader,
+ XmlResolver resolver)
+ {
+ throw new NotSupportedException ();
+ }
public abstract bool AddOption (string name, string arg);
+
+ public virtual bool HandleError (Exception ex, XmlReader reader, string nvdlLocation)
+ {
+ return false;
+ }
}
}