2005-01-31 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mcs / class / System.XML / System.Xml.Schema / XmlSchemaSimpleType.cs
index 3ffd20c213365faa53c117bed23c7fcfbc90f924..2be423e58cd3f2b0d5d50539084eada07fd7fbc4 100755 (executable)
@@ -47,6 +47,60 @@ namespace System.Xml.Schema
                private bool recursed;\r
                private XmlSchemaDerivationMethod variety;\r
 \r
+#if NET_2_0\r
+               // predefined simple types\r
+               internal static readonly XmlSchemaSimpleType XsAnySimpleType;\r
+               internal static readonly XmlSchemaSimpleType XsString;\r
+               internal static readonly XmlSchemaSimpleType XsBoolean;\r
+               internal static readonly XmlSchemaSimpleType XsDecimal;\r
+               internal static readonly XmlSchemaSimpleType XsFloat;\r
+               internal static readonly XmlSchemaSimpleType XsDouble;\r
+               internal static readonly XmlSchemaSimpleType XsDuration;\r
+               internal static readonly XmlSchemaSimpleType XsDateTime;\r
+               internal static readonly XmlSchemaSimpleType XsTime;\r
+               internal static readonly XmlSchemaSimpleType XsDate;\r
+               internal static readonly XmlSchemaSimpleType XsGYearMonth;\r
+               internal static readonly XmlSchemaSimpleType XsGYear;\r
+               internal static readonly XmlSchemaSimpleType XsGMonthDay;\r
+               internal static readonly XmlSchemaSimpleType XsGDay;\r
+               internal static readonly XmlSchemaSimpleType XsGMonth;\r
+               internal static readonly XmlSchemaSimpleType XsHexBinary;\r
+               internal static readonly XmlSchemaSimpleType XsBase64Binary;\r
+               internal static readonly XmlSchemaSimpleType XsAnyUri;\r
+               internal static readonly XmlSchemaSimpleType XsQName;\r
+               internal static readonly XmlSchemaSimpleType XsNotation;\r
+               internal static readonly XmlSchemaSimpleType XsNormalizedString;\r
+               internal static readonly XmlSchemaSimpleType XsToken;\r
+               internal static readonly XmlSchemaSimpleType XsLanguage;\r
+               internal static readonly XmlSchemaSimpleType XsNMToken;\r
+               internal static readonly XmlSchemaSimpleType XsNMTokens;\r
+               internal static readonly XmlSchemaSimpleType XsName;\r
+               internal static readonly XmlSchemaSimpleType XsNCName;\r
+               internal static readonly XmlSchemaSimpleType XsID;\r
+               internal static readonly XmlSchemaSimpleType XsIDRef;\r
+               internal static readonly XmlSchemaSimpleType XsIDRefs;\r
+               internal static readonly XmlSchemaSimpleType XsEntity;\r
+               internal static readonly XmlSchemaSimpleType XsEntities;\r
+               internal static readonly XmlSchemaSimpleType XsInteger;\r
+               internal static readonly XmlSchemaSimpleType XsNonPositiveInteger;\r
+               internal static readonly XmlSchemaSimpleType XsNegativeInteger;\r
+               internal static readonly XmlSchemaSimpleType XsLong;\r
+               internal static readonly XmlSchemaSimpleType XsInt;\r
+               internal static readonly XmlSchemaSimpleType XsShort;\r
+               internal static readonly XmlSchemaSimpleType XsByte;\r
+               internal static readonly XmlSchemaSimpleType XsNonNegativeInteger;\r
+               internal static readonly XmlSchemaSimpleType XsUnsignedLong;\r
+               internal static readonly XmlSchemaSimpleType XsUnsignedInt;\r
+               internal static readonly XmlSchemaSimpleType XsUnsignedShort;\r
+               internal static readonly XmlSchemaSimpleType XsUnsignedByte;\r
+               internal static readonly XmlSchemaSimpleType XsPositiveInteger;\r
+               // xdt:*\r
+               internal static readonly XmlSchemaSimpleType XdtUntypedAtomic;\r
+               internal static readonly XmlSchemaSimpleType XdtAnyAtomicType;\r
+               internal static readonly XmlSchemaSimpleType XdtYearMonthDuration;\r
+               internal static readonly XmlSchemaSimpleType XdtDayTimeDuration;\r
+#endif\r
+\r
                static XmlSchemaSimpleType ()\r
                {\r
                        // This is not used in the meantime.\r
@@ -57,8 +111,97 @@ namespace System.Xml.Schema
                        st.BaseXmlSchemaTypeInternal = null;\r
                        st.variety = XmlSchemaDerivationMethod.List;\r
                        schemaLocationType = st;\r
+\r
+#if NET_2_0\r
+                       // Built-In schema types\r
+                       XsAnySimpleType = BuildSchemaType ("anySimpleType", null);\r
+                       XsString = BuildSchemaType ("string", "anySimpleType");\r
+                       XsBoolean = BuildSchemaType ("boolean", "anySimpleType");\r
+                       XsDecimal = BuildSchemaType ("decimal", "anySimpleType");\r
+                       XsFloat = BuildSchemaType ("float", "anySimpleType");\r
+                       XsDouble = BuildSchemaType ("double", "anySimpleType");\r
+                       XsDuration = BuildSchemaType ("duration", "anySimpleType");\r
+                       XsDateTime = BuildSchemaType ("dateTime", "anySimpleType");\r
+                       XsTime = BuildSchemaType ("time", "anySimpleType");\r
+                       XsDate = BuildSchemaType ("date", "anySimpleType");\r
+                       XsGYearMonth = BuildSchemaType ("gYearMonth", "anySimpleType");\r
+                       XsGYear = BuildSchemaType ("gYear", "anySimpleType");\r
+                       XsGMonthDay = BuildSchemaType ("gMonthDay", "anySimpleType");\r
+                       XsGDay = BuildSchemaType ("gDay", "anySimpleType");\r
+                       XsGMonth = BuildSchemaType ("gMonth", "anySimpleType");\r
+                       XsHexBinary = BuildSchemaType ("hexBinary", "anySimpleType");\r
+                       XsBase64Binary = BuildSchemaType ("base64Binary", "anySimpleType");\r
+                       XsAnyUri = BuildSchemaType ("anyURI", "anySimpleType");\r
+                       XsQName = BuildSchemaType ("QName", "anySimpleType");\r
+                       XsNotation = BuildSchemaType ("NOTATION", "anySimpleType");\r
+                       // derived types\r
+                       XsNormalizedString = BuildSchemaType ("normalizedString", "string");\r
+                       XsToken = BuildSchemaType ("token", "normalizedString");\r
+                       XsLanguage = BuildSchemaType ("language", "token");\r
+                       XsNMToken = BuildSchemaType ("NMTOKEN", "token");\r
+                       XsName = BuildSchemaType ("Name", "token");\r
+                       XsNCName = BuildSchemaType ("NCName", "Name");\r
+\r
+                       XsID = BuildSchemaType ("ID", "NCName");\r
+                       XsIDRef = BuildSchemaType ("IDREF", "NCName");\r
+                       XsEntity = BuildSchemaType ("ENTITY", "NCName");\r
+\r
+                       XsInteger = BuildSchemaType ("integer", "decimal");\r
+                       XsNonPositiveInteger = BuildSchemaType ("nonPositiveInteger", "integer");\r
+                       XsNegativeInteger = BuildSchemaType ("negativeInteger", "nonPositiveInteger");\r
+                       XsLong = BuildSchemaType ("long", "integer");\r
+                       XsInt = BuildSchemaType ("int", "long");\r
+                       XsShort = BuildSchemaType ("short", "int");\r
+                       XsByte = BuildSchemaType ("byte", "short");\r
+                       XsNonNegativeInteger = BuildSchemaType ("nonNegativeInteger", "integer");\r
+                       XsUnsignedLong = BuildSchemaType ("unsignedLong", "nonNegativeInteger");\r
+                       XsUnsignedInt = BuildSchemaType ("unsignedInt", "unsignedLong");\r
+                       XsUnsignedShort = BuildSchemaType ("unsignedShort", "unsignedInt");\r
+                       XsUnsignedByte = BuildSchemaType ("unsignedByte", "unsignedShort");\r
+                       XsPositiveInteger = BuildSchemaType ("positiveInteger", "nonNegativeInteger");\r
+\r
+                       // xdt:*\r
+                       XdtAnyAtomicType = BuildSchemaType ("anyAtomicType", "anySimpleType", true, false);\r
+                       XdtUntypedAtomic = BuildSchemaType ("untypedAtomic", "anyAtomicType", true, true);\r
+                       XdtDayTimeDuration = BuildSchemaType ("dayTimeDuration", "duration", true, false);\r
+                       XdtYearMonthDuration = BuildSchemaType ("yearMonthDuration", "duration", true, false);\r
+\r
+                       // NMTOKENS, IDREFS, ENTITIES - lists\r
+                       XsIDRefs = new XmlSchemaSimpleType ();\r
+                       XmlSchemaSimpleTypeList sl = new XmlSchemaSimpleTypeList ();\r
+                       sl.ItemType = XsIDRef;\r
+                       XsIDRefs.Content = sl;\r
+                       XsEntities = new XmlSchemaSimpleType ();\r
+                       sl = new XmlSchemaSimpleTypeList ();\r
+                       sl.ItemType = XsEntity;\r
+                       XsEntities.Content = sl;\r
+                       XsNMTokens = new XmlSchemaSimpleType ();\r
+                       sl = new XmlSchemaSimpleTypeList ();\r
+                       sl.ItemType = XsNMToken;\r
+                       XsNMTokens.Content = sl;\r
+#endif\r
+               }\r
+\r
+#if NET_2_0\r
+               private static XmlSchemaSimpleType BuildSchemaType (string name, string baseName)\r
+               {\r
+                       return BuildSchemaType (name, baseName, false, false);\r
                }\r
 \r
+               private static XmlSchemaSimpleType BuildSchemaType (string name, string baseName, bool xdt, bool baseXdt)\r
+               {\r
+                       string ns = xdt ? "http://www.w3.org/2003/11/xpath-datatypes" : XmlSchema.Namespace;\r
+                       string ns2 = baseXdt ? "http://www.w3.org/2003/11/xpath-datatypes" : XmlSchema.Namespace;\r
+                       XmlSchemaSimpleType st = new XmlSchemaSimpleType ();\r
+                       st.QNameInternal = new XmlQualifiedName (name, ns);\r
+                       if (baseName != null)\r
+                               st.BaseXmlSchemaTypeInternal = XmlSchemaType. GetBuiltInSimpleType (new XmlQualifiedName (baseName, ns2));\r
+                       st.DatatypeInternal = XmlSchemaDatatype.FromName (st.QualifiedName);\r
+                       st.ValueConverter = XmlSchemaType.BuildConverter (st.TypeCode);\r
+                       return st;\r
+               }\r
+#endif\r
+\r
                internal static XsdAnySimpleType AnySimpleType {\r
                        get { return XsdAnySimpleType.Instance; }\r
                }\r
@@ -67,7 +210,7 @@ namespace System.Xml.Schema
                        get { return schemaLocationType; }\r
                }\r
 \r
-               public XmlSchemaSimpleType()\r
+               public XmlSchemaSimpleType ()\r
                {\r
                }\r
 \r
@@ -109,6 +252,10 @@ namespace System.Xml.Schema
                        // If this is already compiled this time, simply skip.\r
                        if (this.IsComplied (schema.CompilationId))\r
                                return 0;\r
+#if NET_2_0\r
+                       if (Content != null)\r
+                               Content.Parent = this;\r
+#endif\r
 \r
                        errorCount = 0;\r
 \r
@@ -300,8 +447,8 @@ namespace System.Xml.Schema
                                // TODO: 1.3 facet restriction valid.
                                break;
                        case XmlSchemaDerivationMethod.List:
+                               /*\r
                                XmlSchemaSimpleTypeList thisList = Content as XmlSchemaSimpleTypeList;
-                               /*
                                // 2.1 item list type not allowed
                                if (baseSimpleType != null && baseSimpleType.resolvedDerivedBy == XmlSchemaDerivationMethod.List)
                                        error (h, "Base list schema type is not allowed.");