Ejemplo n.º 1
0
        internal XSModelGroupDefinition(XmlSchemaGroup xmlGroup)
        {
            _group = xmlGroup;
            _name  = xmlGroup.Name;

            if (_group.Annotation is XmlSchemaAnnotation annotation)
            {
                _annotation = XMLSchemaSerializer.CreateXSAnnotation(annotation);
                _annotation.BindToContainer(RootContainer, this);
            }

            if (xmlGroup.Particle is XmlSchemaGroupBase xmlGroupBase)
            {
                IXSComponent component = XMLSchemaSerializer.CreateInstance(xmlGroupBase);

                if (component is XSParticle particle)
                {
                    _modelGroup = particle;
                }

                else if (component is XSModelGroup modelGroup)
                {
                    _modelGroup = modelGroup;
                }
            }
        }
        internal XSAttributeGroupDefinition(XmlSchemaAttributeGroup xmlAttributeGroup)
            : this()
        {
            _attributeGroup = xmlAttributeGroup;
            _name           = xmlAttributeGroup.Name;

            if (_attributeGroup.Annotation is XmlSchemaAnnotation annotation)
            {
                _annotation = XMLSchemaSerializer.CreateXSAnnotation(annotation);
                _annotation.BindToContainer(RootContainer, this);
            }

            if (xmlAttributeGroup.AnyAttribute is XmlSchemaAnyAttribute xmlAnyAttribute)
            {
                _wildcard = XMLSchemaSerializer.CreateXSWildcard(xmlAnyAttribute);
            }

            Content.Inserted -= Content_Inserted;
            foreach (XmlSchemaObject item in xmlAttributeGroup.Attributes)
            {
                IXSComponent component = XMLSchemaSerializer.CreateInstance(item);
                component.BindToContainer(RootContainer, this);
                Content.Add(component);
                Components.Add(component);
            }
            Content.Inserted += Content_Inserted;
        }
        internal XSSimpleTypeDefinition(XmlSchemaSimpleType simpleType)
            : this()
        {
            _type = simpleType;

            if (_type.Annotation is XmlSchemaAnnotation annotation)
            {
                _annotation = XMLSchemaSerializer.CreateXSAnnotation(annotation);
                _annotation.BindToContainer(RootContainer, this);
            }

            if (_type.Content is XmlSchemaSimpleTypeList typeList)
            {
                _variety = XSSimpleTypeVariety.List;

                if (typeList.ItemTypeName is XmlQualifiedName qualifiedName)
                {
                    _itemTypeName = new XMLExpandedName(qualifiedName);
                }
            }
            else if (_type.Content is XmlSchemaSimpleTypeUnion typeUnion)
            {
                _variety = XSSimpleTypeVariety.Union;

                MemberTypeDefinitions.Inserted -= MemberTypeDefinitions_Inserted;
                foreach (XmlSchemaObject item in typeUnion.BaseTypes)
                {
                    IXSComponent component = XMLSchemaSerializer.CreateInstance(item);
                    component.BindToContainer(RootContainer, this);
                    MemberTypeDefinitions.Add(component);
                    Components.Add(component);
                }
                MemberTypeDefinitions.Inserted += MemberTypeDefinitions_Inserted;
            }
            else if (_type.Content is XmlSchemaSimpleTypeRestriction typeRestriction)
            {
                _variety = XSSimpleTypeVariety.Atomic;

                if (typeRestriction.BaseTypeName is XmlQualifiedName qualifiedName)
                {
                    _baseTypeName = new XMLExpandedName(qualifiedName);
                }

                Facets.Inserted -= Facets_Inserted;
                foreach (XmlSchemaObject item in typeRestriction.Facets)
                {
                    IXSComponent component = XMLSchemaSerializer.CreateInstance(item);
                    component.BindToContainer(RootContainer, this);
                    Facets.Add(component);
                    Components.Add(component);
                }
                Facets.Inserted += Facets_Inserted;
            }
        }
Ejemplo n.º 4
0
        public void Add(IValue value)
        {
            IXSComponent Value = (IXSComponent)value;

            if (!(Value is IXSComponent))
            {
                throw RuntimeException.InvalidArgumentType();
            }

            _items.Add(Value);
            _owner.OnListInsert(this, Value);
        }
Ejemplo n.º 5
0
        private void Content_Inserted(object sender, XSComponentListEventArgs e)
        {
            IXSComponent component = e.Component;

            if (!(component is IXSAnnotationItem))
            {
                throw RuntimeException.InvalidArgumentType();
            }

            component.BindToContainer(RootContainer, this);
            Components.Add(component);
            InternalObject.Items.Add(component.SchemaObject);
        }
Ejemplo n.º 6
0
        internal XSAnnotation(XmlSchemaAnnotation annotation)
            : this()
        {
            InternalObject = annotation;

            Content.Inserted -= Content_Inserted;
            foreach (XmlSchemaObject item in InternalObject.Items)
            {
                IXSComponent component = XMLSchemaSerializer.CreateInstance(item);
                component.BindToContainer(RootContainer, this);
                Content.Add(component);
                Components.Add(component);
            }
            Content.Inserted += Content_Inserted;
        }
Ejemplo n.º 7
0
        internal XSRedefine(XmlSchemaRedefine redefine)
            : this()
        {
            _redefine = redefine;

            Content.Inserted -= Content_Inserted;
            Content.Cleared  -= Content_Cleared;

            foreach (XmlSchemaObject xmlObject in _redefine.Items)
            {
                IXSComponent component = XMLSchemaSerializer.CreateInstance(xmlObject);

                component.BindToContainer(RootContainer, this);
                Components.Add(component);
                Content.Add(component);
            }

            Content.Inserted += Content_Inserted;
            Content.Cleared  += Content_Cleared;
        }
Ejemplo n.º 8
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.º 9
0
 public void Insert(int index, IXSComponent value)
 {
     //=> _items.Insert(index, value);
     throw new NotImplementedException();
 }
Ejemplo n.º 10
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;
        }
Ejemplo n.º 11
0
 public void OnListInsert(XSComponentList List, IXSComponent component)
 {
     component.BindToContainer(_rootContainer, this);
     InternalObject.Items.Add(component.XmlSchemaObject);
     Components.Add(component);
 }
Ejemplo n.º 12
0
 public void BindToContainer(IXSComponent rootContainer, IXSComponent container)
 {
     _rootContainer = rootContainer;
     _container     = container;
 }
Ejemplo n.º 13
0
 private void InvokeEventDeleted(IXSComponent component)
 => Deleted?.Invoke(this, new XSComponentListEventArgs(component));
Ejemplo n.º 14
0
 public XSComponentListEventArgs(IXSComponent component) => Component = component;
Ejemplo n.º 15
0
 public bool Contains(IXSComponent component) => Components.Contains(component);
Ejemplo n.º 16
0
 public Boolean Contains(IXSComponent value)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 17
0
 public void Set(int index, IXSComponent value)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 18
0
 public void OnListDelete(XSComponentList List, IXSComponent component)
 {
 }