internal virtual RestrictionFacets ConstructRestriction(DatatypeImplementation datatype, XmlSchemaObjectCollection facets, XmlNameTable nameTable) { RestrictionFacets restriction = new RestrictionFacets(); FacetsCompiler compiler = new FacetsCompiler(datatype, restriction); for (int i = 0; i < facets.Count; i++) { XmlSchemaFacet source = (XmlSchemaFacet) facets[i]; if (source.Value == null) { throw new XmlSchemaException("Sch_InvalidFacet", source); } IXmlNamespaceResolver nsmgr = new SchemaNamespaceManager(source); switch (source.FacetType) { case FacetType.Length: compiler.CompileLengthFacet(source); break; case FacetType.MinLength: compiler.CompileMinLengthFacet(source); break; case FacetType.MaxLength: compiler.CompileMaxLengthFacet(source); break; case FacetType.Pattern: compiler.CompilePatternFacet(source as XmlSchemaPatternFacet); break; case FacetType.Whitespace: compiler.CompileWhitespaceFacet(source); break; case FacetType.Enumeration: compiler.CompileEnumerationFacet(source, nsmgr, nameTable); break; case FacetType.MinExclusive: compiler.CompileMinExclusiveFacet(source); break; case FacetType.MinInclusive: compiler.CompileMinInclusiveFacet(source); break; case FacetType.MaxExclusive: compiler.CompileMaxExclusiveFacet(source); break; case FacetType.MaxInclusive: compiler.CompileMaxInclusiveFacet(source); break; case FacetType.TotalDigits: compiler.CompileTotalDigitsFacet(source); break; case FacetType.FractionDigits: compiler.CompileFractionDigitsFacet(source); break; default: throw new XmlSchemaException("Sch_UnknownFacet", source); } } compiler.FinishFacetCompile(); compiler.CompileFacetCombinations(); return restriction; }
//Compile-time Facet Checking internal virtual RestrictionFacets ConstructRestriction(DatatypeImplementation datatype, XmlSchemaObjectCollection facets, XmlNameTable nameTable) { //Datatype is the type on which this method is called RestrictionFacets derivedRestriction = new RestrictionFacets(); FacetsCompiler facetCompiler = new FacetsCompiler(datatype, derivedRestriction); for (int i = 0; i < facets.Count; ++i) { XmlSchemaFacet facet = (XmlSchemaFacet)facets[i]; if (facet.Value == null) { throw new XmlSchemaException(Res.Sch_InvalidFacet, facet); } IXmlNamespaceResolver nsmgr = new SchemaNamespaceManager(facet); switch(facet.FacetType) { case FacetType.Length: facetCompiler.CompileLengthFacet(facet); break; case FacetType.MinLength: facetCompiler.CompileMinLengthFacet(facet); break; case FacetType.MaxLength: facetCompiler.CompileMaxLengthFacet(facet); break; case FacetType.Pattern: facetCompiler.CompilePatternFacet(facet as XmlSchemaPatternFacet); break; case FacetType.Enumeration: facetCompiler.CompileEnumerationFacet(facet, nsmgr, nameTable); break; case FacetType.Whitespace: facetCompiler.CompileWhitespaceFacet(facet); break; case FacetType.MinInclusive: facetCompiler.CompileMinInclusiveFacet(facet); break; case FacetType.MinExclusive: facetCompiler.CompileMinExclusiveFacet(facet); break; case FacetType.MaxInclusive: facetCompiler.CompileMaxInclusiveFacet(facet); break; case FacetType.MaxExclusive: facetCompiler.CompileMaxExclusiveFacet(facet); break; case FacetType.TotalDigits: facetCompiler.CompileTotalDigitsFacet(facet); break; case FacetType.FractionDigits: facetCompiler.CompileFractionDigitsFacet(facet); break; default: throw new XmlSchemaException(Res.Sch_UnknownFacet, facet); } } facetCompiler.FinishFacetCompile(); facetCompiler.CompileFacetCombinations(); return derivedRestriction; }
internal virtual RestrictionFacets ConstructRestriction(DatatypeImplementation datatype, XmlSchemaObjectCollection facets, XmlNameTable nameTable) { RestrictionFacets restriction = new RestrictionFacets(); FacetsCompiler compiler = new FacetsCompiler(datatype, restriction); for (int i = 0; i < facets.Count; i++) { XmlSchemaFacet source = (XmlSchemaFacet)facets[i]; if (source.Value == null) { throw new XmlSchemaException("Sch_InvalidFacet", source); } IXmlNamespaceResolver nsmgr = new SchemaNamespaceManager(source); switch (source.FacetType) { case FacetType.Length: compiler.CompileLengthFacet(source); break; case FacetType.MinLength: compiler.CompileMinLengthFacet(source); break; case FacetType.MaxLength: compiler.CompileMaxLengthFacet(source); break; case FacetType.Pattern: compiler.CompilePatternFacet(source as XmlSchemaPatternFacet); break; case FacetType.Whitespace: compiler.CompileWhitespaceFacet(source); break; case FacetType.Enumeration: compiler.CompileEnumerationFacet(source, nsmgr, nameTable); break; case FacetType.MinExclusive: compiler.CompileMinExclusiveFacet(source); break; case FacetType.MinInclusive: compiler.CompileMinInclusiveFacet(source); break; case FacetType.MaxExclusive: compiler.CompileMaxExclusiveFacet(source); break; case FacetType.MaxInclusive: compiler.CompileMaxInclusiveFacet(source); break; case FacetType.TotalDigits: compiler.CompileTotalDigitsFacet(source); break; case FacetType.FractionDigits: compiler.CompileFractionDigitsFacet(source); break; default: throw new XmlSchemaException("Sch_UnknownFacet", source); } } compiler.FinishFacetCompile(); compiler.CompileFacetCombinations(); return(restriction); }