69b23b05edb8157047b02ffccfa0fb121d19498c
[mono.git] / mcs / class / referencesource / System.Xml / System / Xml / Schema / SchemaNames.cs
1 //------------------------------------------------------------------------------
2 // <copyright file="SchemaNames.cs" company="Microsoft">
3 //     Copyright (c) Microsoft Corporation.  All rights reserved.
4 // </copyright>
5 // <owner current="true" primary="true">Microsoft</owner>                                                                
6 //------------------------------------------------------------------------------
7
8 namespace System.Xml.Schema {
9
10     using System.Collections;
11     using System.Diagnostics;
12
13     internal sealed class SchemaNames {
14         XmlNameTable nameTable;
15
16         public XmlNameTable NameTable {
17             get { return nameTable; }
18         }
19
20         public string NsDataType;
21         public string NsDataTypeAlias;
22         public string NsDataTypeOld;
23         public string NsXml;
24         public string NsXmlNs;
25         public string NsXdr;
26         public string NsXdrAlias;
27         public string NsXs;
28         public string NsXsi;
29         public string XsiType;
30         public string XsiNil;
31         public string XsiSchemaLocation;
32         public string XsiNoNamespaceSchemaLocation;
33         public string XsdSchema;
34         public string XdrSchema;
35
36         public XmlQualifiedName QnPCData;
37         public XmlQualifiedName QnXml;
38         public XmlQualifiedName QnXmlNs;
39         public XmlQualifiedName QnDtDt;
40         public XmlQualifiedName QnXmlLang;
41
42         public XmlQualifiedName QnName;
43         public XmlQualifiedName QnType;
44         public XmlQualifiedName QnMaxOccurs;
45         public XmlQualifiedName QnMinOccurs;
46         public XmlQualifiedName QnInfinite;
47         public XmlQualifiedName QnModel;
48         public XmlQualifiedName QnOpen;
49         public XmlQualifiedName QnClosed;
50         public XmlQualifiedName QnContent;
51         public XmlQualifiedName QnMixed;
52         public XmlQualifiedName QnEmpty;
53         public XmlQualifiedName QnEltOnly;
54         public XmlQualifiedName QnTextOnly;
55         public XmlQualifiedName QnOrder;
56         public XmlQualifiedName QnSeq;
57         public XmlQualifiedName QnOne;
58         public XmlQualifiedName QnMany;
59         public XmlQualifiedName QnRequired;
60         public XmlQualifiedName QnYes;
61         public XmlQualifiedName QnNo;
62         public XmlQualifiedName QnString;
63         public XmlQualifiedName QnID;
64         public XmlQualifiedName QnIDRef;
65         public XmlQualifiedName QnIDRefs;
66         public XmlQualifiedName QnEntity;
67         public XmlQualifiedName QnEntities;
68         public XmlQualifiedName QnNmToken;
69         public XmlQualifiedName QnNmTokens;
70         public XmlQualifiedName QnEnumeration;
71         public XmlQualifiedName QnDefault;
72         public XmlQualifiedName QnXdrSchema;
73         public XmlQualifiedName QnXdrElementType;
74         public XmlQualifiedName QnXdrElement;
75         public XmlQualifiedName QnXdrGroup;
76         public XmlQualifiedName QnXdrAttributeType;
77         public XmlQualifiedName QnXdrAttribute;
78         public XmlQualifiedName QnXdrDataType;
79         public XmlQualifiedName QnXdrDescription;
80         public XmlQualifiedName QnXdrExtends;
81         public XmlQualifiedName QnXdrAliasSchema;
82         public XmlQualifiedName QnDtType;
83         public XmlQualifiedName QnDtValues;
84         public XmlQualifiedName QnDtMaxLength;
85         public XmlQualifiedName QnDtMinLength;
86         public XmlQualifiedName QnDtMax;
87         public XmlQualifiedName QnDtMin;
88         public XmlQualifiedName QnDtMinExclusive;
89         public XmlQualifiedName QnDtMaxExclusive;
90         // For XSD Schema
91         public XmlQualifiedName QnTargetNamespace;
92         public XmlQualifiedName QnVersion;
93         public XmlQualifiedName QnFinalDefault;
94         public XmlQualifiedName QnBlockDefault;
95         public XmlQualifiedName QnFixed;
96         public XmlQualifiedName QnAbstract;
97         public XmlQualifiedName QnBlock;
98         public XmlQualifiedName QnSubstitutionGroup;
99         public XmlQualifiedName QnFinal;
100         public XmlQualifiedName QnNillable;
101         public XmlQualifiedName QnRef;
102         public XmlQualifiedName QnBase;
103         public XmlQualifiedName QnDerivedBy;
104         public XmlQualifiedName QnNamespace;
105         public XmlQualifiedName QnProcessContents;
106         public XmlQualifiedName QnRefer;
107         public XmlQualifiedName QnPublic;
108         public XmlQualifiedName QnSystem;
109         public XmlQualifiedName QnSchemaLocation;
110         public XmlQualifiedName QnValue;
111         public XmlQualifiedName QnUse;
112         public XmlQualifiedName QnForm;
113         public XmlQualifiedName QnElementFormDefault;
114         public XmlQualifiedName QnAttributeFormDefault;
115         public XmlQualifiedName QnItemType;
116         public XmlQualifiedName QnMemberTypes;
117         public XmlQualifiedName QnXPath;
118         public XmlQualifiedName QnXsdSchema;
119         public XmlQualifiedName QnXsdAnnotation;
120         public XmlQualifiedName QnXsdInclude;
121         public XmlQualifiedName QnXsdImport;
122         public XmlQualifiedName QnXsdElement;
123         public XmlQualifiedName QnXsdAttribute;
124         public XmlQualifiedName QnXsdAttributeGroup;
125         public XmlQualifiedName QnXsdAnyAttribute;
126         public XmlQualifiedName QnXsdGroup;
127         public XmlQualifiedName QnXsdAll;
128         public XmlQualifiedName QnXsdChoice;
129         public XmlQualifiedName QnXsdSequence ;
130         public XmlQualifiedName QnXsdAny;
131         public XmlQualifiedName QnXsdNotation;
132         public XmlQualifiedName QnXsdSimpleType;
133         public XmlQualifiedName QnXsdComplexType;
134         public XmlQualifiedName QnXsdUnique;
135         public XmlQualifiedName QnXsdKey;
136         public XmlQualifiedName QnXsdKeyRef;
137         public XmlQualifiedName QnXsdSelector;
138         public XmlQualifiedName QnXsdField;
139         public XmlQualifiedName QnXsdMinExclusive;
140         public XmlQualifiedName QnXsdMinInclusive;
141         public XmlQualifiedName QnXsdMaxInclusive;
142         public XmlQualifiedName QnXsdMaxExclusive;
143         public XmlQualifiedName QnXsdTotalDigits;
144         public XmlQualifiedName QnXsdFractionDigits;
145         public XmlQualifiedName QnXsdLength;
146         public XmlQualifiedName QnXsdMinLength;
147         public XmlQualifiedName QnXsdMaxLength;
148         public XmlQualifiedName QnXsdEnumeration;
149         public XmlQualifiedName QnXsdPattern;
150         public XmlQualifiedName QnXsdDocumentation;
151         public XmlQualifiedName QnXsdAppinfo;
152         public XmlQualifiedName QnSource;
153         public XmlQualifiedName QnXsdComplexContent;
154         public XmlQualifiedName QnXsdSimpleContent;
155         public XmlQualifiedName QnXsdRestriction;
156         public XmlQualifiedName QnXsdExtension;
157         public XmlQualifiedName QnXsdUnion;
158         public XmlQualifiedName QnXsdList;
159         public XmlQualifiedName QnXsdWhiteSpace;
160         public XmlQualifiedName QnXsdRedefine;
161         public XmlQualifiedName QnXsdAnyType;
162         
163         internal XmlQualifiedName[] TokenToQName = new XmlQualifiedName[(int)Token.XmlLang + 1];
164
165         public SchemaNames( XmlNameTable nameTable ) {
166             this.nameTable = nameTable;
167             NsDataType = nameTable.Add(XmlReservedNs.NsDataType);
168             NsDataTypeAlias = nameTable.Add(XmlReservedNs.NsDataTypeAlias);
169             NsDataTypeOld = nameTable.Add(XmlReservedNs.NsDataTypeOld);
170             NsXml = nameTable.Add(XmlReservedNs.NsXml);
171             NsXmlNs = nameTable.Add(XmlReservedNs.NsXmlNs);       
172             NsXdr = nameTable.Add(XmlReservedNs.NsXdr);
173             NsXdrAlias = nameTable.Add(XmlReservedNs.NsXdrAlias);
174             NsXs = nameTable.Add(XmlReservedNs.NsXs);
175             NsXsi = nameTable.Add(XmlReservedNs.NsXsi);
176             XsiType = nameTable.Add("type");
177             XsiNil = nameTable.Add("nil");
178             XsiSchemaLocation = nameTable.Add("schemaLocation");
179             XsiNoNamespaceSchemaLocation = nameTable.Add("noNamespaceSchemaLocation");
180             XsdSchema = nameTable.Add("schema");
181             XdrSchema = nameTable.Add("Schema");
182
183
184             QnPCData = new XmlQualifiedName( nameTable.Add("#PCDATA") );
185             QnXml = new XmlQualifiedName( nameTable.Add("xml") );
186             QnXmlNs = new XmlQualifiedName( nameTable.Add("xmlns"), NsXmlNs );
187             QnDtDt = new XmlQualifiedName( nameTable.Add("dt"), NsDataType );
188             QnXmlLang= new XmlQualifiedName( nameTable.Add("lang"), NsXml);            
189             
190             // Empty namespace
191             QnName = new XmlQualifiedName( nameTable.Add("name") );
192             QnType = new XmlQualifiedName( nameTable.Add("type") );
193             QnMaxOccurs = new XmlQualifiedName( nameTable.Add("maxOccurs") );
194             QnMinOccurs = new XmlQualifiedName( nameTable.Add("minOccurs") );
195             QnInfinite = new XmlQualifiedName( nameTable.Add("*") );
196             QnModel = new XmlQualifiedName( nameTable.Add("model") );
197             QnOpen = new XmlQualifiedName( nameTable.Add("open") );
198             QnClosed = new XmlQualifiedName( nameTable.Add("closed") );
199             QnContent = new XmlQualifiedName( nameTable.Add("content") );
200             QnMixed = new XmlQualifiedName( nameTable.Add("mixed") );
201             QnEmpty = new XmlQualifiedName( nameTable.Add("empty") );
202             QnEltOnly = new XmlQualifiedName( nameTable.Add("eltOnly") );
203             QnTextOnly = new XmlQualifiedName( nameTable.Add("textOnly") );
204             QnOrder = new XmlQualifiedName( nameTable.Add("order") );
205             QnSeq = new XmlQualifiedName( nameTable.Add("seq") );
206             QnOne = new XmlQualifiedName( nameTable.Add("one") );
207             QnMany = new XmlQualifiedName( nameTable.Add("many") );
208             QnRequired = new XmlQualifiedName( nameTable.Add("required") );
209             QnYes = new XmlQualifiedName( nameTable.Add("yes") );
210             QnNo = new XmlQualifiedName( nameTable.Add("no") );
211             QnString = new XmlQualifiedName( nameTable.Add("string") );
212             QnID = new XmlQualifiedName( nameTable.Add("id") );
213             QnIDRef = new XmlQualifiedName( nameTable.Add("idref") );
214             QnIDRefs = new XmlQualifiedName( nameTable.Add("idrefs") );
215             QnEntity = new XmlQualifiedName( nameTable.Add("entity") );
216             QnEntities = new XmlQualifiedName( nameTable.Add("entities") );
217             QnNmToken = new XmlQualifiedName( nameTable.Add("nmtoken") );
218             QnNmTokens = new XmlQualifiedName( nameTable.Add("nmtokens") );
219             QnEnumeration = new XmlQualifiedName( nameTable.Add("enumeration") );
220             QnDefault = new XmlQualifiedName( nameTable.Add("default") );
221
222             //For XSD Schema
223             QnTargetNamespace = new XmlQualifiedName( nameTable.Add("targetNamespace") );
224             QnVersion = new XmlQualifiedName( nameTable.Add("version") );
225             QnFinalDefault = new XmlQualifiedName( nameTable.Add("finalDefault") );
226             QnBlockDefault = new XmlQualifiedName( nameTable.Add("blockDefault") );
227             QnFixed = new XmlQualifiedName( nameTable.Add("fixed") );
228             QnAbstract = new XmlQualifiedName( nameTable.Add("abstract") );
229             QnBlock = new XmlQualifiedName( nameTable.Add("block") );
230             QnSubstitutionGroup = new XmlQualifiedName( nameTable.Add("substitutionGroup") );
231             QnFinal = new XmlQualifiedName( nameTable.Add("final") );
232             QnNillable = new XmlQualifiedName( nameTable.Add("nillable") );
233             QnRef = new XmlQualifiedName( nameTable.Add("ref") );
234             QnBase = new XmlQualifiedName( nameTable.Add("base") );
235             QnDerivedBy = new XmlQualifiedName( nameTable.Add("derivedBy") );
236             QnNamespace = new XmlQualifiedName( nameTable.Add("namespace") );
237             QnProcessContents = new XmlQualifiedName( nameTable.Add("processContents") );
238             QnRefer = new XmlQualifiedName( nameTable.Add("refer") );
239             QnPublic = new XmlQualifiedName( nameTable.Add("public") );
240             QnSystem = new XmlQualifiedName( nameTable.Add("system") );
241             QnSchemaLocation = new XmlQualifiedName( nameTable.Add("schemaLocation") );
242             QnValue = new XmlQualifiedName( nameTable.Add("value") );
243             QnUse = new XmlQualifiedName( nameTable.Add("use") );
244             QnForm = new XmlQualifiedName( nameTable.Add("form") );
245             QnAttributeFormDefault = new XmlQualifiedName( nameTable.Add("attributeFormDefault") );
246             QnElementFormDefault = new XmlQualifiedName( nameTable.Add("elementFormDefault") );
247             QnSource = new XmlQualifiedName( nameTable.Add("source") );
248             QnMemberTypes = new XmlQualifiedName( nameTable.Add("memberTypes"));
249             QnItemType = new XmlQualifiedName( nameTable.Add("itemType"));
250             QnXPath = new XmlQualifiedName( nameTable.Add("xpath"));
251
252             // XDR namespace 
253             QnXdrSchema = new XmlQualifiedName( XdrSchema, NsXdr );
254             QnXdrElementType = new XmlQualifiedName( nameTable.Add("ElementType"), NsXdr );
255             QnXdrElement = new XmlQualifiedName( nameTable.Add("element"), NsXdr );
256             QnXdrGroup = new XmlQualifiedName( nameTable.Add("group"), NsXdr );
257             QnXdrAttributeType = new XmlQualifiedName( nameTable.Add("AttributeType"), NsXdr );
258             QnXdrAttribute = new XmlQualifiedName( nameTable.Add("attribute"), NsXdr );
259             QnXdrDataType = new XmlQualifiedName( nameTable.Add("datatype"), NsXdr );
260             QnXdrDescription = new XmlQualifiedName( nameTable.Add("description"), NsXdr );
261             QnXdrExtends = new XmlQualifiedName( nameTable.Add("extends"), NsXdr );
262
263             // XDR alias namespace
264             QnXdrAliasSchema = new XmlQualifiedName( nameTable.Add("Schema"), NsDataTypeAlias );
265
266             // DataType namespace
267             QnDtType = new XmlQualifiedName( nameTable.Add("type"), NsDataType );
268             QnDtValues = new XmlQualifiedName( nameTable.Add("values"), NsDataType );
269             QnDtMaxLength = new XmlQualifiedName( nameTable.Add("maxLength"), NsDataType );
270             QnDtMinLength = new XmlQualifiedName( nameTable.Add("minLength"), NsDataType );
271             QnDtMax = new XmlQualifiedName( nameTable.Add("max"), NsDataType );
272             QnDtMin = new XmlQualifiedName( nameTable.Add("min"), NsDataType );
273             QnDtMinExclusive = new XmlQualifiedName( nameTable.Add("minExclusive"), NsDataType );
274             QnDtMaxExclusive = new XmlQualifiedName( nameTable.Add("maxExclusive"), NsDataType );
275
276             // XSD namespace
277             QnXsdSchema = new XmlQualifiedName( XsdSchema, NsXs );
278             QnXsdAnnotation= new XmlQualifiedName( nameTable.Add("annotation"), NsXs );
279             QnXsdInclude= new XmlQualifiedName( nameTable.Add("include"), NsXs );
280             QnXsdImport= new XmlQualifiedName( nameTable.Add("import"), NsXs );
281             QnXsdElement = new XmlQualifiedName( nameTable.Add("element"), NsXs );
282             QnXsdAttribute = new XmlQualifiedName( nameTable.Add("attribute"), NsXs );
283             QnXsdAttributeGroup = new XmlQualifiedName( nameTable.Add("attributeGroup"), NsXs );
284             QnXsdAnyAttribute = new XmlQualifiedName( nameTable.Add("anyAttribute"), NsXs );
285             QnXsdGroup = new XmlQualifiedName( nameTable.Add("group"), NsXs );
286             QnXsdAll = new XmlQualifiedName( nameTable.Add("all"), NsXs );
287             QnXsdChoice = new XmlQualifiedName( nameTable.Add("choice"), NsXs );
288             QnXsdSequence = new XmlQualifiedName( nameTable.Add("sequence"), NsXs );
289             QnXsdAny = new XmlQualifiedName( nameTable.Add("any"), NsXs );
290             QnXsdNotation = new XmlQualifiedName( nameTable.Add("notation"), NsXs );
291             QnXsdSimpleType = new XmlQualifiedName( nameTable.Add("simpleType"), NsXs );
292             QnXsdComplexType = new XmlQualifiedName( nameTable.Add("complexType"), NsXs );
293             QnXsdUnique = new XmlQualifiedName( nameTable.Add("unique"), NsXs );
294             QnXsdKey = new XmlQualifiedName( nameTable.Add("key"), NsXs );
295             QnXsdKeyRef = new XmlQualifiedName( nameTable.Add("keyref"), NsXs );
296             QnXsdSelector= new XmlQualifiedName( nameTable.Add("selector"), NsXs );
297             QnXsdField= new XmlQualifiedName( nameTable.Add("field"), NsXs );
298             QnXsdMinExclusive= new XmlQualifiedName( nameTable.Add("minExclusive"), NsXs );
299             QnXsdMinInclusive= new XmlQualifiedName( nameTable.Add("minInclusive"), NsXs );
300             QnXsdMaxInclusive= new XmlQualifiedName( nameTable.Add("maxInclusive"), NsXs );
301             QnXsdMaxExclusive= new XmlQualifiedName( nameTable.Add("maxExclusive"), NsXs );
302             QnXsdTotalDigits= new XmlQualifiedName( nameTable.Add("totalDigits"), NsXs );
303             QnXsdFractionDigits= new XmlQualifiedName( nameTable.Add("fractionDigits"), NsXs );
304             QnXsdLength= new XmlQualifiedName( nameTable.Add("length"), NsXs );
305             QnXsdMinLength= new XmlQualifiedName( nameTable.Add("minLength"), NsXs );
306             QnXsdMaxLength= new XmlQualifiedName( nameTable.Add("maxLength"), NsXs );
307             QnXsdEnumeration= new XmlQualifiedName( nameTable.Add("enumeration"), NsXs );
308             QnXsdPattern= new XmlQualifiedName( nameTable.Add("pattern"), NsXs );
309             QnXsdDocumentation= new XmlQualifiedName( nameTable.Add("documentation"), NsXs );
310             QnXsdAppinfo= new XmlQualifiedName( nameTable.Add("appinfo"), NsXs );
311             QnXsdComplexContent= new XmlQualifiedName( nameTable.Add("complexContent"), NsXs );
312             QnXsdSimpleContent= new XmlQualifiedName( nameTable.Add("simpleContent"), NsXs );
313             QnXsdRestriction= new XmlQualifiedName( nameTable.Add("restriction"), NsXs );
314             QnXsdExtension= new XmlQualifiedName( nameTable.Add("extension"), NsXs );
315             QnXsdUnion= new XmlQualifiedName( nameTable.Add("union"), NsXs );
316             QnXsdList= new XmlQualifiedName( nameTable.Add("list"), NsXs );
317             QnXsdWhiteSpace= new XmlQualifiedName( nameTable.Add("whiteSpace"), NsXs );
318             QnXsdRedefine= new XmlQualifiedName( nameTable.Add("redefine"), NsXs );
319             QnXsdAnyType= new XmlQualifiedName( nameTable.Add("anyType"), NsXs );
320
321             //Create token to Qname table
322             CreateTokenToQNameTable();
323         }
324         
325         public void CreateTokenToQNameTable() {
326             TokenToQName[(int)Token.SchemaName] = QnName;
327             TokenToQName[(int)Token.SchemaType] = QnType;
328             TokenToQName[(int)Token.SchemaMaxOccurs] = QnMaxOccurs;
329             TokenToQName[(int)Token.SchemaMinOccurs] = QnMinOccurs;
330             TokenToQName[(int)Token.SchemaInfinite] = QnInfinite;
331             TokenToQName[(int)Token.SchemaModel] = QnModel;
332             TokenToQName[(int)Token.SchemaOpen] = QnOpen;
333             TokenToQName[(int)Token.SchemaClosed] = QnClosed;
334             TokenToQName[(int)Token.SchemaContent] = QnContent;
335             TokenToQName[(int)Token.SchemaMixed] = QnMixed;
336             TokenToQName[(int)Token.SchemaEmpty] = QnEmpty;
337             TokenToQName[(int)Token.SchemaElementOnly] =  QnEltOnly;
338             TokenToQName[(int)Token.SchemaTextOnly] = QnTextOnly;
339             TokenToQName[(int)Token.SchemaOrder] = QnOrder;
340             TokenToQName[(int)Token.SchemaSeq] = QnSeq;
341             TokenToQName[(int)Token.SchemaOne] = QnOne;
342             TokenToQName[(int)Token.SchemaMany] = QnMany;
343             TokenToQName[(int)Token.SchemaRequired] = QnRequired;
344             TokenToQName[(int)Token.SchemaYes] = QnYes;
345             TokenToQName[(int)Token.SchemaNo] = QnNo;
346             TokenToQName[(int)Token.SchemaString] = QnString;
347             TokenToQName[(int)Token.SchemaId] = QnID;
348             TokenToQName[(int)Token.SchemaIdref] = QnIDRef;
349             TokenToQName[(int)Token.SchemaIdrefs] = QnIDRefs;
350             TokenToQName[(int)Token.SchemaEntity] = QnEntity;
351             TokenToQName[(int)Token.SchemaEntities] = QnEntities;
352             TokenToQName[(int)Token.SchemaNmtoken] = QnNmToken;
353             TokenToQName[(int)Token.SchemaNmtokens] = QnNmTokens;
354             TokenToQName[(int)Token.SchemaEnumeration] = QnEnumeration;
355             TokenToQName[(int)Token.SchemaDefault] = QnDefault;
356             TokenToQName[(int)Token.XdrRoot] = QnXdrSchema;
357             TokenToQName[(int)Token.XdrElementType] = QnXdrElementType;
358             TokenToQName[(int)Token.XdrElement] = QnXdrElement;
359             TokenToQName[(int)Token.XdrGroup] = QnXdrGroup;
360             TokenToQName[(int)Token.XdrAttributeType] = QnXdrAttributeType;
361             TokenToQName[(int)Token.XdrAttribute] = QnXdrAttribute;
362             TokenToQName[(int)Token.XdrDatatype] = QnXdrDataType;
363             TokenToQName[(int)Token.XdrDescription] = QnXdrDescription;
364             TokenToQName[(int)Token.XdrExtends] = QnXdrExtends;
365             TokenToQName[(int)Token.SchemaXdrRootAlias] = QnXdrAliasSchema;
366             TokenToQName[(int)Token.SchemaDtType] = QnDtType; 
367             TokenToQName[(int)Token.SchemaDtValues] = QnDtValues;
368             TokenToQName[(int)Token.SchemaDtMaxLength] = QnDtMaxLength;
369             TokenToQName[(int)Token.SchemaDtMinLength] = QnDtMinLength;
370             TokenToQName[(int)Token.SchemaDtMax] = QnDtMax;
371             TokenToQName[(int)Token.SchemaDtMin] = QnDtMin;
372             TokenToQName[(int)Token.SchemaDtMinExclusive] = QnDtMinExclusive;
373             TokenToQName[(int)Token.SchemaDtMaxExclusive] = QnDtMaxExclusive;
374             TokenToQName[(int)Token.SchemaTargetNamespace] = QnTargetNamespace;
375             TokenToQName[(int)Token.SchemaVersion] = QnVersion;
376             TokenToQName[(int)Token.SchemaFinalDefault] = QnFinalDefault;
377             TokenToQName[(int)Token.SchemaBlockDefault] = QnBlockDefault;
378             TokenToQName[(int)Token.SchemaFixed] = QnFixed;
379             TokenToQName[(int)Token.SchemaAbstract] = QnAbstract;
380             TokenToQName[(int)Token.SchemaBlock] = QnBlock;
381             TokenToQName[(int)Token.SchemaSubstitutionGroup] = QnSubstitutionGroup;
382             TokenToQName[(int)Token.SchemaFinal] = QnFinal;
383             TokenToQName[(int)Token.SchemaNillable] = QnNillable;
384             TokenToQName[(int)Token.SchemaRef] = QnRef;
385             TokenToQName[(int)Token.SchemaBase] = QnBase;
386             TokenToQName[(int)Token.SchemaDerivedBy] = QnDerivedBy;
387             TokenToQName[(int)Token.SchemaNamespace] = QnNamespace;
388             TokenToQName[(int)Token.SchemaProcessContents] = QnProcessContents;
389             TokenToQName[(int)Token.SchemaRefer] = QnRefer;
390             TokenToQName[(int)Token.SchemaPublic] = QnPublic;
391             TokenToQName[(int)Token.SchemaSystem] = QnSystem;
392             TokenToQName[(int)Token.SchemaSchemaLocation] = QnSchemaLocation;
393             TokenToQName[(int)Token.SchemaValue] = QnValue;
394             TokenToQName[(int)Token.SchemaItemType] = QnItemType;
395             TokenToQName[(int)Token.SchemaMemberTypes] = QnMemberTypes;
396             TokenToQName[(int)Token.SchemaXPath] = QnXPath;
397             TokenToQName[(int)Token.XsdSchema] = QnXsdSchema;
398             TokenToQName[(int)Token.XsdAnnotation] = QnXsdAnnotation;
399             TokenToQName[(int)Token.XsdInclude] = QnXsdInclude;
400             TokenToQName[(int)Token.XsdImport] = QnXsdImport;
401             TokenToQName[(int)Token.XsdElement] = QnXsdElement;
402             TokenToQName[(int)Token.XsdAttribute] = QnXsdAttribute; 
403             TokenToQName[(int)Token.xsdAttributeGroup] = QnXsdAttributeGroup;
404             TokenToQName[(int)Token.XsdAnyAttribute] = QnXsdAnyAttribute;
405             TokenToQName[(int)Token.XsdGroup] = QnXsdGroup;
406             TokenToQName[(int)Token.XsdAll] = QnXsdAll;
407             TokenToQName[(int)Token.XsdChoice] = QnXsdChoice;
408             TokenToQName[(int)Token.XsdSequence] = QnXsdSequence;
409             TokenToQName[(int)Token.XsdAny] = QnXsdAny;
410             TokenToQName[(int)Token.XsdNotation] = QnXsdNotation;
411             TokenToQName[(int)Token.XsdSimpleType] = QnXsdSimpleType; 
412             TokenToQName[(int)Token.XsdComplexType] = QnXsdComplexType;
413             TokenToQName[(int)Token.XsdUnique] = QnXsdUnique; 
414             TokenToQName[(int)Token.XsdKey] = QnXsdKey;
415             TokenToQName[(int)Token.XsdKeyref] = QnXsdKeyRef;
416             TokenToQName[(int)Token.XsdSelector] = QnXsdSelector; 
417             TokenToQName[(int)Token.XsdField] = QnXsdField;
418             TokenToQName[(int)Token.XsdMinExclusive] = QnXsdMinExclusive;
419             TokenToQName[(int)Token.XsdMinInclusive] = QnXsdMinInclusive;
420             TokenToQName[(int)Token.XsdMaxExclusive] = QnXsdMaxExclusive;
421             TokenToQName[(int)Token.XsdMaxInclusive] = QnXsdMaxInclusive;
422             TokenToQName[(int)Token.XsdTotalDigits] = QnXsdTotalDigits;
423             TokenToQName[(int)Token.XsdFractionDigits] = QnXsdFractionDigits;
424             TokenToQName[(int)Token.XsdLength] = QnXsdLength; 
425             TokenToQName[(int)Token.XsdMinLength] = QnXsdMinLength;
426             TokenToQName[(int)Token.XsdMaxLength] = QnXsdMaxLength;
427             TokenToQName[(int)Token.XsdEnumeration] = QnXsdEnumeration;
428             TokenToQName[(int)Token.XsdPattern] = QnXsdPattern;
429             TokenToQName[(int)Token.XsdWhitespace] = QnXsdWhiteSpace;
430             TokenToQName[(int)Token.XsdDocumentation] = QnXsdDocumentation; 
431             TokenToQName[(int)Token.XsdAppInfo] = QnXsdAppinfo;
432             TokenToQName[(int)Token.XsdComplexContent] = QnXsdComplexContent;
433             TokenToQName[(int)Token.XsdComplexContentRestriction] = QnXsdRestriction;
434             TokenToQName[(int)Token.XsdSimpleContentRestriction] = QnXsdRestriction;
435             TokenToQName[(int)Token.XsdSimpleTypeRestriction] = QnXsdRestriction;
436             TokenToQName[(int)Token.XsdComplexContentExtension] = QnXsdExtension;
437             TokenToQName[(int)Token.XsdSimpleContentExtension] = QnXsdExtension;
438             TokenToQName[(int)Token.XsdSimpleContent] = QnXsdSimpleContent;
439             TokenToQName[(int)Token.XsdSimpleTypeUnion] = QnXsdUnion;
440             TokenToQName[(int)Token.XsdSimpleTypeList] = QnXsdList;
441             TokenToQName[(int)Token.XsdRedefine] = QnXsdRedefine;
442             TokenToQName[(int)Token.SchemaSource] = QnSource;
443             TokenToQName[(int)Token.SchemaUse] = QnUse;
444             TokenToQName[(int)Token.SchemaForm] = QnForm;
445             TokenToQName[(int)Token.SchemaElementFormDefault] = QnElementFormDefault;
446             TokenToQName[(int)Token.SchemaAttributeFormDefault] = QnAttributeFormDefault;
447             TokenToQName[(int)Token.XmlLang] = QnXmlLang;
448             TokenToQName[(int)Token.Empty] = XmlQualifiedName.Empty;
449         }
450
451         public SchemaType SchemaTypeFromRoot(string localName, string ns) {
452             if (IsXSDRoot(localName, ns)) {
453                 return SchemaType.XSD;
454             }
455             else if (IsXDRRoot(localName, XmlSchemaDatatype.XdrCanonizeUri(ns, nameTable, this))) {
456                 return SchemaType.XDR;
457             }
458             else {
459                 return SchemaType.None;
460             }
461         }
462
463         public bool IsXSDRoot(string localName, string ns) {
464             // FIXME: due to some implementation glitch, SchemaNames are not fully used in mono yet.
465             // return Ref.Equal(ns, NsXs) && Ref.Equal(localName, XsdSchema);
466             return localName == XsdSchema && ns == NsXs;
467         }
468
469         public bool IsXDRRoot(string localName, string ns) {
470             // FIXME: due to some implementation glitch, SchemaNames are not fully used in mono yet.
471             // return Ref.Equal(ns, NsXdr) && Ref.Equal(localName, XdrSchema);
472             return localName == XdrSchema && ns == NsXdr;
473         }
474
475         public XmlQualifiedName GetName(SchemaNames.Token token) {
476             return TokenToQName[(int)token];
477         }
478
479         public enum Token {
480             Empty,
481             SchemaName,
482             SchemaType,
483             SchemaMaxOccurs,
484             SchemaMinOccurs,
485             SchemaInfinite,
486             SchemaModel,
487             SchemaOpen,
488             SchemaClosed,
489             SchemaContent,
490             SchemaMixed,
491             SchemaEmpty,
492             SchemaElementOnly,
493             SchemaTextOnly,
494             SchemaOrder,
495             SchemaSeq,
496             SchemaOne,
497             SchemaMany,
498             SchemaRequired,
499             SchemaYes,
500             SchemaNo,
501             SchemaString,
502             SchemaId,
503             SchemaIdref,
504             SchemaIdrefs,
505             SchemaEntity,
506             SchemaEntities,
507             SchemaNmtoken,
508             SchemaNmtokens,
509             SchemaEnumeration,
510             SchemaDefault,
511             XdrRoot,
512             XdrElementType,
513             XdrElement,
514             XdrGroup,
515             XdrAttributeType,
516             XdrAttribute,
517             XdrDatatype,
518             XdrDescription,
519             XdrExtends,
520             SchemaXdrRootAlias,
521             SchemaDtType,
522             SchemaDtValues,
523             SchemaDtMaxLength,
524             SchemaDtMinLength,
525             SchemaDtMax,
526             SchemaDtMin,
527             SchemaDtMinExclusive,
528             SchemaDtMaxExclusive,
529             SchemaTargetNamespace,
530             SchemaVersion,
531             SchemaFinalDefault,
532             SchemaBlockDefault,
533             SchemaFixed,
534             SchemaAbstract,
535             SchemaBlock,
536             SchemaSubstitutionGroup,
537             SchemaFinal,
538             SchemaNillable,
539             SchemaRef,
540             SchemaBase,
541             SchemaDerivedBy,
542             SchemaNamespace,
543             SchemaProcessContents,
544             SchemaRefer,
545             SchemaPublic,
546             SchemaSystem,
547             SchemaSchemaLocation,
548             SchemaValue,
549             SchemaSource,
550             SchemaAttributeFormDefault,
551             SchemaElementFormDefault,
552             SchemaUse,
553             SchemaForm,
554             XsdSchema,
555             XsdAnnotation,
556             XsdInclude,
557             XsdImport,
558             XsdElement,
559             XsdAttribute,
560             xsdAttributeGroup,
561             XsdAnyAttribute,
562             XsdGroup,
563             XsdAll,
564             XsdChoice,
565             XsdSequence,
566             XsdAny,
567             XsdNotation,
568             XsdSimpleType,
569             XsdComplexType,
570             XsdUnique,
571             XsdKey,
572             XsdKeyref,
573             XsdSelector,
574             XsdField,
575             XsdMinExclusive,
576             XsdMinInclusive,
577             XsdMaxExclusive,
578             XsdMaxInclusive,
579             XsdTotalDigits,
580             XsdFractionDigits,
581             XsdLength,
582             XsdMinLength,
583             XsdMaxLength,
584             XsdEnumeration,
585             XsdPattern,
586             XsdDocumentation,
587             XsdAppInfo,
588             XsdComplexContent,
589             XsdComplexContentExtension,
590             XsdComplexContentRestriction,
591             XsdSimpleContent,
592             XsdSimpleContentExtension,
593             XsdSimpleContentRestriction,
594             XsdSimpleTypeList,
595             XsdSimpleTypeRestriction,
596             XsdSimpleTypeUnion,
597             XsdWhitespace,
598             XsdRedefine,
599             SchemaItemType,
600             SchemaMemberTypes,
601             SchemaXPath,
602             XmlLang
603         };
604     };
605
606 }