1 /****************************************************************************
3 ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
4 ** All rights reserved.
5 ** Contact: Nokia Corporation (qt-info@nokia.com)
7 ** This file is part of the QtXmlPatterns module of the Qt Toolkit.
9 ** $QT_BEGIN_LICENSE:LGPL$
10 ** No Commercial Usage
11 ** This file contains pre-release code and may not be distributed.
12 ** You may use this file in accordance with the terms and conditions
13 ** contained in the Technology Preview License Agreement accompanying
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.
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.
28 ** If you have questions regarding the use of this file, please contact
29 ** Nokia at qt-info@nokia.com.
40 ****************************************************************************/
42 #include "qxsdschemaparsercontext_p.h"
46 using namespace QPatternist
;
48 XsdSchemaParserContext::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())
57 NamePool::Ptr
XsdSchemaParserContext::namePool() const
62 XsdSchemaResolver::Ptr
XsdSchemaParserContext::resolver() const
67 XsdSchemaChecker::Ptr
XsdSchemaParserContext::checker() const
72 XsdSchema::Ptr
XsdSchemaParserContext::schema() const
77 ElementDescription
<XsdSchemaToken
, XsdTagScope::Type
>::Hash
XsdSchemaParserContext::elementDescriptions() const
79 return m_elementDescriptions
;
82 QXmlName
XsdSchemaParserContext::createAnonymousName(const QString
&targetNamespace
) const
84 m_anonymousNameCounter
.ref();
86 const QString name
= QString::fromLatin1("__AnonymousClass_%1").arg((int)m_anonymousNameCounter
);
88 return m_namePool
->allocateQName(targetNamespace
, name
);
91 ElementDescription
<XsdSchemaToken
, XsdTagScope::Type
>::Hash
XsdSchemaParserContext::setupElementDescriptions()
95 ReservedForElements
= 60
98 ElementDescription
<XsdSchemaToken
, XsdTagScope::Type
>::Hash elementDescriptions
;
99 elementDescriptions
.reserve(ReservedForElements
);
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
);
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
);
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
);
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
);
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
);
147 ElementDescription
<XsdSchemaToken
, XsdTagScope::Type
> &description
= elementDescriptions
[XsdTagScope::Annotation
];
148 //description.tagToken = XsdSchemaToken::Annotation;
149 description
.optionalAttributes
.insert(XsdSchemaToken::Id
);
153 ElementDescription
<XsdSchemaToken
, XsdTagScope::Type
> &description
= elementDescriptions
[XsdTagScope::AppInfo
];
154 //description.tagToken = XsdSchemaToken::Appinfo;
155 description
.optionalAttributes
.insert(XsdSchemaToken::Source
);
159 ElementDescription
<XsdSchemaToken
, XsdTagScope::Type
> &description
= elementDescriptions
[XsdTagScope::Documentation
];
160 //description.tagToken = XsdSchemaToken::Documentation;
161 description
.optionalAttributes
.insert(XsdSchemaToken::Source
);
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
);
173 ElementDescription
<XsdSchemaToken
, XsdTagScope::Type
> &description
= elementDescriptions
[XsdTagScope::LocalSimpleType
];
174 //description.tagToken = XsdSchemaToken::SimpleType;
175 description
.optionalAttributes
.insert(XsdSchemaToken::Id
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
314 ElementDescription
<XsdSchemaToken
, XsdTagScope::Type
> &description
= elementDescriptions
[XsdTagScope::SimpleContent
];
315 //description.tagToken = XsdSchemaToken::SimpleContent;
316 description
.optionalAttributes
.insert(XsdSchemaToken::Id
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
372 ElementDescription
<XsdSchemaToken
, XsdTagScope::Type
> &description
= elementDescriptions
[XsdTagScope::All
];
373 //description.tagToken = XsdSchemaToken::All;
374 description
.optionalAttributes
.insert(XsdSchemaToken::Id
);
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
);
386 ElementDescription
<XsdSchemaToken
, XsdTagScope::Type
> &description
= elementDescriptions
[XsdTagScope::Choice
];
387 //description.tagToken = XsdSchemaToken::Choice;
388 description
.optionalAttributes
.insert(XsdSchemaToken::Id
);
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
);
400 ElementDescription
<XsdSchemaToken
, XsdTagScope::Type
> &description
= elementDescriptions
[XsdTagScope::Sequence
];
401 //description.tagToken = XsdSchemaToken::Sequence;
402 description
.optionalAttributes
.insert(XsdSchemaToken::Id
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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())));
600 return elementDescriptions
;