2003-07-12 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
[mono.git] / mcs / class / System.XML / System.Xml.Schema / BuiltInDatatype.cs
1 //\r
2 // System.Xml.Schema.XmlSchemaDatatype.cs\r
3 //\r
4 // Author:\r
5 //      Atsushi Enomoto\r
6 //\r
7 // (C)2003 Atsushi Enomoto\r
8 //\r
9 using System;\r
10 using System.Collections;\r
11 using System.Text;\r
12 using System.Xml;\r
13 using System.Xml.Schema;\r
14 \r
15 namespace Mono.Xml.Schema\r
16 {\r
17         public enum XsdWhitespaceFacet\r
18         {\r
19                 Preserve,\r
20                 Replace,\r
21                 Collapse\r
22         }\r
23 \r
24         // xs:string\r
25         public class XsdString : XmlSchemaDatatype\r
26         {\r
27                 internal XsdString ()\r
28                 {\r
29                 }\r
30 \r
31                 public override XmlTokenizedType TokenizedType {\r
32                         get { return XmlTokenizedType.CDATA; }\r
33                 }\r
34 \r
35                 public override Type ValueType {\r
36                         get { return typeof (string); }\r
37                 }\r
38 \r
39                 public override object ParseValue (string s,\r
40                         XmlNameTable nameTable, XmlNamespaceManager nsmgr)\r
41                 {\r
42                         return Normalize (s);\r
43                 }\r
44 \r
45                 // Fundamental Facets\r
46                 public virtual bool Bounded {\r
47                         get { return false; }\r
48                 }\r
49                 public virtual bool Finite {\r
50                         get { return false; }\r
51                 }\r
52                 public virtual bool Numeric {\r
53                         get { return false; }\r
54                 }\r
55                 public virtual bool Ordered {\r
56                         get { return false; }\r
57                 }\r
58 \r
59                 // Constraining Facets\r
60                 public bool HasLengthFacet;\r
61                 public bool HasMaxLengthFacet;\r
62                 public bool HasMinLengthFacet;\r
63                 public int Length;\r
64                 public int MaxLength;\r
65                 public int MinLength;\r
66                 public string Pattern;\r
67                 public ICollection Enumeration;\r
68         }\r
69 \r
70         // xs:normalizedString\r
71         public class XsdNormalizedString : XsdString\r
72         {\r
73                 internal XsdNormalizedString ()\r
74                 {\r
75                         this.WhitespaceValue = XsdWhitespaceFacet.Replace;\r
76                 }\r
77 \r
78                 public override XmlTokenizedType TokenizedType {\r
79                         get { return XmlTokenizedType.CDATA; }\r
80                 }\r
81 \r
82                 public override Type ValueType {\r
83                         get { return typeof (string); }\r
84                 }\r
85 \r
86                 // ParseValue () method is as same as that of xs:string\r
87         }\r
88 \r
89         // xs:token\r
90         public class XsdToken : XsdNormalizedString\r
91         {\r
92                 internal XsdToken ()\r
93                 {\r
94                 }\r
95 \r
96                 public override XmlTokenizedType TokenizedType {\r
97                         get { return XmlTokenizedType.CDATA; }\r
98                 }\r
99 \r
100                 public override Type ValueType {\r
101                         get { return typeof (string); }\r
102                 }\r
103 \r
104                 // ParseValue () method is as same as that of xs:string\r
105         }\r
106 \r
107         // xs:language\r
108         public class XsdLanguage : XsdToken\r
109         {\r
110                 internal XsdLanguage ()\r
111                 {\r
112                 }\r
113 \r
114                 public override XmlTokenizedType TokenizedType {\r
115                         get { return XmlTokenizedType.CDATA; }\r
116                 }\r
117 \r
118                 public override Type ValueType {\r
119                         get { return typeof (string); }\r
120                 }\r
121 \r
122                 // ParseValue () method is as same as that of xs:string\r
123         }\r
124 \r
125         // xs;NMTOKEN\r
126         public class XsdNMToken : XsdToken\r
127         {\r
128                 internal XsdNMToken ()\r
129                 {\r
130                 }\r
131 \r
132                 public override XmlTokenizedType TokenizedType {\r
133                         get { return XmlTokenizedType.NMTOKEN; }\r
134                 }\r
135 \r
136                 public override Type ValueType {\r
137                         get { return typeof (string); }\r
138                 }\r
139 \r
140                 // ParseValue () method is as same as that of xs:string\r
141         }\r
142 \r
143         // xs:NMTOKENS\r
144         public class XsdNMTokens : XsdNMToken\r
145         {\r
146                 internal XsdNMTokens ()\r
147                 {\r
148                 }\r
149 \r
150                 public override XmlTokenizedType TokenizedType {\r
151                         get { return XmlTokenizedType.NMTOKENS; }\r
152                 }\r
153 \r
154                 public override Type ValueType {\r
155                         get { return typeof (string []); }\r
156                 }\r
157 \r
158                 // ParseValue () method is as same as that of xs:string\r
159         }\r
160 \r
161         // xs:Name\r
162         public class XsdName : XsdToken\r
163         {\r
164                 internal XsdName ()\r
165                 {\r
166                 }\r
167 \r
168                 public override XmlTokenizedType TokenizedType {\r
169                         get { return XmlTokenizedType.CDATA; }\r
170                 }\r
171 \r
172                 public override Type ValueType {\r
173                         get { return typeof (string); }\r
174                 }\r
175 \r
176                 // ParseValue () method is as same as that of xs:string\r
177         }\r
178 \r
179         // xs:NCName\r
180         public class XsdNCName : XsdName\r
181         {\r
182                 internal XsdNCName ()\r
183                 {\r
184                 }\r
185 \r
186                 public override XmlTokenizedType TokenizedType {\r
187                         get { return XmlTokenizedType.NCName; }\r
188                 }\r
189 \r
190                 public override Type ValueType {\r
191                         get { return typeof (string); }\r
192                 }\r
193 \r
194                 // ParseValue () method is as same as that of xs:string\r
195         }\r
196 \r
197         // xs:ID\r
198         public class XsdID : XsdName\r
199         {\r
200                 internal XsdID ()\r
201                 {\r
202                 }\r
203 \r
204                 public override XmlTokenizedType TokenizedType {\r
205                         get { return XmlTokenizedType.ID; }\r
206                 }\r
207 \r
208                 public override Type ValueType {\r
209                         get { return typeof (string); }\r
210                 }\r
211 \r
212                 // ParseValue () method is as same as that of xs:string\r
213         }\r
214 \r
215         // xs:IDREF\r
216         public class XsdIDRef : XsdName\r
217         {\r
218                 internal XsdIDRef ()\r
219                 {\r
220                 }\r
221 \r
222                 public override XmlTokenizedType TokenizedType {\r
223                         get { return XmlTokenizedType.IDREF; }\r
224                 }\r
225 \r
226                 public override Type ValueType {\r
227                         get { return typeof (string); }\r
228                 }\r
229 \r
230                 // ParseValue () method is as same as that of xs:string\r
231         }\r
232 \r
233         // xs:IDREFS\r
234         public class XsdIDRefs : XsdName\r
235         {\r
236                 internal XsdIDRefs ()\r
237                 {\r
238                 }\r
239 \r
240                 public override XmlTokenizedType TokenizedType {\r
241                         get { return XmlTokenizedType.IDREFS; }\r
242                 }\r
243 \r
244                 public override Type ValueType {\r
245                         get { return typeof (string []); }\r
246                 }\r
247 \r
248                 // ParseValue () method is as same as that of xs:string\r
249         }\r
250 \r
251         // xs:ENTITY\r
252         public class XsdEntity : XsdName\r
253         {\r
254                 internal XsdEntity ()\r
255                 {\r
256                 }\r
257 \r
258                 public override XmlTokenizedType TokenizedType {\r
259                         get { return XmlTokenizedType.ENTITY; }\r
260                 }\r
261 \r
262                 public override Type ValueType {\r
263                         get { return typeof (string); }\r
264                 }\r
265 \r
266                 // ParseValue () method is as same as that of xs:string\r
267         }\r
268 \r
269         // xs:ENTITIES\r
270         public class XsdEntities : XsdName\r
271         {\r
272                 internal XsdEntities ()\r
273                 {\r
274                 }\r
275 \r
276                 public override XmlTokenizedType TokenizedType {\r
277                         get { return XmlTokenizedType.ENTITIES; }\r
278                 }\r
279 \r
280                 public override Type ValueType {\r
281                         get { return typeof (string []); }\r
282                 }\r
283 \r
284                 // ParseValue () method is as same as that of xs:string\r
285         }\r
286 \r
287         // xs:NOTATION\r
288         public class XsdNotation : XmlSchemaDatatype\r
289         {\r
290                 internal XsdNotation ()\r
291                 {\r
292                 }\r
293 \r
294                 public override XmlTokenizedType TokenizedType {\r
295                         get { return XmlTokenizedType.NOTATION; }\r
296                 }\r
297 \r
298                 public override Type ValueType {\r
299                         get { return typeof (string); }\r
300                 }\r
301 \r
302                 public override object ParseValue (string s,\r
303                         XmlNameTable nameTable, XmlNamespaceManager nsmgr)\r
304                 {\r
305                         throw new NotImplementedException ();\r
306                 }\r
307 \r
308                 // Fundamental Facets\r
309                 public virtual bool Bounded {\r
310                         get { return false; }\r
311                 }\r
312                 public virtual bool Finite {\r
313                         get { return false; }\r
314                 }\r
315                 public virtual bool Numeric {\r
316                         get { return false; }\r
317                 }\r
318                 public virtual bool Ordered {\r
319                         get { return false; }\r
320                 }\r
321 \r
322                 // Constraining Facets\r
323                 public bool HasLengthFacet;\r
324                 public bool HasMaxLengthFacet;\r
325                 public bool HasMinLengthFacet;\r
326                 public int Length;\r
327                 public int MaxLength;\r
328                 public int MinLength;\r
329                 public string Pattern;\r
330                 public ICollection Enumeration;\r
331         }\r
332 \r
333 }\r