private void PreprocessElement(XmlSchemaElement element) {
if (element.Name != null) {
ValidateNameAttribute(element);
element.SetQualifiedName(new XmlQualifiedName(element.Name, this.targetNamespace));
}
else {
SendValidationEvent(Res.Sch_MissRequiredAttribute, "name", element);
}
PreprocessElementContent(element);
if (element.Final == XmlSchemaDerivationMethod.All) {
element.SetFinalResolved(XmlSchemaDerivationMethod.All);
}
else if (element.Final == XmlSchemaDerivationMethod.None) {
if (this.finalDefault == XmlSchemaDerivationMethod.All) {
element.SetFinalResolved(XmlSchemaDerivationMethod.All);
}
else {
element.SetFinalResolved(this.finalDefault & elementFinalAllowed);
}
}
else {
if ((element.Final & ~elementFinalAllowed) != 0) {
SendValidationEvent(Res.Sch_InvalidElementFinalValue, element);
}
element.SetFinalResolved(element.Final & elementFinalAllowed);
}
if (element.Form != XmlSchemaForm.None) {
SendValidationEvent(Res.Sch_ForbiddenAttribute, "form", element);
}
if (element.MinOccursString != null) {
SendValidationEvent(Res.Sch_ForbiddenAttribute, "minOccurs", element);
}
if (element.MaxOccursString != null) {
SendValidationEvent(Res.Sch_ForbiddenAttribute, "maxOccurs", element);
}
if (!element.SubstitutionGroup.IsEmpty) {
ValidateQNameAttribute(element, "type", element.SubstitutionGroup);
XmlSchemaSubstitutionGroup substitutionGroup = (XmlSchemaSubstitutionGroup)this.schema.Examplars[element.SubstitutionGroup];
if (substitutionGroup == null) {
substitutionGroup = new XmlSchemaSubstitutionGroup();
substitutionGroup.Examplar = element.SubstitutionGroup;
this.schema.Examplars.Add(element.SubstitutionGroup, substitutionGroup);
}
if (substitutionGroup.Members[element.QualifiedName] == null) {
substitutionGroup.Members.Add(element.QualifiedName, element);
}
}
ValidateIdAttribute(element);
}