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); }
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); }
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; }