// Dwivedi, Ajay kumar <Adwiv@Yahoo.com>\r
// Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>\r
//\r
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
using System;\r
using System.Collections;\r
using System.Text;\r
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 string Normalize (string s, XsdWhitespaceFacet whitespaceFacet)\r
{\r
+ int idx = s.IndexOfAny (wsChars);\r
+ if (idx < 0)\r
+ return s;\r
switch (whitespaceFacet) {\r
case XsdWhitespaceFacet.Collapse:\r
string [] arr = s.Trim ().Split (wsChars);\r
- foreach (string one in arr)\r
+ for (int i = 0; i < arr.Length; i++) {\r
+ string one = arr [i];\r
if (one != "") {\r
sb.Append (one);\r
sb.Append (" ");\r
}\r
+ }\r
string result = sb.ToString ();\r
sb.Length = 0;\r
return result.Trim ();\r
sb [i] = ' ';\r
break;\r
}\r
- /*\r
- sb.Replace ('\r', ' ');\r
- sb.Replace ('\n', ' ');\r
- sb.Replace ('\t', ' ');\r
- */\r
result = sb.ToString ();\r
sb.Length = 0;\r
return result;\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
}\r
}\r
\r
- private static XsdAnySimpleType datatypeAnySimpleType = new XsdAnySimpleType ();\r
- private static XsdString datatypeString = new XsdString ();\r
- private static XsdNormalizedString datatypeNormalizedString = new XsdNormalizedString ();\r
- private static XsdToken datatypeToken = new XsdToken ();\r
- private static XsdLanguage datatypeLanguage = new XsdLanguage ();\r
- private static XsdNMToken datatypeNMToken = new XsdNMToken ();\r
- private static XsdNMTokens datatypeNMTokens = new XsdNMTokens ();\r
- private static XsdName datatypeName = new XsdName ();\r
- private static XsdNCName datatypeNCName = new XsdNCName ();\r
- private static XsdID datatypeID = new XsdID ();\r
- private static XsdIDRef datatypeIDRef = new XsdIDRef ();\r
- private static XsdIDRefs datatypeIDRefs = new XsdIDRefs ();\r
- private static XsdEntity datatypeEntity = new XsdEntity ();\r
- private static XsdEntities datatypeEntities = new XsdEntities ();\r
- private static XsdNotation datatypeNotation = new XsdNotation ();\r
- private static XsdDecimal datatypeDecimal = new XsdDecimal ();\r
- private static XsdInteger datatypeInteger = new XsdInteger ();\r
- private static XsdLong datatypeLong = new XsdLong ();\r
- private static XsdInt datatypeInt = new XsdInt ();\r
- private static XsdShort datatypeShort = new XsdShort ();\r
- private static XsdByte datatypeByte = new XsdByte ();\r
- private static XsdNonNegativeInteger datatypeNonNegativeInteger = new XsdNonNegativeInteger ();\r
- private static XsdPositiveInteger datatypePositiveInteger = new XsdPositiveInteger ();\r
- private static XsdUnsignedLong datatypeUnsignedLong = new XsdUnsignedLong ();\r
- private static XsdUnsignedInt datatypeUnsignedInt = new XsdUnsignedInt ();\r
- private static XsdUnsignedShort datatypeUnsignedShort = new XsdUnsignedShort ();\r
- private static XsdUnsignedByte datatypeUnsignedByte = new XsdUnsignedByte ();\r
- private static XsdNonPositiveInteger datatypeNonPositiveInteger = new XsdNonPositiveInteger ();\r
- private static XsdNegativeInteger datatypeNegativeInteger = new XsdNegativeInteger ();\r
- private static XsdFloat datatypeFloat = new XsdFloat ();\r
- private static XsdDouble datatypeDouble = new XsdDouble ();\r
- private static XsdBase64Binary datatypeBase64Binary = new XsdBase64Binary ();\r
- private static XsdBoolean datatypeBoolean = new XsdBoolean ();\r
- private static XsdAnyURI datatypeAnyURI = new XsdAnyURI ();\r
- private static XsdDuration datatypeDuration = new XsdDuration ();\r
- private static XsdDateTime datatypeDateTime = new XsdDateTime ();\r
- private static XsdDate datatypeDate = new XsdDate ();\r
- private static XsdTime datatypeTime = new XsdTime ();\r
- private static XsdHexBinary datatypeHexBinary = new XsdHexBinary ();\r
- private static XsdQName datatypeQName = new XsdQName ();\r
- private static XsdGYearMonth datatypeGYearMonth = new XsdGYearMonth ();\r
- private static XsdGMonthDay datatypeGMonthDay = new XsdGMonthDay ();\r
- private static XsdGYear datatypeGYear = new XsdGYear ();\r
- private static XsdGMonth datatypeGMonth = new XsdGMonth ();\r
- private static XsdGDay datatypeGDay = new XsdGDay ();\r
+ static readonly XsdAnySimpleType datatypeAnySimpleType = new XsdAnySimpleType ();\r
+ static readonly XsdString datatypeString = new XsdString ();\r
+ static readonly XsdNormalizedString datatypeNormalizedString = new XsdNormalizedString ();\r
+ static readonly XsdToken datatypeToken = new XsdToken ();\r
+ static readonly XsdLanguage datatypeLanguage = new XsdLanguage ();\r
+ static readonly XsdNMToken datatypeNMToken = new XsdNMToken ();\r
+ static readonly XsdNMTokens datatypeNMTokens = new XsdNMTokens ();\r
+ static readonly XsdName datatypeName = new XsdName ();\r
+ static readonly XsdNCName datatypeNCName = new XsdNCName ();\r
+ static readonly XsdID datatypeID = new XsdID ();\r
+ static readonly XsdIDRef datatypeIDRef = new XsdIDRef ();\r
+ static readonly XsdIDRefs datatypeIDRefs = new XsdIDRefs ();\r
+ static readonly XsdEntity datatypeEntity = new XsdEntity ();\r
+ static readonly XsdEntities datatypeEntities = new XsdEntities ();\r
+ static readonly XsdNotation datatypeNotation = new XsdNotation ();\r
+ static readonly XsdDecimal datatypeDecimal = new XsdDecimal ();\r
+ static readonly XsdInteger datatypeInteger = new XsdInteger ();\r
+ static readonly XsdLong datatypeLong = new XsdLong ();\r
+ static readonly XsdInt datatypeInt = new XsdInt ();\r
+ static readonly XsdShort datatypeShort = new XsdShort ();\r
+ static readonly XsdByte datatypeByte = new XsdByte ();\r
+ static readonly XsdNonNegativeInteger datatypeNonNegativeInteger = new XsdNonNegativeInteger ();\r
+ static readonly XsdPositiveInteger datatypePositiveInteger = new XsdPositiveInteger ();\r
+ static readonly XsdUnsignedLong datatypeUnsignedLong = new XsdUnsignedLong ();\r
+ static readonly XsdUnsignedInt datatypeUnsignedInt = new XsdUnsignedInt ();\r
+ static readonly XsdUnsignedShort datatypeUnsignedShort = new XsdUnsignedShort ();\r
+ static readonly XsdUnsignedByte datatypeUnsignedByte = new XsdUnsignedByte ();\r
+ static readonly XsdNonPositiveInteger datatypeNonPositiveInteger = new XsdNonPositiveInteger ();\r
+ static readonly XsdNegativeInteger datatypeNegativeInteger = new XsdNegativeInteger ();\r
+ static readonly XsdFloat datatypeFloat = new XsdFloat ();\r
+ static readonly XsdDouble datatypeDouble = new XsdDouble ();\r
+ static readonly XsdBase64Binary datatypeBase64Binary = new XsdBase64Binary ();\r
+ static readonly XsdBoolean datatypeBoolean = new XsdBoolean ();\r
+ static readonly XsdAnyURI datatypeAnyURI = new XsdAnyURI ();\r
+ static readonly XsdDuration datatypeDuration = new XsdDuration ();\r
+ static readonly XsdDateTime datatypeDateTime = new XsdDateTime ();\r
+ static readonly XsdDate datatypeDate = new XsdDate ();\r
+ static readonly XsdTime datatypeTime = new XsdTime ();\r
+ static readonly XsdHexBinary datatypeHexBinary = new XsdHexBinary ();\r
+ static readonly XsdQName datatypeQName = new XsdQName ();\r
+ static readonly XsdGYearMonth datatypeGYearMonth = new XsdGYearMonth ();\r
+ static readonly XsdGMonthDay datatypeGMonthDay = new XsdGMonthDay ();\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
}