private XmlSchemaElement GetSubstitutionGroupHead(XmlQualifiedName member)
{
XmlSchemaElement memberElem = _compiledSchemaInfo.GetElement(member);
if (memberElem != null)
{
XmlQualifiedName head = memberElem.SubstitutionGroup;
if (!head.IsEmpty)
{
XmlSchemaElement headElem = _compiledSchemaInfo.GetElement(head);
if (headElem != null)
{
if ((headElem.BlockResolved & XmlSchemaDerivationMethod.Substitution) != 0)
{
SendValidationEvent(SR.Sch_SubstitutionNotAllowed, new string[] { member.ToString(), head.ToString() });
return null;
}
if (!XmlSchemaType.IsDerivedFrom(memberElem.ElementSchemaType, headElem.ElementSchemaType, headElem.BlockResolved))
{
SendValidationEvent(SR.Sch_SubstitutionBlocked, new string[] { member.ToString(), head.ToString() });
return null;
}
return headElem;
}
}
}
return null;
}