System.Xml.Schema.Compiler.CannonicalizeSequence C# (CSharp) Méthode

CannonicalizeSequence() private méthode

private CannonicalizeSequence ( XmlSchemaSequence sequence, bool root ) : XmlSchemaParticle
sequence XmlSchemaSequence
root bool
Résultat XmlSchemaParticle
        private XmlSchemaParticle CannonicalizeSequence(XmlSchemaSequence sequence, bool root) {
            if (sequence.Items.Count > 0) {
                XmlSchemaSequence newSequence = new XmlSchemaSequence();
                newSequence.MinOccurs = sequence.MinOccurs;
                newSequence.MaxOccurs = sequence.MaxOccurs;
                CopyPosition(newSequence, sequence, true);
                foreach (XmlSchemaParticle p in sequence.Items) {
                    XmlSchemaParticle p1 = CannonicalizeParticle(p, false);
                    if (p1 != XmlSchemaParticle.Empty) {
                        if (p1.MinOccurs == decimal.One && p1.MaxOccurs == decimal.One && p1 is XmlSchemaSequence) {
                            foreach (XmlSchemaParticle p2 in ((XmlSchemaSequence)p1).Items) {
                                newSequence.Items.Add(p2);
                            }
                        }
                        else {
                            newSequence.Items.Add(p1);
                        }
                    }
                }
                sequence = newSequence;
            }
            if (sequence.Items.Count == 0) {
                return XmlSchemaParticle.Empty;
            }
            else if (!root && sequence.Items.Count == 1 && sequence.MinOccurs == decimal.One && sequence.MaxOccurs == decimal.One) {
                return (XmlSchemaParticle)sequence.Items[0];
            }
            else {
                return sequence;
            }
        }
        
Compiler