Esempio n. 1
0
        internal override XmlSchemaParticle GetOptimizedParticle(bool isTop)
        {
            if (OptimizedParticle != null)
            {
                return(OptimizedParticle);
            }
            if (Items.Count == 0 || ValidatedMaxOccurs == 0)
            {
                OptimizedParticle = XmlSchemaParticle.Empty;
                return(OptimizedParticle);
            }
            else if (Items.Count == 1)
            {
                if (ValidatedMinOccurs == 1 && ValidatedMaxOccurs == 1)
                {
                    XmlSchemaSequence seq = new XmlSchemaSequence();
                    this.CopyInfo(seq);
                    XmlSchemaParticle p = (XmlSchemaParticle)Items [0];
                    p = p.GetOptimizedParticle(false);
                    if (p == XmlSchemaParticle.Empty)
                    {
                        OptimizedParticle = p;
                    }
                    else
                    {
                        seq.Items.Add(p);
                        seq.CompiledItems.Add(p);
                        seq.Compile(null, schema);
                        OptimizedParticle = seq;
                    }
                    return(OptimizedParticle);
                }
            }

            XmlSchemaAll all = new XmlSchemaAll();

            CopyInfo(all);
            CopyOptimizedItems(all);
            OptimizedParticle = all;
            all.ComputeEmptiable();

            return(OptimizedParticle);
        }
Esempio n. 2
0
        internal override XmlSchemaParticle GetOptimizedParticle(bool isTop)
        {
            if (this.OptimizedParticle != null)
            {
                return(this.OptimizedParticle);
            }
            if (this.Items.Count == 0 || base.ValidatedMaxOccurs == 0m)
            {
                this.OptimizedParticle = XmlSchemaParticle.Empty;
                return(this.OptimizedParticle);
            }
            if (this.Items.Count == 1 && base.ValidatedMinOccurs == 1m && base.ValidatedMaxOccurs == 1m)
            {
                XmlSchemaSequence xmlSchemaSequence = new XmlSchemaSequence();
                this.CopyInfo(xmlSchemaSequence);
                XmlSchemaParticle xmlSchemaParticle = (XmlSchemaParticle)this.Items[0];
                xmlSchemaParticle = xmlSchemaParticle.GetOptimizedParticle(false);
                if (xmlSchemaParticle == XmlSchemaParticle.Empty)
                {
                    this.OptimizedParticle = xmlSchemaParticle;
                }
                else
                {
                    xmlSchemaSequence.Items.Add(xmlSchemaParticle);
                    xmlSchemaSequence.CompiledItems.Add(xmlSchemaParticle);
                    xmlSchemaSequence.Compile(null, this.schema);
                    this.OptimizedParticle = xmlSchemaSequence;
                }
                return(this.OptimizedParticle);
            }
            XmlSchemaAll xmlSchemaAll = new XmlSchemaAll();

            this.CopyInfo(xmlSchemaAll);
            base.CopyOptimizedItems(xmlSchemaAll);
            this.OptimizedParticle = xmlSchemaAll;
            xmlSchemaAll.ComputeEmptiable();
            return(this.OptimizedParticle);
        }
Esempio n. 3
0
		internal override XmlSchemaParticle GetOptimizedParticle (bool isTop)
		{
			if (OptimizedParticle != null)
				return OptimizedParticle;
			if (Items.Count == 0 || ValidatedMaxOccurs == 0) {
				OptimizedParticle = XmlSchemaParticle.Empty;
				return OptimizedParticle;
			}
			else if (Items.Count == 1) {
				if (ValidatedMinOccurs == 1 && ValidatedMaxOccurs == 1) {
					XmlSchemaSequence seq = new XmlSchemaSequence ();
					this.CopyInfo (seq);
					XmlSchemaParticle p = (XmlSchemaParticle) Items [0];
					p = p.GetOptimizedParticle (false);
					if (p == XmlSchemaParticle.Empty)
						OptimizedParticle = p;
					else {
						seq.Items.Add (p);
						seq.CompiledItems.Add (p);
						seq.Compile (null, schema);
						OptimizedParticle = seq;
					}
					return OptimizedParticle;
				}
			}

			XmlSchemaAll all = new XmlSchemaAll ();
			CopyInfo (all);
			CopyOptimizedItems (all);
			OptimizedParticle = all;
			all.ComputeEmptiable ();

			return OptimizedParticle;
		}