source: trunk/src/xmlpatterns/schema/qxsdschemaparsercontext.cpp@ 561

Last change on this file since 561 was 561, checked in by Dmitry A. Kuminov, 15 years ago

trunk: Merged in qt 4.6.1 sources.

  • Property svn:eol-style set to native
File size: 28.7 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
4** All rights reserved.
5** Contact: Nokia Corporation ([email protected])
6**
7** This file is part of the QtXmlPatterns module of the Qt Toolkit.
8**
9** $QT_BEGIN_LICENSE:LGPL$
10** Commercial Usage
11** Licensees holding valid Qt Commercial licenses may use this file in
12** accordance with the Qt Commercial License Agreement provided with the
13** Software or, alternatively, in accordance with the terms contained in
14** a written agreement between you and Nokia.
15**
16** GNU Lesser General Public License Usage
17** Alternatively, this file may be used under the terms of the GNU Lesser
18** General Public License version 2.1 as published by the Free Software
19** Foundation and appearing in the file LICENSE.LGPL included in the
20** packaging of this file. Please review the following information to
21** ensure the GNU Lesser General Public License version 2.1 requirements
22** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23**
24** In addition, as a special exception, Nokia gives you certain additional
25** rights. These rights are described in the Nokia Qt LGPL Exception
26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
27**
28** GNU General Public License Usage
29** Alternatively, this file may be used under the terms of the GNU
30** General Public License version 3.0 as published by the Free Software
31** Foundation and appearing in the file LICENSE.GPL included in the
32** packaging of this file. Please review the following information to
33** ensure the GNU General Public License version 3.0 requirements will be
34** met: http://www.gnu.org/copyleft/gpl.html.
35**
36** If you have questions regarding the use of this file, please contact
37** Nokia at [email protected].
38** $QT_END_LICENSE$
39**
40****************************************************************************/
41
42#include "qxsdschemaparsercontext_p.h"
43
44QT_BEGIN_NAMESPACE
45
46using namespace QPatternist;
47
48XsdSchemaParserContext::XsdSchemaParserContext(const NamePool::Ptr &namePool, const XsdSchemaContext::Ptr &context)
49 : m_namePool(namePool)
50 , m_schema(new XsdSchema(m_namePool))
51 , m_checker(new XsdSchemaChecker(context, this))
52 , m_resolver(new XsdSchemaResolver(context, this))
53 , m_elementDescriptions(setupElementDescriptions())
54{
55}
56
57NamePool::Ptr XsdSchemaParserContext::namePool() const
58{
59 return m_namePool;
60}
61
62XsdSchemaResolver::Ptr XsdSchemaParserContext::resolver() const
63{
64 return m_resolver;
65}
66
67XsdSchemaChecker::Ptr XsdSchemaParserContext::checker() const
68{
69 return m_checker;
70}
71
72XsdSchema::Ptr XsdSchemaParserContext::schema() const
73{
74 return m_schema;
75}
76
77ElementDescription<XsdSchemaToken, XsdTagScope::Type>::Hash XsdSchemaParserContext::elementDescriptions() const
78{
79 return m_elementDescriptions;
80}
81
82QXmlName XsdSchemaParserContext::createAnonymousName(const QString &targetNamespace) const
83{
84 m_anonymousNameCounter.ref();
85
86 const QString name = QString::fromLatin1("__AnonymousClass_%1").arg((int)m_anonymousNameCounter);
87
88 return m_namePool->allocateQName(targetNamespace, name);
89}
90
91ElementDescription<XsdSchemaToken, XsdTagScope::Type>::Hash XsdSchemaParserContext::setupElementDescriptions()
92{
93 enum
94 {
95 ReservedForElements = 60
96 };
97
98 ElementDescription<XsdSchemaToken, XsdTagScope::Type>::Hash elementDescriptions;
99 elementDescriptions.reserve(ReservedForElements);
100
101 {
102 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::Schema];
103 description.optionalAttributes.reserve(10);
104 //description.tagToken = XsdSchemaToken::Schema;
105 description.optionalAttributes.insert(XsdSchemaToken::AttributeFormDefault);
106 description.optionalAttributes.insert(XsdSchemaToken::BlockDefault);
107 description.optionalAttributes.insert(XsdSchemaToken::DefaultAttributes);
108 description.optionalAttributes.insert(XsdSchemaToken::XPathDefaultNamespace);
109 description.optionalAttributes.insert(XsdSchemaToken::ElementFormDefault);
110 description.optionalAttributes.insert(XsdSchemaToken::FinalDefault);
111 description.optionalAttributes.insert(XsdSchemaToken::Id);
112 description.optionalAttributes.insert(XsdSchemaToken::TargetNamespace);
113 description.optionalAttributes.insert(XsdSchemaToken::Version);
114 description.optionalAttributes.insert(XsdSchemaToken::XmlLanguage);
115 }
116
117 {
118 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::Include];
119 //description.tagToken = XsdSchemaToken::Include;
120 description.requiredAttributes.insert(XsdSchemaToken::SchemaLocation);
121 description.optionalAttributes.insert(XsdSchemaToken::Id);
122 }
123
124 {
125 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::Import];
126 //description.tagToken = XsdSchemaToken::Import;
127 description.optionalAttributes.insert(XsdSchemaToken::Id);
128 description.optionalAttributes.insert(XsdSchemaToken::Namespace);
129 description.optionalAttributes.insert(XsdSchemaToken::SchemaLocation);
130 }
131
132 {
133 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::Redefine];
134 //description.tagToken = XsdSchemaToken::Redefine;
135 description.optionalAttributes.insert(XsdSchemaToken::Id);
136 description.requiredAttributes.insert(XsdSchemaToken::SchemaLocation);
137 }
138
139 {
140 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::Override];
141 //description.tagToken = XsdSchemaToken::Override;
142 description.optionalAttributes.insert(XsdSchemaToken::Id);
143 description.requiredAttributes.insert(XsdSchemaToken::SchemaLocation);
144 }
145
146 {
147 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::Annotation];
148 //description.tagToken = XsdSchemaToken::Annotation;
149 description.optionalAttributes.insert(XsdSchemaToken::Id);
150 }
151
152 {
153 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::AppInfo];
154 //description.tagToken = XsdSchemaToken::Appinfo;
155 description.optionalAttributes.insert(XsdSchemaToken::Source);
156 }
157
158 {
159 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::Documentation];
160 //description.tagToken = XsdSchemaToken::Documentation;
161 description.optionalAttributes.insert(XsdSchemaToken::Source);
162 }
163
164 {
165 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::GlobalSimpleType];
166 //description.tagToken = XsdSchemaToken::SimpleType;
167 description.optionalAttributes.insert(XsdSchemaToken::Final);
168 description.optionalAttributes.insert(XsdSchemaToken::Id);
169 description.requiredAttributes.insert(XsdSchemaToken::Name);
170 }
171
172 {
173 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::LocalSimpleType];
174 //description.tagToken = XsdSchemaToken::SimpleType;
175 description.optionalAttributes.insert(XsdSchemaToken::Id);
176 }
177
178 {
179 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::SimpleRestriction];
180 //description.tagToken = XsdSchemaToken::Restriction;
181 description.optionalAttributes.insert(XsdSchemaToken::Base);
182 description.optionalAttributes.insert(XsdSchemaToken::Id);
183 }
184
185 {
186 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::List];
187 //description.tagToken = XsdSchemaToken::List;
188 description.optionalAttributes.insert(XsdSchemaToken::Id);
189 description.optionalAttributes.insert(XsdSchemaToken::ItemType);
190 }
191
192 {
193 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::Union];
194 //description.tagToken = XsdSchemaToken::Union;
195 description.optionalAttributes.insert(XsdSchemaToken::Id);
196 description.optionalAttributes.insert(XsdSchemaToken::MemberTypes);
197 }
198
199 {
200 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::MinExclusiveFacet];
201 //description.tagToken = XsdSchemaToken::MinExclusive;
202 description.optionalAttributes.insert(XsdSchemaToken::Fixed);
203 description.optionalAttributes.insert(XsdSchemaToken::Id);
204 description.requiredAttributes.insert(XsdSchemaToken::Value);
205 }
206
207 {
208 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::MinInclusiveFacet];
209 //description.tagToken = XsdSchemaToken::MinInclusive;
210 description.optionalAttributes.insert(XsdSchemaToken::Fixed);
211 description.optionalAttributes.insert(XsdSchemaToken::Id);
212 description.requiredAttributes.insert(XsdSchemaToken::Value);
213 }
214
215 {
216 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::MaxExclusiveFacet];
217 //description.tagToken = XsdSchemaToken::MaxExclusive;
218 description.optionalAttributes.insert(XsdSchemaToken::Fixed);
219 description.optionalAttributes.insert(XsdSchemaToken::Id);
220 description.requiredAttributes.insert(XsdSchemaToken::Value);
221 }
222
223 {
224 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::MaxInclusiveFacet];
225 //description.tagToken = XsdSchemaToken::MaxInclusive;
226 description.optionalAttributes.insert(XsdSchemaToken::Fixed);
227 description.optionalAttributes.insert(XsdSchemaToken::Id);
228 description.requiredAttributes.insert(XsdSchemaToken::Value);
229 }
230
231 {
232 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::TotalDigitsFacet];
233 //description.tagToken = XsdSchemaToken::TotalDigits;
234 description.optionalAttributes.insert(XsdSchemaToken::Fixed);
235 description.optionalAttributes.insert(XsdSchemaToken::Id);
236 description.requiredAttributes.insert(XsdSchemaToken::Value);
237 }
238
239 {
240 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::FractionDigitsFacet];
241 //description.tagToken = XsdSchemaToken::FractionDigits;
242 description.optionalAttributes.insert(XsdSchemaToken::Fixed);
243 description.optionalAttributes.insert(XsdSchemaToken::Id);
244 description.requiredAttributes.insert(XsdSchemaToken::Value);
245 }
246
247 {
248 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::LengthFacet];
249 //description.tagToken = XsdSchemaToken::Length;
250 description.optionalAttributes.insert(XsdSchemaToken::Fixed);
251 description.optionalAttributes.insert(XsdSchemaToken::Id);
252 description.requiredAttributes.insert(XsdSchemaToken::Value);
253 }
254
255 {
256 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::MinLengthFacet];
257 //description.tagToken = XsdSchemaToken::MinLength;
258 description.optionalAttributes.insert(XsdSchemaToken::Fixed);
259 description.optionalAttributes.insert(XsdSchemaToken::Id);
260 description.requiredAttributes.insert(XsdSchemaToken::Value);
261 }
262
263 {
264 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::MaxLengthFacet];
265 //description.tagToken = XsdSchemaToken::MaxLength;
266 description.optionalAttributes.insert(XsdSchemaToken::Fixed);
267 description.optionalAttributes.insert(XsdSchemaToken::Id);
268 description.requiredAttributes.insert(XsdSchemaToken::Value);
269 }
270
271 {
272 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::EnumerationFacet];
273 //description.tagToken = XsdSchemaToken::Enumeration;
274 description.optionalAttributes.insert(XsdSchemaToken::Id);
275 description.requiredAttributes.insert(XsdSchemaToken::Value);
276 }
277
278 {
279 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::WhiteSpaceFacet];
280 //description.tagToken = XsdSchemaToken::WhiteSpace;
281 description.optionalAttributes.insert(XsdSchemaToken::Fixed);
282 description.optionalAttributes.insert(XsdSchemaToken::Id);
283 description.requiredAttributes.insert(XsdSchemaToken::Value);
284 }
285
286 {
287 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::PatternFacet];
288 //description.tagToken = XsdSchemaToken::Pattern;
289 description.optionalAttributes.insert(XsdSchemaToken::Id);
290 description.requiredAttributes.insert(XsdSchemaToken::Value);
291 }
292
293 {
294 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::GlobalComplexType];
295 description.optionalAttributes.reserve(7);
296 //description.tagToken = XsdSchemaToken::ComplexType;
297 description.optionalAttributes.insert(XsdSchemaToken::Abstract);
298 description.optionalAttributes.insert(XsdSchemaToken::Block);
299 description.optionalAttributes.insert(XsdSchemaToken::DefaultAttributesApply);
300 description.optionalAttributes.insert(XsdSchemaToken::Final);
301 description.optionalAttributes.insert(XsdSchemaToken::Id);
302 description.optionalAttributes.insert(XsdSchemaToken::Mixed);
303 description.requiredAttributes.insert(XsdSchemaToken::Name);
304 }
305
306 {
307 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::LocalComplexType];
308 //description.tagToken = XsdSchemaToken::ComplexType;
309 description.optionalAttributes.insert(XsdSchemaToken::Id);
310 description.optionalAttributes.insert(XsdSchemaToken::Mixed);
311 }
312
313 {
314 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::SimpleContent];
315 //description.tagToken = XsdSchemaToken::SimpleContent;
316 description.optionalAttributes.insert(XsdSchemaToken::Id);
317 }
318
319 {
320 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::SimpleContentRestriction];
321 //description.tagToken = XsdSchemaToken::Restriction;
322 description.requiredAttributes.insert(XsdSchemaToken::Base);
323 description.optionalAttributes.insert(XsdSchemaToken::Id);
324 }
325
326 {
327 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::SimpleContentExtension];
328 //description.tagToken = XsdSchemaToken::Extension;
329 description.requiredAttributes.insert(XsdSchemaToken::Base);
330 description.optionalAttributes.insert(XsdSchemaToken::Id);
331 }
332
333 {
334 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::ComplexContent];
335 //description.tagToken = XsdSchemaToken::ComplexContent;
336 description.optionalAttributes.insert(XsdSchemaToken::Id);
337 description.optionalAttributes.insert(XsdSchemaToken::Mixed);
338 }
339
340 {
341 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::ComplexContentRestriction];
342 //description.tagToken = XsdSchemaToken::Restriction;
343 description.requiredAttributes.insert(XsdSchemaToken::Base);
344 description.optionalAttributes.insert(XsdSchemaToken::Id);
345 }
346
347 {
348 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::ComplexContentExtension];
349 //description.tagToken = XsdSchemaToken::Extension;
350 description.requiredAttributes.insert(XsdSchemaToken::Base);
351 description.optionalAttributes.insert(XsdSchemaToken::Id);
352 }
353
354 {
355 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::NamedGroup];
356 //description.tagToken = XsdSchemaToken::Group;
357 description.optionalAttributes.insert(XsdSchemaToken::Id);
358 description.requiredAttributes.insert(XsdSchemaToken::Name);
359 }
360
361 {
362 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::ReferredGroup];
363 description.optionalAttributes.reserve(4);
364 //description.tagToken = XsdSchemaToken::Group;
365 description.optionalAttributes.insert(XsdSchemaToken::Id);
366 description.optionalAttributes.insert(XsdSchemaToken::MaxOccurs);
367 description.optionalAttributes.insert(XsdSchemaToken::MinOccurs);
368 description.requiredAttributes.insert(XsdSchemaToken::Ref);
369 }
370
371 {
372 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::All];
373 //description.tagToken = XsdSchemaToken::All;
374 description.optionalAttributes.insert(XsdSchemaToken::Id);
375 }
376
377 {
378 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::LocalAll];
379 //description.tagToken = XsdSchemaToken::All;
380 description.optionalAttributes.insert(XsdSchemaToken::Id);
381 description.optionalAttributes.insert(XsdSchemaToken::MaxOccurs);
382 description.optionalAttributes.insert(XsdSchemaToken::MinOccurs);
383 }
384
385 {
386 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::Choice];
387 //description.tagToken = XsdSchemaToken::Choice;
388 description.optionalAttributes.insert(XsdSchemaToken::Id);
389 }
390
391 {
392 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::LocalChoice];
393 //description.tagToken = XsdSchemaToken::Choice;
394 description.optionalAttributes.insert(XsdSchemaToken::Id);
395 description.optionalAttributes.insert(XsdSchemaToken::MaxOccurs);
396 description.optionalAttributes.insert(XsdSchemaToken::MinOccurs);
397 }
398
399 {
400 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::Sequence];
401 //description.tagToken = XsdSchemaToken::Sequence;
402 description.optionalAttributes.insert(XsdSchemaToken::Id);
403 }
404
405 {
406 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::LocalSequence];
407 //description.tagToken = XsdSchemaToken::Sequence;
408 description.optionalAttributes.insert(XsdSchemaToken::Id);
409 description.optionalAttributes.insert(XsdSchemaToken::MaxOccurs);
410 description.optionalAttributes.insert(XsdSchemaToken::MinOccurs);
411 }
412
413 {
414 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::GlobalAttribute];
415 description.optionalAttributes.reserve(5);
416 //description.tagToken = XsdSchemaToken::Attribute;
417 description.optionalAttributes.insert(XsdSchemaToken::Default);
418 description.optionalAttributes.insert(XsdSchemaToken::Fixed);
419 description.optionalAttributes.insert(XsdSchemaToken::Id);
420 description.requiredAttributes.insert(XsdSchemaToken::Name);
421 description.optionalAttributes.insert(XsdSchemaToken::Type);
422 }
423
424 {
425 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::LocalAttribute];
426 description.optionalAttributes.reserve(8);
427 //description.tagToken = XsdSchemaToken::Attribute;
428 description.optionalAttributes.insert(XsdSchemaToken::Default);
429 description.optionalAttributes.insert(XsdSchemaToken::Fixed);
430 description.optionalAttributes.insert(XsdSchemaToken::Form);
431 description.optionalAttributes.insert(XsdSchemaToken::Id);
432 description.optionalAttributes.insert(XsdSchemaToken::Name);
433 description.optionalAttributes.insert(XsdSchemaToken::Ref);
434 description.optionalAttributes.insert(XsdSchemaToken::Type);
435 description.optionalAttributes.insert(XsdSchemaToken::Use);
436 }
437
438 {
439 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::NamedAttributeGroup];
440 //description.tagToken = XsdSchemaToken::AttributeGroup;
441 description.optionalAttributes.insert(XsdSchemaToken::Id);
442 description.requiredAttributes.insert(XsdSchemaToken::Name);
443 }
444
445 {
446 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::ReferredAttributeGroup];
447 //description.tagToken = XsdSchemaToken::AttributeGroup;
448 description.optionalAttributes.insert(XsdSchemaToken::Id);
449 description.requiredAttributes.insert(XsdSchemaToken::Ref);
450 }
451
452 {
453 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::LocalElement];
454 description.optionalAttributes.reserve(11);
455 //description.tagToken = XsdSchemaToken::Element;
456 description.optionalAttributes.insert(XsdSchemaToken::Block);
457 description.optionalAttributes.insert(XsdSchemaToken::Default);
458 description.optionalAttributes.insert(XsdSchemaToken::Fixed);
459 description.optionalAttributes.insert(XsdSchemaToken::Form);
460 description.optionalAttributes.insert(XsdSchemaToken::Id);
461 description.optionalAttributes.insert(XsdSchemaToken::MinOccurs);
462 description.optionalAttributes.insert(XsdSchemaToken::MaxOccurs);
463 description.optionalAttributes.insert(XsdSchemaToken::Name);
464 description.optionalAttributes.insert(XsdSchemaToken::Nillable);
465 description.optionalAttributes.insert(XsdSchemaToken::Ref);
466 description.optionalAttributes.insert(XsdSchemaToken::Type);
467 }
468
469 {
470 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::GlobalElement];
471 description.optionalAttributes.reserve(10);
472 //description.tagToken = XsdSchemaToken::Element;
473 description.optionalAttributes.insert(XsdSchemaToken::Abstract);
474 description.optionalAttributes.insert(XsdSchemaToken::Block);
475 description.optionalAttributes.insert(XsdSchemaToken::Default);
476 description.optionalAttributes.insert(XsdSchemaToken::Final);
477 description.optionalAttributes.insert(XsdSchemaToken::Fixed);
478 description.optionalAttributes.insert(XsdSchemaToken::Id);
479 description.requiredAttributes.insert(XsdSchemaToken::Name);
480 description.optionalAttributes.insert(XsdSchemaToken::Nillable);
481 description.optionalAttributes.insert(XsdSchemaToken::SubstitutionGroup);
482 description.optionalAttributes.insert(XsdSchemaToken::Type);
483 }
484
485 {
486 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::Unique];
487 //description.tagToken = XsdSchemaToken::Unique;
488 description.optionalAttributes.insert(XsdSchemaToken::Id);
489 description.requiredAttributes.insert(XsdSchemaToken::Name);
490 }
491
492 {
493 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::Key];
494 //description.tagToken = XsdSchemaToken::Key;
495 description.optionalAttributes.insert(XsdSchemaToken::Id);
496 description.requiredAttributes.insert(XsdSchemaToken::Name);
497 }
498
499 {
500 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::KeyRef];
501 //description.tagToken = XsdSchemaToken::Keyref;
502 description.optionalAttributes.insert(XsdSchemaToken::Id);
503 description.requiredAttributes.insert(XsdSchemaToken::Name);
504 description.requiredAttributes.insert(XsdSchemaToken::Refer);
505 }
506
507 {
508 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::Selector];
509 //description.tagToken = XsdSchemaToken::Selector;
510 description.optionalAttributes.insert(XsdSchemaToken::Id);
511 description.requiredAttributes.insert(XsdSchemaToken::Xpath);
512 description.optionalAttributes.insert(XsdSchemaToken::XPathDefaultNamespace);
513 }
514
515 {
516 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::Field];
517 //description.tagToken = XsdSchemaToken::Field;
518 description.optionalAttributes.insert(XsdSchemaToken::Id);
519 description.requiredAttributes.insert(XsdSchemaToken::Xpath);
520 description.optionalAttributes.insert(XsdSchemaToken::XPathDefaultNamespace);
521 }
522
523 {
524 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::Notation];
525 description.optionalAttributes.reserve(4);
526 //description.tagToken = XsdSchemaToken::Notation;
527 description.optionalAttributes.insert(XsdSchemaToken::Id);
528 description.requiredAttributes.insert(XsdSchemaToken::Name);
529 description.optionalAttributes.insert(XsdSchemaToken::Public);
530 description.optionalAttributes.insert(XsdSchemaToken::System);
531 }
532
533 {
534 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::Any];
535 description.optionalAttributes.reserve(7);
536 //description.tagToken = XsdSchemaToken::Any;
537 description.optionalAttributes.insert(XsdSchemaToken::Id);
538 description.optionalAttributes.insert(XsdSchemaToken::MaxOccurs);
539 description.optionalAttributes.insert(XsdSchemaToken::MinOccurs);
540 description.optionalAttributes.insert(XsdSchemaToken::Namespace);
541 description.optionalAttributes.insert(XsdSchemaToken::NotNamespace);
542 description.optionalAttributes.insert(XsdSchemaToken::NotQName);
543 description.optionalAttributes.insert(XsdSchemaToken::ProcessContents);
544 }
545
546 {
547 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::AnyAttribute];
548 description.optionalAttributes.reserve(5);
549 //description.tagToken = XsdSchemaToken::AnyAttribute;
550 description.optionalAttributes.insert(XsdSchemaToken::Id);
551 description.optionalAttributes.insert(XsdSchemaToken::Namespace);
552 description.optionalAttributes.insert(XsdSchemaToken::NotNamespace);
553 description.optionalAttributes.insert(XsdSchemaToken::NotQName);
554 description.optionalAttributes.insert(XsdSchemaToken::ProcessContents);
555 }
556
557 {
558 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::Alternative];
559 //description.tagToken = XsdSchemaToken::Alternative;
560 description.optionalAttributes.insert(XsdSchemaToken::Id);
561 description.optionalAttributes.insert(XsdSchemaToken::Test);
562 description.optionalAttributes.insert(XsdSchemaToken::Type);
563 description.optionalAttributes.insert(XsdSchemaToken::XPathDefaultNamespace);
564 }
565
566 {
567 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::OpenContent];
568 //description.tagToken = XsdSchemaToken::OpenContent;
569 description.optionalAttributes.insert(XsdSchemaToken::Id);
570 description.optionalAttributes.insert(XsdSchemaToken::Mode);
571 }
572
573 {
574 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::DefaultOpenContent];
575 //description.tagToken = XsdSchemaToken::DefaultOpenContent;
576 description.optionalAttributes.insert(XsdSchemaToken::AppliesToEmpty);
577 description.optionalAttributes.insert(XsdSchemaToken::Id);
578 description.optionalAttributes.insert(XsdSchemaToken::Mode);
579 }
580
581 {
582 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::Assert];
583 //description.tagToken = XsdSchemaToken::Assert;
584 description.optionalAttributes.insert(XsdSchemaToken::Id);
585 description.requiredAttributes.insert(XsdSchemaToken::Test);
586 description.optionalAttributes.insert(XsdSchemaToken::XPathDefaultNamespace);
587 }
588
589 {
590 ElementDescription<XsdSchemaToken, XsdTagScope::Type> &description = elementDescriptions[XsdTagScope::Assertion];
591 //description.tagToken = XsdSchemaToken::Assertion;
592 description.optionalAttributes.insert(XsdSchemaToken::Id);
593 description.requiredAttributes.insert(XsdSchemaToken::Test);
594 description.optionalAttributes.insert(XsdSchemaToken::XPathDefaultNamespace);
595 }
596
597 Q_ASSERT_X(elementDescriptions.count() == ReservedForElements, Q_FUNC_INFO,
598 qPrintable(QString::fromLatin1("Expected is %1, actual is %2.").arg(ReservedForElements).arg(elementDescriptions.count())));
599
600 return elementDescriptions;
601}
602
603QT_END_NAMESPACE
Note: See TracBrowser for help on using the repository browser.