diff --git a/src/xercesc/validators/schema/TraverseSchema.cpp b/src/xercesc/validators/schema/TraverseSchema.cpp index a3bb358627a5ba772bbe2ab8e9afb932dac99904..7b643347e3ba40f89fc72cc6e6a5c94d3902e2f1 100644 --- a/src/xercesc/validators/schema/TraverseSchema.cpp +++ b/src/xercesc/validators/schema/TraverseSchema.cpp @@ -393,11 +393,6 @@ void TraverseSchema::preprocessSchema(DOMElement* const schemaRoot, fSchemaInfo = currInfo; fSchemaInfoList->put((void*) fSchemaInfo->getCurrentSchemaURL(), fSchemaInfo->getTargetNSURI(), fSchemaInfo); fSchemaInfo->addSchemaInfo(fSchemaInfo, SchemaInfo::INCLUDE); - - if (!XMLString::equals(schemaRoot->getLocalName(), SchemaSymbols::fgELT_SCHEMA)) { - reportSchemaError(schemaRoot, XMLUni::fgXMLErrDomain, XMLErrs::InvalidXMLSchemaRoot); - } - traverseSchemaHeader(schemaRoot); // preprocess chidren @@ -407,6 +402,11 @@ void TraverseSchema::preprocessSchema(DOMElement* const schemaRoot, void TraverseSchema::traverseSchemaHeader(const DOMElement* const schemaRoot) { + // Make sure that the root element is <xsd:schema> + if (!XMLString::equals(schemaRoot->getLocalName(), SchemaSymbols::fgELT_SCHEMA)) { + reportSchemaError(schemaRoot, XMLUni::fgXMLErrDomain, XMLErrs::InvalidXMLSchemaRoot); + } + // ----------------------------------------------------------------------- // Check Attributes // ----------------------------------------------------------------------- @@ -578,11 +578,6 @@ void TraverseSchema::preprocessInclude(const DOMElement* const elem) { fSchemaInfo->getTargetNSURI(), fSchemaInfo); fPreprocessedNodes->put((void*) elem, fSchemaInfo); saveInfo->addSchemaInfo(fSchemaInfo, SchemaInfo::INCLUDE); - - if (!XMLString::equals(root->getLocalName(), SchemaSymbols::fgELT_SCHEMA)) { - reportSchemaError(root, XMLUni::fgXMLErrDomain, XMLErrs::InvalidXMLSchemaRoot); - } - traverseSchemaHeader(root); preprocessChildren(root); fSchemaInfo = saveInfo;