From f9550a2dadd68ecaffc4994172a3725c4821b996 Mon Sep 17 00:00:00 2001
From: Khaled Noaman <knoaman@apache.org>
Date: Tue, 14 Jan 2003 19:12:20 +0000
Subject: [PATCH] Make sure that the root element of XML Schema is
 <xsd:schema>.

git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@174625 13f79535-47bb-0310-9956-ffa450edef68
---
 src/xercesc/validators/schema/TraverseSchema.cpp | 15 +++++----------
 1 file changed, 5 insertions(+), 10 deletions(-)

diff --git a/src/xercesc/validators/schema/TraverseSchema.cpp b/src/xercesc/validators/schema/TraverseSchema.cpp
index a3bb35862..7b643347e 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;
-- 
GitLab