diff --git a/src/xercesc/validators/schema/TraverseSchema.cpp b/src/xercesc/validators/schema/TraverseSchema.cpp index 299682ecbdcb26edcfeaa5fbd15c5689f5da4aab..a3bb358627a5ba772bbe2ab8e9afb932dac99904 100644 --- a/src/xercesc/validators/schema/TraverseSchema.cpp +++ b/src/xercesc/validators/schema/TraverseSchema.cpp @@ -578,6 +578,11 @@ 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;