private void Cleanup(XmlSchema schema) {
if (schema.IsProcessing) {
return;
}
schema.IsProcessing = true;
foreach(XmlSchemaExternal include in schema.Includes) {
if (include.Schema != null) {
Cleanup(include.Schema);
}
if (include is XmlSchemaRedefine) {
XmlSchemaRedefine rdef = include as XmlSchemaRedefine;
rdef.AttributeGroups.Clear();
rdef.Groups.Clear();
rdef.SchemaTypes.Clear();
}
}
schema.Attributes.Clear();
schema.AttributeGroups.Clear();
schema.SchemaTypes.Clear();
schema.Elements.Clear();
schema.Groups.Clear();
schema.Notations.Clear();
schema.Ids.Clear();
schema.IdentityConstraints.Clear();
schema.IsProcessing = false;
}