diff --git a/src/xercesc/validators/schema/TraverseSchema.cpp b/src/xercesc/validators/schema/TraverseSchema.cpp
index c80b6911ed80c0620ddaa3fa4accbc04fe9f794f..90a3952efefad9d8ff324abd578897cb12166c06 100644
--- a/src/xercesc/validators/schema/TraverseSchema.cpp
+++ b/src/xercesc/validators/schema/TraverseSchema.cpp
@@ -4030,6 +4030,9 @@ void TraverseSchema::retrieveNamespaceMapping(const DOMElement* const schemaRoot
     if (!seenXMLNS && XMLString::stringLen(fTargetNSURIString) == 0 ) {
         fNamespaceScope->addPrefix(XMLUni::fgZeroLenString, fEmptyNamespaceURI);
     }
+
+    // Add mapping for xml prefix
+    fNamespaceScope->addPrefix(XMLUni::fgXMLString, fURIStringPool->addOrFind(XMLUni::fgXMLURIName));
 }
 
 void TraverseSchema::processChildren(const DOMElement* const root) {