string schemaUri = GetSchemaUri (validate);
if (schemaUri == null)
return null;
+ Uri baseUri = resolver.ResolveUri (null, validate.SourceUri);
RelaxngPattern p = RncParser.ParseRnc (
new StreamReader ((Stream) resolver.GetEntity (
- resolver.ResolveUri (null, schemaUri),
+ resolver.ResolveUri (baseUri, schemaUri),
null,
typeof (Stream))));
return new NvdlRelaxngValidatorGenerator (p, config);
internal class NvdlRelaxngValidatorGenerator : NvdlValidatorGenerator
{
RelaxngPattern pattern;
- RelaxngPattern attributePattern;
public NvdlRelaxngValidatorGenerator (RelaxngPattern p,
NvdlConfig config)
XmlReader reader,
XmlResolver resolver)
{
- if (attributePattern == null) {
- RelaxngElement el = new RelaxngElement ();
- el.NameClass = new RelaxngAnyName ();
- el.Patterns.Add (pattern);
- }
// XmlResolver is never used.
RelaxngValidatingReader rvr =
new RelaxngValidatingReader (
- reader, attributePattern);
+ reader, pattern);
rvr.ReportDetails = true;
return rvr;
}
{
return false;
}
+
+ public override bool HandleError (Exception ex, XmlReader reader, string nvdlLocation)
+ {
+ if (ex is RelaxngException)
+ throw new NvdlInstanceValidationException (String.Format ("RELAX NG validation error occured as a part of NVDL validation: " + ex.Message), ex, this, nvdlLocation);
+ return false;
+ }
}
}