private bool isMixed;\r
private string name;\r
bool recursed;\r
-#if NET_2_0\r
- private XmlTypeCode typeCodeForPredefinedTypes;\r
-#endif\r
+\r
internal XmlQualifiedName BaseSchemaTypeName;\r
internal XmlSchemaType BaseXmlSchemaTypeInternal;\r
internal XmlSchemaDatatype DatatypeInternal;\r
}\r
\r
#if NET_2_0\r
- [MonoTODO]\r
// LAMESPEC: for IDREFS it returns Idref. for ENTITIES \r
// it returns Entity. for NMTOKENS it returns NmToken.\r
+ [XmlIgnore]\r
public XmlTypeCode TypeCode {\r
get {\r
- if (typeCodeForPredefinedTypes != XmlTypeCode.None) // anySimpleType, anyType etc.\r
- return typeCodeForPredefinedTypes;\r
- if (DatatypeInternal != null)\r
- return DatatypeInternal.TypeCode;\r
+ if (this == XmlSchemaComplexType.AnyType)\r
+ return XmlTypeCode.Item;\r
if (DatatypeInternal == XmlSchemaSimpleType.AnySimpleType)\r
return XmlTypeCode.AnyAtomicType;\r
- if (this == XmlSchemaComplexType.AnyType)\r
- return XmlTypeCode.None;\r
+ if (this == XmlSchemaSimpleType.XsIDRefs)\r
+ return XmlTypeCode.Idref;\r
+ if (this == XmlSchemaSimpleType.XsEntities)\r
+ return XmlTypeCode.Entity;\r
+ if (this == XmlSchemaSimpleType.XsNMTokens)\r
+ return XmlTypeCode.NmToken;\r
+ if (DatatypeInternal != null)\r
+ return DatatypeInternal.TypeCode;\r
return BaseXmlSchemaType.TypeCode;\r
}\r
}\r
#endif\r
#endregion\r
\r
+#if NET_2_0\r
+ internal static XmlSchemaType GetBuiltInType (XmlQualifiedName qualifiedName)\r
+ {\r
+ XmlSchemaType t = GetBuiltInSimpleType (qualifiedName);\r
+ if (t == null)\r
+ t = GetBuiltInComplexType (qualifiedName);\r
+ return t;\r
+ }\r
+\r
+ internal static XmlSchemaType GetBuiltInType (XmlTypeCode typecode)\r
+ {\r
+ if (typecode == XmlTypeCode.Item)\r
+ return XmlSchemaComplexType.AnyType;\r
+ return GetBuiltInSimpleType (typecode);\r
+ }\r
+#endif\r
+\r
#if NET_2_0\r
public static XmlSchemaComplexType GetBuiltInComplexType (XmlQualifiedName qualifiedName)\r
#else\r
internal static XmlSchemaComplexType GetBuiltInComplexType (XmlQualifiedName qualifiedName)\r
#endif\r
{\r
- if (qualifiedName == XmlSchemaComplexType.AnyType.QualifiedName)\r
+ if (qualifiedName.Name == "anyType" && qualifiedName.Namespace == XmlSchema.Namespace)\r
return XmlSchemaComplexType.AnyType;\r
\r
return null;\r
}\r
\r
+#if NET_2_0\r
+ public static XmlSchemaComplexType GetBuiltInComplexType (XmlTypeCode type)\r
+ {\r
+ switch (type) {\r
+ case XmlTypeCode.Item:\r
+ return XmlSchemaComplexType.AnyType;\r
+ }\r
+ return null;\r
+ }\r
+#endif\r
+\r
#if NET_2_0\r
[MonoTODO]\r
public static XmlSchemaSimpleType GetBuiltInSimpleType (XmlQualifiedName qualifiedName)\r
return XmlSchemaSimpleType.XsUnsignedLong;\r
case "unsignedInt":\r
return XmlSchemaSimpleType.XsUnsignedInt;\r
- case "unsingedShort":\r
+ case "unsignedShort":\r
return XmlSchemaSimpleType.XsUnsignedShort;\r
case "unsignedByte":\r
return XmlSchemaSimpleType.XsUnsignedByte;\r
return null;\r
}\r
\r
- [MonoTODO]\r
public static bool IsDerivedFrom (XmlSchemaType derivedType, XmlSchemaType baseType, XmlSchemaDerivationMethod except)\r
{\r
- throw new NotImplementedException ();\r
+ if (derivedType.BaseXmlSchemaType == null)\r
+ return false;\r
+ if ((derivedType.DerivedBy & except) != 0)\r
+ return false;\r
+ if (derivedType.BaseXmlSchemaType == baseType)\r
+ return true;\r
+ return IsDerivedFrom (derivedType.BaseXmlSchemaType,\r
+ baseType, except);\r
}\r
#endif\r
\r