ContainsIdAttribute() private method

private ContainsIdAttribute ( bool findAll ) : bool
findAll bool
return bool
コード例 #1
0
 private void CompileComplexType(XmlSchemaComplexType complexType) {
     if (complexType.ElementDecl != null) { //already compiled
         return;
     }
     if (complexType.IsProcessing) {
         SendValidationEvent(Res.Sch_TypeCircularRef, complexType);
         return;
     }
     complexType.IsProcessing = true;
     try {
         if (complexType.ContentModel != null) { //simpleContent or complexContent
             if (complexType.ContentModel is XmlSchemaSimpleContent) {
                 XmlSchemaSimpleContent simpleContent = (XmlSchemaSimpleContent)complexType.ContentModel;
                 complexType.SetContentType(XmlSchemaContentType.TextOnly);
                 if (simpleContent.Content is XmlSchemaSimpleContentExtension) {
                     CompileSimpleContentExtension(complexType, (XmlSchemaSimpleContentExtension)simpleContent.Content);
                 }
                 else { //simpleContent.Content is XmlSchemaSimpleContentRestriction
                     CompileSimpleContentRestriction(complexType, (XmlSchemaSimpleContentRestriction)simpleContent.Content);
                 }
             }
             else { // complexType.ContentModel is XmlSchemaComplexContent
                 XmlSchemaComplexContent complexContent = (XmlSchemaComplexContent)complexType.ContentModel;
                 if (complexContent.Content is XmlSchemaComplexContentExtension) {
                     CompileComplexContentExtension(complexType, complexContent, (XmlSchemaComplexContentExtension)complexContent.Content);
                 }
                 else { // complexContent.Content is XmlSchemaComplexContentRestriction
                     CompileComplexContentRestriction(complexType, complexContent, (XmlSchemaComplexContentRestriction)complexContent.Content);
                 }
             }
         }
         else { //equals XmlSchemaComplexContent with baseType is anyType
                 complexType.SetBaseSchemaType(XmlSchemaComplexType.AnyType);
                 CompileLocalAttributes(XmlSchemaComplexType.AnyType, complexType, complexType.Attributes, complexType.AnyAttribute, XmlSchemaDerivationMethod.Restriction);
                 complexType.SetDerivedBy(XmlSchemaDerivationMethod.Restriction);
                 complexType.SetContentTypeParticle(CompileContentTypeParticle(complexType.Particle));
                 complexType.SetContentType(GetSchemaContentType(complexType, null, complexType.ContentTypeParticle));
         }
         if (complexType.ContainsIdAttribute(true)) {
             SendValidationEvent(Res.Sch_TwoIdAttrUses, complexType);
         }
         SchemaElementDecl decl = new SchemaElementDecl();
         decl.ContentValidator = CompileComplexContent(complexType);
         decl.SchemaType = complexType;
         decl.IsAbstract = complexType.IsAbstract;
         decl.Datatype = complexType.Datatype;
         decl.Block = complexType.BlockResolved;
         decl.AnyAttribute = complexType.AttributeWildcard;
         foreach(XmlSchemaAttribute attribute in complexType.AttributeUses.Values) {
             if (attribute.Use == XmlSchemaUse.Prohibited) {
                 if (!decl.ProhibitedAttributes.ContainsKey(attribute.QualifiedName)) {
                     decl.ProhibitedAttributes.Add(attribute.QualifiedName, attribute.QualifiedName);
                 }
             }
             else {
                 if (!decl.AttDefs.ContainsKey(attribute.QualifiedName) && attribute.AttDef != null && attribute.AttDef.Name != XmlQualifiedName.Empty && attribute.AttDef != SchemaAttDef.Empty) {
                     decl.AddAttDef(attribute.AttDef);
                 }
             }
         }
         complexType.ElementDecl = decl;
     }
     finally {
         complexType.IsProcessing = false;
     }
 }
コード例 #2
0
 private void CompileComplexType(XmlSchemaComplexType complexType)
 {
     if (complexType.ElementDecl == null)
     {
         if (complexType.IsProcessing)
         {
             base.SendValidationEvent("Sch_TypeCircularRef", complexType);
         }
         else
         {
             complexType.IsProcessing = true;
             try
             {
                 if (complexType.ContentModel != null)
                 {
                     if (complexType.ContentModel is XmlSchemaSimpleContent)
                     {
                         XmlSchemaSimpleContent contentModel = (XmlSchemaSimpleContent) complexType.ContentModel;
                         complexType.SetContentType(XmlSchemaContentType.TextOnly);
                         if (contentModel.Content is XmlSchemaSimpleContentExtension)
                         {
                             this.CompileSimpleContentExtension(complexType, (XmlSchemaSimpleContentExtension) contentModel.Content);
                         }
                         else
                         {
                             this.CompileSimpleContentRestriction(complexType, (XmlSchemaSimpleContentRestriction) contentModel.Content);
                         }
                     }
                     else
                     {
                         XmlSchemaComplexContent complexContent = (XmlSchemaComplexContent) complexType.ContentModel;
                         if (complexContent.Content is XmlSchemaComplexContentExtension)
                         {
                             this.CompileComplexContentExtension(complexType, complexContent, (XmlSchemaComplexContentExtension) complexContent.Content);
                         }
                         else
                         {
                             this.CompileComplexContentRestriction(complexType, complexContent, (XmlSchemaComplexContentRestriction) complexContent.Content);
                         }
                     }
                 }
                 else
                 {
                     complexType.SetBaseSchemaType(XmlSchemaComplexType.AnyType);
                     this.CompileLocalAttributes(XmlSchemaComplexType.AnyType, complexType, complexType.Attributes, complexType.AnyAttribute, XmlSchemaDerivationMethod.Restriction);
                     complexType.SetDerivedBy(XmlSchemaDerivationMethod.Restriction);
                     complexType.SetContentTypeParticle(this.CompileContentTypeParticle(complexType.Particle));
                     complexType.SetContentType(this.GetSchemaContentType(complexType, null, complexType.ContentTypeParticle));
                 }
                 if (complexType.ContainsIdAttribute(true))
                 {
                     base.SendValidationEvent("Sch_TwoIdAttrUses", complexType);
                 }
                 SchemaElementDecl decl = new SchemaElementDecl {
                     ContentValidator = this.CompileComplexContent(complexType),
                     SchemaType = complexType,
                     IsAbstract = complexType.IsAbstract,
                     Datatype = complexType.Datatype,
                     Block = complexType.BlockResolved,
                     AnyAttribute = complexType.AttributeWildcard
                 };
                 foreach (XmlSchemaAttribute attribute in complexType.AttributeUses.Values)
                 {
                     if (attribute.Use == XmlSchemaUse.Prohibited)
                     {
                         if (!decl.ProhibitedAttributes.ContainsKey(attribute.QualifiedName))
                         {
                             decl.ProhibitedAttributes.Add(attribute.QualifiedName, attribute.QualifiedName);
                         }
                     }
                     else if ((!decl.AttDefs.ContainsKey(attribute.QualifiedName) && (attribute.AttDef != null)) && ((attribute.AttDef.Name != XmlQualifiedName.Empty) && (attribute.AttDef != SchemaAttDef.Empty)))
                     {
                         decl.AddAttDef(attribute.AttDef);
                     }
                 }
                 complexType.ElementDecl = decl;
             }
             finally
             {
                 complexType.IsProcessing = false;
             }
         }
     }
 }