internal XSAttributeGroupDefinition(XmlSchemaAttributeGroupRef xmlAttributeGroupRef) : this() { _attributeGroup = xmlAttributeGroupRef; if (_attributeGroup.Annotation is XmlSchemaAnnotation annotation) { _annotation = XMLSchemaSerializer.CreateXSAnnotation(annotation); _annotation.BindToContainer(RootContainer, this); } if (xmlAttributeGroupRef.RefName is XmlQualifiedName qualifiedName) { _reference = XMLSchemaSerializer.CreateXMLExpandedName(qualifiedName); } }
internal XSModelGroup(XmlSchemaGroupBase groupBase) : this() { _group = groupBase; if (_group.Annotation is XmlSchemaAnnotation annotation) { _annotation = XMLSchemaSerializer.CreateXSAnnotation(annotation); _annotation.BindToContainer(RootContainer, this); } if (groupBase is XmlSchemaAll) { _compositor = XSCompositor.All; } else if (groupBase is XmlSchemaChoice) { _compositor = XSCompositor.Choice; } else if (groupBase is XmlSchemaSequence) { _compositor = XSCompositor.Sequence; } Particles.Inserted -= Particles_Inserted; foreach (XmlSchemaObject item in _group.Items) { IXSComponent component = XMLSchemaSerializer.CreateInstance(item); component.BindToContainer(RootContainer, this); Particles.Add(component); Components.Add(component); } Particles.Inserted += Particles_Inserted; }
internal XSComplexTypeDefinition(XmlSchemaComplexType complexType) : this() { _type = complexType; if (_type.Annotation is XmlSchemaAnnotation annotation) { _annotation = XMLSchemaSerializer.CreateXSAnnotation(annotation); _annotation.BindToContainer(RootContainer, this); } if (_type.ContentModel is XmlSchemaSimpleContent simpleContent) { _contentModel = XSContentModel.Simple; if (simpleContent.Content is XmlSchemaSimpleContentExtension contentExtension) { _derivationMethod = XSDerivationMethod.Extension; if (contentExtension.BaseTypeName is XmlQualifiedName qualifiedName) { _baseTypeName = XMLSchemaSerializer.CreateXMLExpandedName(qualifiedName); } if (contentExtension.AnyAttribute is XmlSchemaAnyAttribute anyAttribute) { _attributeWildcard = XMLSchemaSerializer.CreateXSWildcard(anyAttribute); } } else if (simpleContent.Content is XmlSchemaSimpleContentRestriction contentRestriction) { _derivationMethod = XSDerivationMethod.Restriction; if (contentRestriction.BaseTypeName is XmlQualifiedName qualifiedName) { _baseTypeName = XMLSchemaSerializer.CreateXMLExpandedName(qualifiedName); } if (contentRestriction.AnyAttribute is XmlSchemaAnyAttribute anyAttribute) { _attributeWildcard = XMLSchemaSerializer.CreateXSWildcard(anyAttribute); } } else { _derivationMethod = XSDerivationMethod.EmptyRef; } if (_type.Particle is XmlSchemaParticle particle) { _content = XMLSchemaSerializer.CreateInstance(particle); } } else if (_type.ContentModel is XmlSchemaComplexContent complexContent) { _contentModel = XSContentModel.Complex; if (complexContent.Content is XmlSchemaComplexContentExtension contentExtension) { _derivationMethod = XSDerivationMethod.Extension; if (contentExtension.BaseTypeName is XmlQualifiedName qualifiedName) { _baseTypeName = XMLSchemaSerializer.CreateXMLExpandedName(qualifiedName); } if (contentExtension.Particle is XmlSchemaParticle particle) { _content = XMLSchemaSerializer.CreateInstance(particle); } if (contentExtension.AnyAttribute is XmlSchemaAnyAttribute anyAttribute) { _attributeWildcard = XMLSchemaSerializer.CreateXSWildcard(anyAttribute); } } else if (complexContent.Content is XmlSchemaComplexContentRestriction contentRestriction) { _derivationMethod = XSDerivationMethod.Restriction; if (contentRestriction.BaseTypeName is XmlQualifiedName qualifiedName) { _baseTypeName = XMLSchemaSerializer.CreateXMLExpandedName(qualifiedName); } if (contentRestriction.Particle is XmlSchemaParticle particle) { _content = XMLSchemaSerializer.CreateInstance(particle); } if (contentRestriction.AnyAttribute is XmlSchemaAnyAttribute anyAttribute) { _attributeWildcard = XMLSchemaSerializer.CreateXSWildcard(anyAttribute); } } else { _derivationMethod = XSDerivationMethod.EmptyRef; if (_type.Particle is XmlSchemaParticle particle) { _content = XMLSchemaSerializer.CreateInstance(particle); } } } else { _contentModel = XSContentModel.EmptyRef; if (_type.Particle is XmlSchemaParticle particle) { _content = XMLSchemaSerializer.CreateInstance(particle); } } Attributes.Inserted -= Attributes_Inserted; foreach (XmlSchemaObject item in _type.Attributes) { IXSComponent component = XMLSchemaSerializer.CreateInstance(item); component.BindToContainer(RootContainer, this); Attributes.Add(component); Components.Add(component); } Attributes.Inserted += Attributes_Inserted; }