private bool BuildParticleContentModel(ParticleContentValidator contentValidator, XmlSchemaParticle particle) { bool flag = false; if (particle is XmlSchemaElement) { XmlSchemaElement element = (XmlSchemaElement) particle; contentValidator.AddName(element.QualifiedName, element); } else if (particle is XmlSchemaAny) { flag = true; XmlSchemaAny any = (XmlSchemaAny) particle; contentValidator.AddNamespaceList(any.NamespaceList, any); } else if (particle is XmlSchemaGroupBase) { XmlSchemaObjectCollection items = ((XmlSchemaGroupBase) particle).Items; bool flag2 = particle is XmlSchemaChoice; contentValidator.OpenGroup(); bool flag3 = true; for (int i = 0; i < items.Count; i++) { if (flag3) { flag3 = false; } else if (flag2) { contentValidator.AddChoice(); } else { contentValidator.AddSequence(); } flag = this.BuildParticleContentModel(contentValidator, (XmlSchemaParticle) items[i]); } contentValidator.CloseGroup(); } if ((particle.MinOccurs != 1M) || (particle.MaxOccurs != 1M)) { if ((particle.MinOccurs == 0M) && (particle.MaxOccurs == 1M)) { contentValidator.AddQMark(); return flag; } if ((particle.MinOccurs == 0M) && (particle.MaxOccurs == 79228162514264337593543950335M)) { contentValidator.AddStar(); return flag; } if ((particle.MinOccurs == 1M) && (particle.MaxOccurs == 79228162514264337593543950335M)) { contentValidator.AddPlus(); return flag; } contentValidator.AddLeafRange(particle.MinOccurs, particle.MaxOccurs); } return flag; }
private void ParseHowMany(ParticleContentValidator pcv) { switch (GetToken(false)) { case Token.Star: pcv.AddStar(); return; case Token.QMark: pcv.AddQMark(); return; case Token.Plus: pcv.AddPlus(); return; default: return; } }
private static void HandleMinMax(ParticleContentValidator pContent, uint cMin, uint cMax) { if (pContent != null) { if (cMax == uint.MaxValue) { if (cMin == 0) pContent.AddStar(); // minOccurs="0" and maxOccurs="infinite" else pContent.AddPlus(); // minOccurs="1" and maxOccurs="infinite" } else if (cMin == 0) { // minOccurs="0" and maxOccurs="1") pContent.AddQMark(); } } }
private bool BuildParticleContentModel(ParticleContentValidator contentValidator, XmlSchemaParticle particle) { bool hasWildCard = false; if (particle is XmlSchemaElement) { XmlSchemaElement element = (XmlSchemaElement)particle; contentValidator.AddName(element.QualifiedName, element); } else if (particle is XmlSchemaAny) { hasWildCard = true; XmlSchemaAny any = (XmlSchemaAny)particle; contentValidator.AddNamespaceList(any.NamespaceList, any); } else if (particle is XmlSchemaGroupBase) { XmlSchemaObjectCollection particles = ((XmlSchemaGroupBase)particle).Items; bool isChoice = particle is XmlSchemaChoice; contentValidator.OpenGroup(); bool first = true; for (int i = 0; i < particles.Count; ++i) { Debug.Assert(!((XmlSchemaParticle)particles[i]).IsEmpty); if (first) { first = false; } else if (isChoice) { contentValidator.AddChoice(); } else { contentValidator.AddSequence(); } hasWildCard = BuildParticleContentModel(contentValidator, (XmlSchemaParticle)particles[i]); } contentValidator.CloseGroup(); } else { Debug.Assert(false); } if (particle.MinOccurs == decimal.One && particle.MaxOccurs == decimal.One) { // nothing } else if (particle.MinOccurs == decimal.Zero && particle.MaxOccurs == decimal.One) { contentValidator.AddQMark(); } else if (particle.MinOccurs == decimal.Zero && particle.MaxOccurs == decimal.MaxValue) { contentValidator.AddStar(); } else if (particle.MinOccurs == decimal.One && particle.MaxOccurs == decimal.MaxValue) { contentValidator.AddPlus(); } else { contentValidator.AddLeafRange(particle.MinOccurs, particle.MaxOccurs); } return hasWildCard; }
private async Task ParseHowManyAsync( ParticleContentValidator pcv ) { switch ( await GetTokenAsync( false ).ConfigureAwait(false) ) { case Token.Star: pcv.AddStar(); return; case Token.QMark: pcv.AddQMark(); return; case Token.Plus: pcv.AddPlus(); return; default: return; } }
private static void HandleMinMax(ParticleContentValidator pContent, uint cMin, uint cMax) { if (pContent != null) { if (cMax == uint.MaxValue) { if (cMin == 0) { pContent.AddStar(); } else { pContent.AddPlus(); } } else if (cMin == 0) { pContent.AddQMark(); } } }
private void BuildParticleContentModel(ParticleContentValidator contentValidator, XmlSchemaParticle particle) { if (particle is XmlSchemaElement) { XmlSchemaElement element = (XmlSchemaElement)particle; contentValidator.AddName(element.QualifiedName, element); } else if (particle is XmlSchemaAny) { XmlSchemaAny any = (XmlSchemaAny)particle; contentValidator.AddNamespaceList(any.NamespaceList, any); } else if (particle is XmlSchemaGroupBase) { XmlSchemaObjectCollection particles = ((XmlSchemaGroupBase)particle).Items; bool isChoice = particle is XmlSchemaChoice; contentValidator.OpenGroup(); bool first = true; foreach (XmlSchemaParticle p in particles) { Debug.Assert(!p.IsEmpty); if (first) { first = false; } else if (isChoice) { contentValidator.AddChoice(); } else { contentValidator.AddSequence(); } BuildParticleContentModel(contentValidator, p); } contentValidator.CloseGroup(); } else { Debug.Assert(false); } if (particle.MinOccurs == decimal.One && particle.MaxOccurs == decimal.One) { // nothing } else if (particle.MinOccurs == decimal.Zero && particle.MaxOccurs == decimal.One) { contentValidator.AddQMark(); } else if (particle.MinOccurs == decimal.Zero && particle.MaxOccurs == decimal.MaxValue) { contentValidator.AddStar(); } else if (particle.MinOccurs == decimal.One && particle.MaxOccurs == decimal.MaxValue) { contentValidator.AddPlus(); } else { contentValidator.AddLeafRange(particle.MinOccurs, particle.MaxOccurs); } }