private SchemaElementDecl ThoroughGetElementDecl() {
if (reader.Depth == 0) {
LoadSchema(string.Empty);
}
if (reader.MoveToFirstAttribute()) {
do {
string objectNs = reader.NamespaceURI;
string objectName = reader.LocalName;
if (Ref.Equal(objectNs, SchemaNames.NsXmlNs)) {
LoadSchema(reader.Value);
if (isProcessContents) {
nsManager.AddNamespace(reader.Prefix.Length == 0 ? string.Empty : reader.LocalName, reader.Value);
}
}
if (
Ref.Equal(objectNs, SchemaNames.QnDtDt.Namespace) &&
Ref.Equal(objectName, SchemaNames.QnDtDt.Name)
) {
reader.SchemaTypeObject = XmlSchemaDatatype.FromXdrName(reader.Value);
}
} while(reader.MoveToNextAttribute());
reader.MoveToElement();
}
SchemaElementDecl elementDecl = schemaInfo.GetElementDecl(elementName);
if(elementDecl == null) {
if(schemaInfo.TargetNamespaces.Contains(context.Namespace)) {
SendValidationEvent(Res.Sch_UndeclaredElement, XmlSchemaValidator.QNameString(context.LocalName, context.Namespace));
}
}
return elementDecl;
}