private ClrPropertyInfo BuildProperty(XmlSchemaElement elem, bool fromBaseType) { string identifierName = localSymbolTable.AddLocalElement(elem); XmlSchemaType schemaType = elem.ElementSchemaType; XmlQualifiedName schemaTypeName = schemaType.QualifiedName; string schemaName = elem.QualifiedName.Name; string schemaNs = elem.QualifiedName.Namespace; string clrNs = elem.FormResolved() == XmlSchemaForm.Qualified ? configSettings.GetClrNamespace(schemaNs) : string.Empty; SchemaOrigin typeRefOrigin = SchemaOrigin.Fragment; bool isTypeRef = false; bool anonymousType = schemaTypeName.IsEmpty ? true : false; XmlSchemaObject schemaObject = schemaType; ArrayList substitutionMembers = null; if (elem.IsGlobal()) { substitutionMembers = IsSubstitutionGroupHead(elem); schemaTypeName = elem.QualifiedName; isTypeRef = true; typeRefOrigin = SchemaOrigin.Element; schemaObject = schemas.GlobalElements [schemaTypeName]; //For ref, get the element decl SOM object, as nameMappings are keyed off the SOM object anonymousType = false; } ClrTypeReference typeRef = BuildTypeReference(schemaObject, schemaTypeName, anonymousType, true); typeRef.Origin = typeRefOrigin; typeRef.IsTypeRef = isTypeRef; if (anonymousType && !fromBaseType) { //to fixup later. localSymbolTable.AddAnonymousType(identifierName, elem, typeRef); } ClrPropertyInfo propertyInfo = new ClrPropertyInfo(identifierName, schemaNs, schemaName, GetOccurence(elem)); propertyInfo.Origin = SchemaOrigin.Element; propertyInfo.FromBaseType = fromBaseType; propertyInfo.TypeReference = typeRef; //SetFixedDefaultValue(elem, propertyInfo); if (substitutionMembers != null) { propertyInfo.SubstitutionMembers = substitutionMembers; } //BuildAnnotationInformation(propertyInfo, elem); return(propertyInfo); //Place it in the element's namespace, maybe element's parent type's namespace? }
private ClrPropertyInfo BuildProperty(XmlSchemaElement elem, bool fromBaseType) { string identifierName = this.localSymbolTable.AddLocalElement(elem); XmlSchemaType schemaType = elem.ElementSchemaType; XmlQualifiedName schemaTypeName = schemaType.QualifiedName; string schemaName = elem.QualifiedName.Name; string schemaNs = elem.QualifiedName.Namespace; string clrNs = (elem.FormResolved() == XmlSchemaForm.Qualified ? this.configSettings.GetClrNamespace(schemaNs) : string.Empty); SchemaOrigin typeRefOrigin = SchemaOrigin.Fragment; bool isTypeRef = false; bool anonymousType = schemaTypeName.IsEmpty; XmlSchemaObject schemaObject = schemaType; ArrayList substitutionMembers = null; if (elem.IsGlobal()) { substitutionMembers = this.IsSubstitutionGroupHead(elem); schemaTypeName = elem.QualifiedName; isTypeRef = true; typeRefOrigin = SchemaOrigin.Element; schemaObject = this.schemas.GlobalElements[schemaTypeName]; anonymousType = false; } ClrTypeReference typeRef = this.BuildTypeReference(schemaObject, schemaTypeName, anonymousType, true); typeRef.Origin = typeRefOrigin; typeRef.IsTypeRef = isTypeRef; if ((!anonymousType ? false : !fromBaseType)) { this.localSymbolTable.AddAnonymousType(identifierName, elem, typeRef); } ClrPropertyInfo propertyInfo = new ClrPropertyInfo(identifierName, schemaNs, schemaName, this.GetOccurence(elem)) { Origin = SchemaOrigin.Element, FromBaseType = fromBaseType, TypeReference = typeRef }; if (substitutionMembers != null) { propertyInfo.SubstitutionMembers = substitutionMembers; } return(propertyInfo); }
public static bool IsLocal(this XmlSchemaElement el) { return(!el.IsGlobal()); }