67 , m_namePool(parserContext->namePool())
68 , m_schema(parserContext->schema())
122 if (visitedTypes.
contains(otherType)) {
125 visitedTypes.
insert(otherType);
139 for (
int i = 0; i < members.count(); ++i) {
164 if (type == otherType) {
176 for (
int i = 0; i < memberTypes.count(); ++i) {
194 if (visitedTypes.
contains(otherType)) {
195 conflictingType = otherType;
198 visitedTypes.
insert(otherType);
201 if (type == otherType)
215 for (
int i = 0; i < types.
count(); ++i) {
227 m_context->
error(QtXmlPatterns::tr(
"%1 has inheritance loop in its base type %2.")
247 for (
int i = 0; i < types.
count(); ++i) {
265 for (
int j = 0; j < memberTypes.
count(); ++j) {
284 for (
int i = 0; i < types.
count(); ++i) {
292 m_context->
error(QtXmlPatterns::tr(
"%1 is not allowed to derive from %2 by restriction as the latter defines it as final.")
297 m_context->
error(QtXmlPatterns::tr(
"%1 is not allowed to derive from %2 by extension as the latter defines it as final.")
314 for (
int i = 0; i < types.
count(); ++i) {
328 m_context->
error(QtXmlPatterns::tr(
"Base type of simple type %1 cannot be complex type %2.")
337 m_context->
error(QtXmlPatterns::tr(
"Simple type %1 cannot have direct base type %2.")
355 for (
int i = 0; i < types.
count(); ++i) {
370 m_context->
error(QtXmlPatterns::tr(
"Simple type %1 is not allowed to have base type %2.")
379 m_context->
error(QtXmlPatterns::tr(
"Simple type %1 is not allowed to have base type %2.")
391 m_context->
error(QtXmlPatterns::tr(
"Simple type %1 can only have simple atomic type as base type.")
397 m_context->
error(QtXmlPatterns::tr(
"Simple type %1 cannot derive from %2 as the latter defines restriction as final.")
418 for (
int j = 0; j < memberTypes.
count(); ++j) {
433 m_context->
error(QtXmlPatterns::tr(
"%1 is not allowed to derive from %2 by list as the latter defines it as final.")
443 bool invalidFacetFound =
false;
444 while (it.hasNext()) {
447 invalidFacetFound =
true;
452 if (invalidFacetFound) {
453 m_context->
error(QtXmlPatterns::tr(
"Simple type %1 is only allowed to have %2 facet.")
483 bool invalidFacetFound =
false;
485 while (it.hasNext()) {
494 invalidFacetType = facetType;
495 invalidFacetFound =
true;
500 if (invalidFacetFound) {
501 m_context->
error(QtXmlPatterns::tr(
"Simple type %1 contains not allowed facet type %2.")
518 for (
int i = 0; i < memberTypes.
count(); ++i) {
522 m_context->
error(QtXmlPatterns::tr(
"%1 is not allowed to derive from %2 by union as the latter defines it as final.")
531 m_context->
error(QtXmlPatterns::tr(
"%1 is not allowed to have any facets.")
539 m_context->
error(QtXmlPatterns::tr(
"Base type %1 of simple type %2 must have variety of union.")
548 m_context->
error(QtXmlPatterns::tr(
"Base type %1 of simple type %2 is not allowed to have restriction in %3 attribute.")
561 for (
int i = 0; i < memberTypes.
count(); ++i) {
566 m_context->
error(QtXmlPatterns::tr(
"Member type %1 cannot be derived from member type %2 of %3's base type %4.")
580 bool invalidFacetFound =
false;
582 while (it.hasNext()) {
587 invalidFacetType = facetType;
588 invalidFacetFound =
true;
593 if (invalidFacetFound) {
594 m_context->
error(QtXmlPatterns::tr(
"Simple type %1 contains not allowed facet type %2.")
616 for (
int i = 0; i < types.
count(); ++i) {
631 m_context->
error(QtXmlPatterns::tr(
"Derivation method of %1 must be extension because the base type %2 is a simple type.")
648 for (
int i = 0; i < types.
count(); ++i) {
661 m_context->
error(QtXmlPatterns::tr(
"Complex type %1 has duplicated element %2 in its content model.")
669 m_context->
error(QtXmlPatterns::tr(
"Complex type %1 has non-deterministic content.")
690 m_context->
error(QtXmlPatterns::tr(
"Attributes of complex type %1 are not a valid extension of the attributes of base type %2: %3.")
699 bool validContentType =
false;
702 validContentType =
true;
705 validContentType =
true;
709 validContentType =
true;
715 validContentType =
true;
726 if (!validContentType) {
727 m_context->
error(QtXmlPatterns::tr(
"Content model of complex type %1 is not a valid extension of content model of %2.")
737 m_context->
error(QtXmlPatterns::tr(
"Complex type %1 must have simple content.")
743 if (complexType->
contentType()->simpleType() != baseType) {
744 m_context->
error(QtXmlPatterns::tr(
"Complex type %1 must have the same simple type as its base class %2.")
757 bool derivationOk =
false;
811 m_context->
error(QtXmlPatterns::tr(
"Complex type %1 cannot be derived from base type %2%3.")
825 m_context->
error(QtXmlPatterns::tr(
"Attributes of complex type %1 are not a valid restriction from the attributes of base type %2: %3.")
839 m_context->
error(QtXmlPatterns::tr(
"Complex type %1 with simple content cannot be derived from complex base type %2.")
857 for (
int i = 0; i < types.
count(); ++i) {
874 m_context->
error(QtXmlPatterns::tr(
"Item type of simple type %1 cannot be a complex type.")
884 m_context->
error(QtXmlPatterns::tr(
"%1 is not allowed to derive from %2 by list as the latter defines it as final.")
901 for (
int j = 0; j < memberTypes.
count(); ++j) {
914 for (
int i = 0; i < memberTypes.
count(); ++i) {
918 m_context->
error(QtXmlPatterns::tr(
"Member type of simple type %1 cannot be a complex type.")
926 m_context->
error(QtXmlPatterns::tr(
"%1 is not allowed to have a member type with the same name as itself.")
935 m_context->
error(QtXmlPatterns::tr(
"%1 is not allowed to derive from %2 by union as the latter defines it as final.")
951 for (
int i = 0; i < types.
count(); ++i) {
961 for (
int i = 0; i < anonymousTypes.count(); ++i) {
962 if (!(anonymousTypes.at(i)->isSimpleType()) || !(anonymousTypes.at(i)->isDefinedBySchema()))
993 bool foundSuperMinimumLength =
false;
999 if (minLengthValue->toInteger() == superValue->toInteger()) {
1000 foundSuperMinimumLength =
true;
1008 if ((minLengthValue->toInteger() > lengthValue->toInteger()) || !foundSuperMinimumLength) {
1009 m_context->
error(QtXmlPatterns::tr(
"%1 facet collides with %2 facet.")
1022 bool foundSuperMaximumLength =
false;
1028 if (maxLengthValue->toInteger() == superValue->toInteger()) {
1029 foundSuperMaximumLength =
true;
1037 if ((maxLengthValue->toInteger() < lengthValue->toInteger()) || !foundSuperMaximumLength) {
1038 m_context->
error(QtXmlPatterns::tr(
"%1 facet collides with %2 facet.")
1051 if (lengthValue->toInteger() != baseValue->toInteger()) {
1052 m_context->
error(QtXmlPatterns::tr(
"%1 facet must have the same value as %2 facet of base type.")
1071 if (maxLengthValue->toInteger() < minLengthValue->toInteger()) {
1072 m_context->
error(QtXmlPatterns::tr(
"%1 facet collides with %2 facet.")
1088 if (minLengthValue->toInteger() < baseValue->toInteger()) {
1089 m_context->
error(QtXmlPatterns::tr(
"%1 facet must be equal or greater than %2 facet of base type.")
1107 if (maxLengthValue->toInteger() > baseValue->toInteger()) {
1108 m_context->
error(QtXmlPatterns::tr(
"%1 facet must be less than or equal to %2 facet of base type.")
1125 for (
int i = 0; i < multiValue.
count(); ++i) {
1141 for (
int k = 0; k < notationNames.
count(); ++k) {
1144 m_context->
error(QtXmlPatterns::tr(
"Unknown notation %1 used in %2 facet.")
1158 for (
int k = 0; k < multiValue.
count(); ++k) {
1163 if (!checker.
isValidString(actualValue, baseType, errorMsg)) {
1164 m_context->
error(QtXmlPatterns::tr(
"%1 facet contains invalid value %2: %3.")
1186 m_context->
error(QtXmlPatterns::tr(
"%1 facet cannot be %2 or %3 if %4 facet of base type is %5.")
1197 m_context->
error(QtXmlPatterns::tr(
"%1 facet cannot be %2 if %3 facet of base type is %4.")
1215 if (comparableBaseType) {
1217 m_context->error(QtXmlPatterns::tr(
"%1 facet must be less than or equal to %2 facet.")
1231 if (comparableBaseType) {
1233 m_context->error(QtXmlPatterns::tr(
"%1 facet must be less than or equal to %2 facet of base type.")
1243 if (comparableBaseType) {
1245 m_context->error(QtXmlPatterns::tr(
"%1 facet must be less than %2 facet of base type.")
1260 m_context->
error(QtXmlPatterns::tr(
"%1 facet and %2 facet cannot appear together.")
1270 if (comparableBaseType) {
1272 m_context->error(QtXmlPatterns::tr(
"%1 facet must be less than or equal to %2 facet.")
1286 if (comparableBaseType) {
1288 m_context->error(QtXmlPatterns::tr(
"%1 facet must be less than or equal to %2 facet of base type.")
1298 if (comparableBaseType) {
1300 m_context->error(QtXmlPatterns::tr(
"%1 facet must be less than or equal to %2 facet of base type.")
1310 if (comparableBaseType) {
1312 m_context->error(QtXmlPatterns::tr(
"%1 facet must be greater than %2 facet of base type.")
1322 if (comparableBaseType) {
1324 m_context->error(QtXmlPatterns::tr(
"%1 facet must be greater than %2 facet of base type.")
1339 m_context->
error(QtXmlPatterns::tr(
"%1 facet and %2 facet cannot appear together.")
1349 if (comparableBaseType) {
1351 m_context->error(QtXmlPatterns::tr(
"%1 facet must be less than %2 facet.")
1365 if (comparableBaseType) {
1367 m_context->error(QtXmlPatterns::tr(
"%1 facet must be greater than or equal to %2 facet of base type.")
1377 if (comparableBaseType) {
1379 m_context->error(QtXmlPatterns::tr(
"%1 facet must be less than %2 facet of base type.")
1389 if (comparableBaseType) {
1391 m_context->error(QtXmlPatterns::tr(
"%1 facet must be less than or equal to %2 facet of base type.")
1407 if (comparableBaseType) {
1409 m_context->error(QtXmlPatterns::tr(
"%1 facet must be less than %2 facet.")
1423 if (comparableBaseType) {
1425 m_context->error(QtXmlPatterns::tr(
"%1 facet must be greater than or equal to %2 facet of base type.")
1435 if (comparableBaseType) {
1437 m_context->error(QtXmlPatterns::tr(
"%1 facet must be greater than %2 facet of base type.")
1447 if (comparableBaseType) {
1449 m_context->error(QtXmlPatterns::tr(
"%1 facet must be less than or equal to %2 facet of base type.")
1459 if (comparableBaseType) {
1461 m_context->error(QtXmlPatterns::tr(
"%1 facet must be less than %2 facet of base type.")
1482 if (totalDigitsValue->toInteger() > baseValue->toInteger()) {
1483 m_context->
error(QtXmlPatterns::tr(
"%1 facet must be less than or equal to %2 facet of base type.")
1501 if (fractionDigitsValue->toInteger() > totalDigitsValue->toInteger()) {
1502 m_context->
error(QtXmlPatterns::tr(
"%1 facet must be less than or equal to %2 facet.")
1517 if (fractionDigitsValue->toInteger() > baseValue->toInteger()) {
1518 m_context->
error(QtXmlPatterns::tr(
"%1 facet must be less than or equal to %2 facet of base type.")
1538 m_context->
error(QtXmlPatterns::tr(
"Simple type contains not allowed facet %1.")
1550 m_context->
error(QtXmlPatterns::tr(
"%1, %2, %3, %4, %5 and %6 facets are not allowed when derived by list.")
1566 m_context->
error(QtXmlPatterns::tr(
"Only %1 and %2 facets are allowed when derived by union.")
1579 while (it.hasNext()) {
1589 m_context->error(QtXmlPatterns::tr(
"%1 contains %2 facet with invalid data: %3.")
1601 for (
int j = 0; j < multiValue.
count(); ++j) {
1605 m_context->
error(QtXmlPatterns::tr(
"%1 contains %2 facet with invalid data: %3.")
1622 for (
int i = 0; i < attributeGroups.
count(); ++i) {
1629 m_context->
error(QtXmlPatterns::tr(
"Attribute group %1 contains attribute %2 twice.")
1638 m_context->
error(QtXmlPatterns::tr(
"Attribute group %1 contains two different attributes that both have types derived from %2.")
1646 m_context->
error(QtXmlPatterns::tr(
"Attribute group %1 contains attribute %2 that has value constraint but type that inherits from %3.")
1659 for (
int i = 0; i < types.
count(); ++i) {
1669 m_context->
error(QtXmlPatterns::tr(
"Complex type %1 contains attribute %2 twice.")
1678 m_context->
error(QtXmlPatterns::tr(
"Complex type %1 contains two different attributes that both have types derived from %2.")
1686 m_context->
error(QtXmlPatterns::tr(
"Complex type %1 contains attribute %2 that has value constraint but type that inherits from %3.")
1699 QSetIterator<XsdElement::Ptr>
it(elements);
1700 while (it.hasNext()) {
1723 targetType = simpleType;
1729 m_context->
error(QtXmlPatterns::tr(
"Element %1 is not allowed to have a value constraint if its base type is complex.")
1736 m_context->
error(QtXmlPatterns::tr(
"Element %1 is not allowed to have a value constraint if its type is derived from %2.")
1746 m_context->
error(QtXmlPatterns::tr(
"Value constraint of element %1 is not of elements type: %2.")
1757 m_context->
error(QtXmlPatterns::tr(
"Value constraint of element %1 is not of elements type: %2.")
1777 for (
int i = 0; i < affiliations.
count(); ++i) {
1780 bool derivationOk =
false;
1783 derivationOk =
true;
1788 derivationOk =
true;
1793 derivationOk =
true;
1797 if (!derivationOk) {
1818 for (
int i = 0; i < types.
count(); ++i) {
1824 for (
int j = 0; j < uses.count(); ++j)
1825 attributes.
append(uses.at(j)->attribute());
1828 for (
int i = 0; i < attributes.
count(); ++i) {
1839 m_context->
error(QtXmlPatterns::tr(
"Value constraint of attribute %1 is not of attributes type: %2.")
1848 m_context->
error(QtXmlPatterns::tr(
"Attribute %1 has value constraint but has type derived from %2.")
1876 for (
int i = 0; i < types.
count(); ++i) {
1882 for (
int i = 0; i < complexTypes.
count(); ++i) {
1885 if (!baseType || !baseType->isComplexType() || !baseType->isDefinedBySchema())
1892 for (
int j = 0; j < attributeUses.
count(); ++j)
1896 for (
int j = 0; j < baseAttributeUses.
count(); ++j) {
1904 m_context->
error(QtXmlPatterns::tr(
"%1 attribute in derived complex type must be %2 like in base type.")
1912 if (baseAttributeUse->valueConstraint()) {
1914 if (!attributeUse->valueConstraint()) {
1915 m_context->
error(QtXmlPatterns::tr(
"Attribute %1 in derived complex type must have %2 value constraint like in base type.")
1923 if (!checker.
valuesAreEqual(attributeUse->valueConstraint()->value(), baseAttributeUse->valueConstraint()->value(), attributeUse->attribute()->type())) {
1924 m_context->
error(QtXmlPatterns::tr(
"Attribute %1 in derived complex type must have the same %2 value constraint like in base type.")
1931 m_context->
error(QtXmlPatterns::tr(
"Attribute %1 in derived complex type must have %2 value constraint.")
1947 if (baseWildcard && derivedWildcard) {
1964 for (
int i = 0; i < types.
count(); ++i) {
1988 m_context->
error(QtXmlPatterns::tr(
"Element %1 exists twice with different types.")
1998 const XsdElement::List substElements = element->substitutionGroupAffiliations();
1999 for (
int i = 0; i < substElements.
count(); ++i) {
2003 m_context->
error(QtXmlPatterns::tr(
"Element %1 exists twice with different types.")
2015 for (
int i = 0; i < particles.count(); ++i)
2021 if (!wildcardMap.
contains(wildcard->namespaceConstraint()->variety())) {
2025 const XsdWildcard::Ptr otherWildcard = wildcardMap.
value(wildcard->namespaceConstraint()->variety());
2026 if ((wildcard->processContents() != otherWildcard->
processContents()) || (wildcard->namespaceConstraint()->namespaces() != otherWildcard->
namespaceConstraint()->namespaces()))
2034 wildcardMap.
insert(wildcard->namespaceConstraint()->variety(), wildcard);
virtual DerivationMethod derivationMethod() const
static AtomicValue::Ptr fromLexical(const QString &lexicalValue, const SchemaType::Ptr &type, const ReportContext::Ptr &context, const SourceLocationReflection *const sourceLocationReflection)
Returns an AtomicValue of type type from the lexical space lexicalValue, and raise an error through c...
static uint hash(const uchar *p, int n)
The complex type has further elements or attributes and text as content.
static const AtomicType::Ptr xsID
void addComponentLocationHash(const QHash< NamedSchemaComponent::Ptr, QSourceLocation > &hash)
QExplicitlySharedDataPointer< AtomicValue > Ptr
virtual DerivationConstraints derivationConstraints() const
virtual TypeCategory category() const =0
void checkComplexTypeConstraints()
virtual TypeCategory category() const
QExplicitlySharedDataPointer< XsdSchemaContext > m_context
virtual SchemaType::Ptr wxsSuperType() const
#define QT_END_NAMESPACE
This macro expands to.
Match a minimum inclusive (Minimum Inclusive Definition)
virtual bool isSimpleType() const
The attribute has a default value set.
The QRegExp class provides pattern matching using regular expressions.
QString formatKeyword(const QString &keyword)
void checkElementDuplicates()
virtual bool hasError() const
#define it(className, varName)
void checkElementConstraints()
ProcessContents processContents() const
The attribute use has a fixed value set.
static bool hasDuplicatedElements(const XsdParticle::Ptr &particle, const NamePool::Ptr &namePool, XsdElement::Ptr &conflictingElement)
void checkBasicCircularInheritances()
void checkSimpleDerivationRestrictions()
QString formatType(const NamePool::Ptr &np, const T &type)
Formats ItemType and SequenceType.
XsdTerm::Ptr term() const
QSourceLocation sourceLocation(const NamedSchemaComponent::Ptr &component) const
virtual TypeCategory category() const
ValueConstraint::Ptr valueConstraint() const
bool isValidValue(const QString &value, const AnySimpleType::Ptr &type, QString &errorMsg) const
static bool subsumes(const XsdParticle::Ptr &particle, const XsdParticle::Ptr &derivedParticle, const XsdSchemaContext::Ptr &context, QString &errorMsg)
The attribute is not allowed to be there.
void setUri(const QUrl &newUri)
Sets the URI to newUri.
static QString typeName(Type type)
The attribute can be there but doesn't need to.
XsdAttributeUse::List attributeUses() const
QLatin1String(DBUS_INTERFACE_DBUS))) Q_GLOBAL_STATIC_WITH_ARGS(QString
void setLine(qint64 newLine)
Sets the line number to newLine.
SchemaType::List anonymousTypes() const
XsdElement::List substitutionGroupAffiliations() const
int count(const T &t) const
Returns the number of occurrences of value in the list.
The QUrl class provides a convenient interface for working with URLs.
The QString class provides a Unicode character string.
static QString toString(NodeName token)
static bool constructAndCompare(const DerivedString< TypeString >::Ptr &operand1, const AtomicComparator::Operator op, const DerivedString< TypeString >::Ptr &operand2, const SchemaType::Ptr &type, const ReportContext::Ptr &context, const SourceLocationReflection *const sourceLocationReflection)
XsdSchemaChecker(const QExplicitlySharedDataPointer< XsdSchemaContext > &context, const XsdSchemaParserContext *parserContext)
virtual bool isWildcard() const
virtual bool isSimpleType() const
QSet< XsdElement::Ptr > collectAllElements(const XsdParticle::Ptr &particle)
static bool matchesType(const SchemaType::Ptr &myType, const SchemaType::Ptr &otherType, QSet< SchemaType::Ptr > visitedTypes)
bool contains(const Key &key) const
Returns true if the hash contains an item with the key; otherwise returns false.
bool hasConstraintIDAttributeUse(const XsdAttributeUse::List &list, XsdAttribute::Ptr &conflictingAttribute) const
const T value(const Key &key) const
Returns the value associated with the key.
XsdAttributeUse::List attributeUses() const
virtual QXmlName name(const NamePool::Ptr &np) const
Returns the name of the type.
ContentType::Ptr contentType() const
Match a maximum exclusive (Maximum Exclusive Definition)
bool isEmpty() const
Returns true if the list contains no items; otherwise returns false.
XsdWildcard::Ptr attributeWildcard() const
iterator insert(const Key &key, const T &value)
Inserts a new item with the key and a value of value.
SchemaType::Ptr type() const
bool isValid() const
Returns true if the regular expression is valid; otherwise returns false.
virtual SchemaType::Ptr wxsSuperType() const
Match an enumeration (Enumeration Definition)
static const SchemaType::Ptr xsAnyType
void checkInheritanceRestrictions()
void append(const T &t)
Inserts value at the end of the list.
virtual bool isElement() const
virtual SchemaType::Ptr wxsSuperType() const
#define QT_BEGIN_NAMESPACE
This macro expands to.
const TCastTarget * as() const
void error(const QString &message, const ReportContext::ErrorCode errorCode, const QSourceLocation &sourceLocation)
virtual DerivationConstraints derivationConstraints() const =0
Match the minimum length (Minimum Length Definition)
static bool checkWildcardProcessContents(const XsdWildcard::Ptr &baseWildcard, const XsdWildcard::Ptr &derivedWildcard)
static XsdFacet::Hash mergedFacetsForType(const SchemaType::Ptr &type, const XsdSchemaContext::Ptr &context)
SchemaType::DerivationConstraints substitutionGroupExclusions() const
bool contains(const T &value) const
void setColumn(qint64 newColumn)
Sets the column number to newColumn.
QList< T > toList() const
bool isEmpty() const
Returns true if the string has no characters; otherwise returns false.
AnySimpleType::Ptr type() const
void checkAttributeUseConstraints()
virtual bool isComplexType() const
const T & at(int i) const
Returns the item at index position i in the list.
void checkDuplicatedAttributeUses()
The attribute must be there.
XsdNotation::Ptr notation(const QXmlName &name) const
static bool isValidAttributeUsesExtension(const XsdAttributeUse::List &derivedAttributeUses, const XsdAttributeUse::List &attributeUses, const XsdWildcard::Ptr &derivedWildcard, const XsdWildcard::Ptr &wildcard, const XsdSchemaContext::Ptr &context, QString &errorMsg)
The namespace for the internal API of QtXmlPatterns.
virtual QString displayName(const NamePool::Ptr &namePool) const
A context for schema parsing.
bool isEmpty() const
Returns true if the hash contains no items; otherwise returns false.
const_iterator insert(const T &value)
The QSourceLocation class identifies a location in a resource by URI, line, and column.
virtual QString stringValue() const =0
static bool isComplexDerivationOk(const SchemaType::Ptr &derivedType, const SchemaType::Ptr &baseType, const SchemaType::DerivationConstraints &constraints)
void checkSimpleTypeConstraints()
static QString normalizedValue(const QString &value, const XsdFacet::Hash &facets)
static bool isUPAConform(const XsdParticle::Ptr &particle, const NamePool::Ptr &namePool)
bool isValidString(const QString &normalizedString, const AnySimpleType::Ptr &type, QString &errorMsg, AnySimpleType::Ptr *boundType=0) const
static qreal component(const QPointF &point, unsigned int i)
static QString formatData(const QString &data)
QSet< T > & subtract(const QSet< T > &other)
void checkBasicSimpleTypeConstraints()
virtual QXmlName name(const NamePool::Ptr &namePool) const
static bool isSimpleDerivationOk(const SchemaType::Ptr &derivedType, const SchemaType::Ptr &baseType, const SchemaType::DerivationConstraints &constraints)
Match a whitespace rule (White Space Definition)
Match a maximum inclusive (Maximum Inclusive Definition)
Match some double digits (Fraction Digits Definition)
Represents instances of derived xs:string types, such as xs:normalizedString.
The complex type has only simple type content (e.g. text, number etc.)
Match a minimum exclusive (Minimum Exclusive Definition)
Match some integer digits (Total Digits Definition)
virtual DerivationMethod derivationMethod() const
bool valuesAreEqual(const QString &value, const QString &otherValue, const AnySimpleType::Ptr &type) const
NamespaceConstraint::Ptr namespaceConstraint() const
The QXmlName class represents the name of an XML node, in an efficient, namespace-aware way...
QList< AnySimpleType::Ptr > List
static const AtomicType::Ptr xsQName
static bool wxsTypeMatches(const SchemaType::Ptr &type, const SchemaType::Ptr &otherType, QSet< SchemaType::Ptr > &visitedTypes, SchemaType::Ptr &conflictingType)
Match the exact length (Length Definition)
XsdFacet::Hash facets() const
static QString fromLatin1(const char *, int size=-1)
Returns a QString initialized with the first size characters of the Latin-1 string str...
An implementation of SourceLocationReflection that takes a QSourceLocation.
static const SchemaType::Ptr xsAnySimpleType
Match a regular expression (Pattern Definition)
void checkBasicComplexTypeConstraints()
static QTestResult::TestLocation location
XsdFacet::Hash facetsForType(const AnySimpleType::Ptr &type) const
QHash< NamedSchemaComponent::Ptr, QSourceLocation > m_componentLocationHash
static bool hasCircularUnionInheritance(const XsdSimpleType::Ptr &type, const SchemaType::Ptr &otherType, NamePool::Ptr &namePool)
virtual DerivationMethod derivationMethod() const =0
AnySimpleType::Ptr primitiveType() const
XsdAttribute::List attributes() const
The element is defined globally as child of the schema object.
ValueConstraint::Ptr valueConstraint() const
QHashIterator< XsdFacet::Type, XsdFacet::Ptr > HashIterator
virtual bool isModelGroup() const
bool hasDuplicatedAttributeUses(const XsdAttributeUse::List &list, XsdAttribute::Ptr &conflictingAttribute) const
AnySimpleType::List memberTypes() const
static const QTextHtmlElement elements[Html_NumElements]
XsdAttributeGroup::List attributeGroups() const
static const AtomicType::Ptr xsAnyAtomicType
void checkCircularInheritances()
static bool isParticleEmptiable(const XsdParticle::Ptr &particle)
void checkAttributeConstraints()
SchemaType::DerivationConstraints derivationConstraints() const
static QString formatAttribute(const QString &attribute)
Formats attribute name.
The attribute has a fixed value set.
bool isValidParticleExtension(const XsdParticle::Ptr &extension, const XsdParticle::Ptr &base) const
virtual bool isDefinedBySchema() const
SchemaType::List types() const
The complex type has further elements or attributes but no text as content.
QHash< QXmlName, QSet< XsdFacet::Type > > m_allowedAtomicFacets
static const AtomicType::Ptr xsNOTATION
virtual bool isComplexType() const
void setupAllowedAtomicFacets()
QSourceLocation sourceLocationForType(const SchemaType::Ptr &type) const
The class that provides methods for checking a string against a type.
virtual SchemaType::Ptr wxsSuperType() const =0
void checkConstrainingFacets()
The complex type has no further content.
QList< Key > keys() const
Returns a list containing all the keys in the hash, in an arbitrary order.
virtual QXmlName name(const NamePool::Ptr &namePool) const
virtual QXmlName name(const NamePool::Ptr &np) const =0
Returns the name of the type.
QHash< Key, T > & unite(const QHash< Key, T > &other)
Inserts all the items in the other hash into this hash.
bool hasMultipleIDAttributeUses(const XsdAttributeUse::List &list) const
Match the maximum length (Maximum Length Definition)
static bool isValidAttributeUsesRestriction(const XsdAttributeUse::List &derivedAttributeUses, const XsdAttributeUse::List &attributeUses, const XsdWildcard::Ptr &derivedWildcard, const XsdWildcard::Ptr &wildcard, const XsdSchemaContext::Ptr &context, QString &errorMsg)
AnySimpleType::Ptr itemType() const