private XmlSchemaSimpleType FindDataType(XmlQualifiedName name, TypeFlags flags)
{
if (name == null || name.IsEmpty)
{
return (XmlSchemaSimpleType)Scope.GetTypeDesc(typeof(string)).DataType;
}
TypeDesc typeDesc = Scope.GetTypeDesc(name.Name, name.Namespace, flags);
if (typeDesc != null && typeDesc.DataType is XmlSchemaSimpleType)
return (XmlSchemaSimpleType)typeDesc.DataType;
XmlSchemaSimpleType dataType = (XmlSchemaSimpleType)Schemas.Find(name, typeof(XmlSchemaSimpleType));
if (dataType != null)
{
return dataType;
}
if (name.Namespace == XmlSchema.Namespace)
return (XmlSchemaSimpleType)Scope.GetTypeDesc("string", XmlSchema.Namespace, flags).DataType;
else
{
if (name.Name == Soap.Array && name.Namespace == Soap.Encoding)
{
throw new InvalidOperationException(SR.Format(SR.XmlInvalidEncoding, name.ToString()));
}
else
{
throw new InvalidOperationException(SR.Format(SR.XmlMissingDataType, name.ToString()));
}
}
}