private TypeItems GetTypeItems(XmlSchemaType type)
{
TypeItems items = new TypeItems();
if (type is XmlSchemaComplexType)
{
XmlSchemaParticle particle = null;
XmlSchemaComplexType ct = (XmlSchemaComplexType)type;
if (ct.ContentModel != null)
{
XmlSchemaContent content = ct.ContentModel.Content;
if (content is XmlSchemaComplexContentExtension)
{
XmlSchemaComplexContentExtension extension = (XmlSchemaComplexContentExtension)content;
items.Attributes = extension.Attributes;
items.AnyAttribute = extension.AnyAttribute;
particle = extension.Particle;
}
else if (content is XmlSchemaSimpleContentExtension)
{
XmlSchemaSimpleContentExtension extension = (XmlSchemaSimpleContentExtension)content;
items.Attributes = extension.Attributes;
items.AnyAttribute = extension.AnyAttribute;
items.baseSimpleType = extension.BaseTypeName;
}
}
else
{
items.Attributes = ct.Attributes;
items.AnyAttribute = ct.AnyAttribute;
particle = ct.Particle;
}
if (particle is XmlSchemaGroupRef)
{
XmlSchemaGroupRef refGroup = (XmlSchemaGroupRef)particle;
items.Particle = FindGroup(refGroup.RefName).Particle;
items.IsUnbounded = particle.IsMultipleOccurrence;
}
else if (particle is XmlSchemaGroupBase)
{
items.Particle = (XmlSchemaGroupBase)particle;
items.IsUnbounded = particle.IsMultipleOccurrence;
}
}
return items;
}