private void PreprocessElementContent(XmlSchemaElement element) {
PreprocessAnnotation(element); //Set parent for Annotation child of element
if (!element.RefName.IsEmpty) {
SendValidationEvent(Res.Sch_ForbiddenAttribute, "ref", element);
}
if (element.Block == XmlSchemaDerivationMethod.All) {
element.SetBlockResolved(XmlSchemaDerivationMethod.All);
}
else if (element.Block == XmlSchemaDerivationMethod.None) {
if (this.blockDefault == XmlSchemaDerivationMethod.All) {
element.SetBlockResolved(XmlSchemaDerivationMethod.All);
}
else {
element.SetBlockResolved(this.blockDefault & elementBlockAllowed);
}
}
else {
if ((element.Block & ~elementBlockAllowed) != 0) {
SendValidationEvent(Res.Sch_InvalidElementBlockValue, element);
}
element.SetBlockResolved(element.Block & elementBlockAllowed);
}
if (element.SchemaType != null) {
SetParent(element.SchemaType, element); //Set parent for simple / complex type child of element
if (!element.SchemaTypeName.IsEmpty) {
SendValidationEvent(Res.Sch_TypeMutualExclusive, element);
}
if (element.SchemaType is XmlSchemaComplexType) {
PreprocessComplexType((XmlSchemaComplexType)element.SchemaType, true);
}
else {
PreprocessSimpleType((XmlSchemaSimpleType)element.SchemaType, true);
}
}
if (!element.SchemaTypeName.IsEmpty) {
ValidateQNameAttribute(element, "type", element.SchemaTypeName);
}
if (element.DefaultValue != null && element.FixedValue != null) {
SendValidationEvent(Res.Sch_DefaultFixedAttributes, element);
}
foreach(XmlSchemaIdentityConstraint identityConstraint in element.Constraints) {
SetParent(identityConstraint, element);
PreprocessIdentityConstraint(identityConstraint);
}
}