public XmlSchemaValidator(XmlNameTable nameTable, XmlSchemaSet schemas, IXmlNamespaceResolver namespaceResolver, XmlSchemaValidationFlags validationFlags)
{
if (nameTable == null)
{
throw new ArgumentNullException(nameof(nameTable));
}
if (schemas == null)
{
throw new ArgumentNullException(nameof(schemas));
}
if (namespaceResolver == null)
{
throw new ArgumentNullException(nameof(namespaceResolver));
}
_nameTable = nameTable;
_nsResolver = namespaceResolver;
_validationFlags = validationFlags;
if (((validationFlags & XmlSchemaValidationFlags.ProcessInlineSchema) != 0) || ((validationFlags & XmlSchemaValidationFlags.ProcessSchemaLocation) != 0))
{ //Process schema hints in xml document, hence user's set might change
_schemaSet = new XmlSchemaSet(nameTable);
_schemaSet.ValidationEventHandler += schemas.GetEventHandler();
_schemaSet.CompilationSettings = schemas.CompilationSettings;
_schemaSet.XmlResolver = schemas.GetResolver();
_schemaSet.Add(schemas);
_validatedNamespaces = new Hashtable();
}
else
{ //Use the same set from the user
_schemaSet = schemas;
}
Init();
}