Author: borisk
Date: Fri Nov 13 16:33:05 2009
New Revision: 835905
URL: http://svn.apache.org/viewvc?rev=835905&view=rev
Log:
Call getDatatypeValidator before checking whether the schema has been imported.
Modified:
xerces/c/trunk/src/xercesc/validators/schema/TraverseSchema.cpp
Modified: xerces/c/trunk/src/xercesc/validators/schema/TraverseSchema.cpp
URL:
http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/validators/schema/TraverseSchema.cpp?rev=835905&r1=835904&r2=835905&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/schema/TraverseSchema.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/schema/TraverseSchema.cpp Fri Nov 13
16:33:05 2009
@@ -6486,26 +6486,22 @@
baseComplexTypeInfo = getTypeInfoFromNS(elem, uriStr, localPart);
if (!baseComplexTypeInfo) {
+
+ baseDTValidator = getDatatypeValidator(uriStr, localPart);
+
+ if (!baseDTValidator)
+ {
SchemaInfo* impInfo =
fSchemaInfo->getImportInfo(fURIStringPool->addOrFind(uriStr));
- if (!impInfo)
+ if (!impInfo || impInfo->getProcessed())
{
reportSchemaError(elem, XMLUni::fgXMLErrDomain,
XMLErrs::BaseTypeNotFound, baseName);
throw TraverseSchema::InvalidComplexTypeInfo;
}
- if (impInfo->getProcessed())
- {
- // the schema has already been loaded, so check if it's a
simple type before complaining
- baseDTValidator = getDatatypeValidator(uriStr, localPart);
- if(!baseDTValidator)
- {
- reportSchemaError(elem, XMLUni::fgXMLErrDomain,
XMLErrs::BaseTypeNotFound, baseName);
- throw TraverseSchema::InvalidComplexTypeInfo;
- }
- }
infoType = SchemaInfo::IMPORT;
restoreSchemaInfo(impInfo, infoType);
+ }
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]