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);
            }
        }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
        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;
        }