return null;
ArrayList al = new ArrayList ();
while (!reader.EOF) {
+ if (reader.NodeType != XmlNodeType.Element) {
+ reader.Read ();
+ continue;
+ }
+ reader.MoveToContent ();
XmlSchema xs = XmlSchema.Read (reader, null);
xs.Compile (null, config.XmlResolverInternal);
al.Add (xs);
+ reader.Read ();
}
return new NvdlXsdValidatorGenerator (al.ToArray (typeof (XmlSchema)) as XmlSchema []);
}
public override XmlReader CreateValidator (XmlReader reader,
XmlResolver resolver)
{
+#if NET_2_0
+ XmlReaderSettings s = new XmlReaderSettings ();
+ s.ValidationType = ValidationType.Schema;
+ // do not allow inline schema and schemaLocation.
+ s.ValidationFlags = XmlSchemaValidationFlags.ProcessIdentityConstraints;
+ s.XmlResolver = resolver;
+ foreach (XmlSchema schema in schemas)
+ s.Schemas.Add (schema);
+ return XmlReader.Create (reader, s);
+#else
XmlValidatingReader xvr =
new XmlValidatingReader (reader);
xvr.XmlResolver = resolver;
foreach (XmlSchema schema in schemas)
xvr.Schemas.Add (schema);
-
return xvr;
+#endif
}
public override bool AddOption (string name, string arg)
{
return false;
}
+
+ public override bool HandleError (Exception ex, XmlReader reader, string nvdlLocation)
+ {
+ if (ex is XmlSchemaException)
+ throw new NvdlInstanceValidationException (String.Format ("XML schema validation error occured as a part of NVDL validation."), ex, this, nvdlLocation);
+ return false;
+ }
}
}