get { return WhitespaceValue; }\r
}\r
\r
+#if NET_2_0\r
+ public virtual XmlTypeCode TypeCode {\r
+ // Actually no way to verify default value, since\r
+ // in .NET 2.0 it cannot be derived externally anymore.\r
+ get { return XmlTypeCode.None; }\r
+ }\r
+\r
+ public virtual XmlSchemaDatatypeVariety Variety {\r
+ get {\r
+ return XmlSchemaDatatypeVariety.Atomic;\r
+ }\r
+ }\r
+#endif\r
+\r
public abstract XmlTokenizedType TokenizedType { get; }\r
public abstract Type ValueType { get; }\r
\r
// Methods\r
+#if NET_2_0\r
+ [MonoTODO]\r
+ public virtual object ChangeType (object value, Type targetType)\r
+ {\r
+ return ChangeType (value, targetType, null);\r
+ }\r
+\r
+ [MonoTODO]\r
+ public virtual object ChangeType (object value, Type targetType, IXmlNamespaceResolver nsResolver)\r
+ {\r
+ throw new NotImplementedException ();\r
+ }\r
+\r
+ public virtual bool IsDerivedFrom (XmlSchemaDatatype datatype)\r
+ {\r
+ // It is documented to return always false, but\r
+ // actually returns true when the argument is for\r
+ // the same type (and it does not check null argument).\r
+ return this == datatype;\r
+ }\r
+#endif\r
+\r
+#if NET_2_0\r
public abstract object ParseValue (string s, \r
- XmlNameTable nameTable, XmlNamespaceManager nsmgr);\r
+ XmlNameTable nameTable, IXmlNamespaceResolver nsmgr);\r
\r
- internal abstract ValueType ParseValueType (string s,\r
+ internal virtual ValueType ParseValueType (string s,\r
+ XmlNameTable nameTable, IXmlNamespaceResolver nsmgr)\r
+ {\r
+ return null;\r
+ }\r
+#else\r
+ public abstract object ParseValue (string s, \r
XmlNameTable nameTable, XmlNamespaceManager nsmgr);\r
\r
+ internal virtual ValueType ParseValueType (string s,\r
+ XmlNameTable nameTable, XmlNamespaceManager nsmgr)\r
+ {\r
+ return null;\r
+ }\r
+#endif\r
+\r
static char [] wsChars = new char [] {' ', '\t', '\n', '\r'};\r
\r
StringBuilder sb = new StringBuilder ();\r
\r
internal static XmlSchemaDatatype FromName (XmlQualifiedName qname)\r
{\r
- if (qname.Namespace != XmlSchema.Namespace)\r
- throw new InvalidOperationException ("Namespace " + XmlSchema.Namespace + " is required.");\r
- return FromName (qname.Name);\r
+ return FromName (qname.Name, qname.Namespace);\r
}\r
\r
- internal static XmlSchemaDatatype FromName (string localName)\r
+ internal static XmlSchemaDatatype FromName (string localName, string ns)\r
{\r
+ switch (ns) {\r
+ case XmlSchema.Namespace:\r
+ break;\r
+#if NET_2_0\r
+ case XmlSchema.XdtNamespace:\r
+ switch (localName) {\r
+ case "anyAtomicType":\r
+ return datatypeAnyAtomicType;\r
+ case "untypedAtomic":\r
+ return datatypeUntypedAtomic;\r
+ case "dayTimeDuration":\r
+ return datatypeDayTimeDuration;\r
+ case "yearMonthDuration":\r
+ return datatypeYearMonthDuration;\r
+ }\r
+ return null;\r
+#endif\r
+ default:\r
+ // Maybe invalid name was specified. In such cases, let processors handle them.\r
+ return null;\r
+ }\r
+\r
switch (localName) {\r
case "anySimpleType":\r
return datatypeAnySimpleType;\r
static readonly XsdGYear datatypeGYear = new XsdGYear ();\r
static readonly XsdGMonth datatypeGMonth = new XsdGMonth ();\r
static readonly XsdGDay datatypeGDay = new XsdGDay ();\r
+#if NET_2_0\r
+ static readonly XdtAnyAtomicType datatypeAnyAtomicType\r
+ = new XdtAnyAtomicType ();\r
+ static readonly XdtUntypedAtomic datatypeUntypedAtomic\r
+ = new XdtUntypedAtomic ();\r
+ static readonly XdtDayTimeDuration datatypeDayTimeDuration\r
+ = new XdtDayTimeDuration ();\r
+ static readonly XdtYearMonthDuration datatypeYearMonthDuration\r
+ = new XdtYearMonthDuration ();\r
+#endif\r
+\r
}\r
}