diff --git a/src/xercesc/internal/DGXMLScanner.cpp b/src/xercesc/internal/DGXMLScanner.cpp index d8bf17cf871fa9dc3fe2869ece6a473278581e7a..4856de95aca43e2ddd6457c73846c94a250ea51c 100644 --- a/src/xercesc/internal/DGXMLScanner.cpp +++ b/src/xercesc/internal/DGXMLScanner.cpp @@ -977,7 +977,8 @@ void DGXMLScanner::scanDocTypeDecl() XMLDTDDescription* gramDesc = fGrammarResolver->getGrammarPool()->createDTDDescription(XMLUni::fgDTDEntityString); fGrammarResolver->orphanGrammar(gramDesc); - fGrammarResolver->putGrammar(sysIdStr, fGrammar); + gramDesc->setRootName(sysIdStr); + fGrammarResolver->putGrammar(gramDesc, fGrammar); } // In order to make the processing work consistently, we have to @@ -1679,7 +1680,8 @@ Grammar* DGXMLScanner::loadDTDGrammar(const InputSource& src, fValidator->reset(); fDTDGrammar = fGrammarResolver->getGrammarPool()->createDTDGrammar(); - fGrammarResolver->putGrammar(XMLUni::fgDTDEntityString, fDTDGrammar); + XMLDTDDescription* gramDesc = fGrammarResolver->getGrammarPool()->createDTDDescription(XMLUni::fgDTDEntityString); + fGrammarResolver->putGrammar(gramDesc, fDTDGrammar); fGrammar = fDTDGrammar; fValidator->setGrammar(fGrammar); @@ -1702,7 +1704,8 @@ Grammar* DGXMLScanner::loadDTDGrammar(const InputSource& src, XMLDTDDescription* gramDesc = fGrammarResolver->getGrammarPool()->createDTDDescription(XMLUni::fgDTDEntityString); fGrammarResolver->orphanGrammar(gramDesc); - fGrammarResolver->putGrammar(sysIdStr, fGrammar); + gramDesc->setRootName(sysIdStr); + fGrammarResolver->putGrammar(gramDesc, fGrammar); } // Handle the creation of the XML reader object for this input source. @@ -2034,7 +2037,8 @@ void DGXMLScanner::scanReset(const InputSource& src) fGrammarResolver->useCachedGrammarInParse(fUseCachedGrammar); fDTDGrammar = fGrammarResolver->getGrammarPool()->createDTDGrammar(); - fGrammarResolver->putGrammar(XMLUni::fgDTDEntityString, fDTDGrammar); + XMLDTDDescription* gramDesc = fGrammarResolver->getGrammarPool()->createDTDDescription(XMLUni::fgDTDEntityString); + fGrammarResolver->putGrammar(gramDesc, fDTDGrammar); fGrammar = fDTDGrammar; fRootGrammar = 0; fValidator->setGrammar(fGrammar); diff --git a/src/xercesc/internal/IGXMLScanner.cpp b/src/xercesc/internal/IGXMLScanner.cpp index 407d125c3236aa86fc444f75001eaa9248b7f5ca..5d6812682c6dc38ea589af43ac3c28a50d516068 100644 --- a/src/xercesc/internal/IGXMLScanner.cpp +++ b/src/xercesc/internal/IGXMLScanner.cpp @@ -1383,7 +1383,8 @@ void IGXMLScanner::scanDocTypeDecl() XMLDTDDescription* gramDesc = fGrammarResolver->getGrammarPool()->createDTDDescription(XMLUni::fgDTDEntityString); fGrammarResolver->orphanGrammar(gramDesc); - fGrammarResolver->putGrammar(sysIdStr, fGrammar); + gramDesc->setRootName(sysIdStr); + fGrammarResolver->putGrammar(gramDesc, fGrammar); } // In order to make the processing work consistently, we have to @@ -2849,7 +2850,8 @@ Grammar* IGXMLScanner::loadDTDGrammar(const InputSource& src, } fDTDGrammar = fGrammarResolver->getGrammarPool()->createDTDGrammar(); - fGrammarResolver->putGrammar(XMLUni::fgDTDEntityString, fDTDGrammar); + XMLDTDDescription* gramDesc = fGrammarResolver->getGrammarPool()->createDTDDescription(XMLUni::fgDTDEntityString); + fGrammarResolver->putGrammar(gramDesc, fDTDGrammar); fGrammar = fDTDGrammar; fGrammarType = fGrammar->getGrammarType(); fValidator->setGrammar(fGrammar); @@ -2873,7 +2875,8 @@ Grammar* IGXMLScanner::loadDTDGrammar(const InputSource& src, XMLDTDDescription* gramDesc = fGrammarResolver->getGrammarPool()->createDTDDescription(XMLUni::fgDTDEntityString); fGrammarResolver->orphanGrammar(gramDesc); - fGrammarResolver->putGrammar(sysIdStr, fGrammar); + gramDesc->setRootName(sysIdStr); + fGrammarResolver->putGrammar(gramDesc, fGrammar); } // Handle the creation of the XML reader object for this input source. diff --git a/src/xercesc/internal/IGXMLScanner2.cpp b/src/xercesc/internal/IGXMLScanner2.cpp index ea921524ff060e6ef46bdde89dd30d8edb5a3a40..ea01a084ab0bd98a2170baaf81988383fbf45c93 100644 --- a/src/xercesc/internal/IGXMLScanner2.cpp +++ b/src/xercesc/internal/IGXMLScanner2.cpp @@ -78,6 +78,7 @@ #include <xercesc/framework/XMLPScanToken.hpp> #include <xercesc/framework/XMLRefInfo.hpp> #include <xercesc/framework/XMLGrammarPool.hpp> +#include <xercesc/framework/XMLDTDDescription.hpp> #include <xercesc/validators/common/ContentLeafNameTypeVector.hpp> #include <xercesc/validators/DTD/DTDGrammar.hpp> #include <xercesc/validators/DTD/DTDValidator.hpp> @@ -866,7 +867,8 @@ void IGXMLScanner::scanReset(const InputSource& src) fGrammarResolver->useCachedGrammarInParse(fUseCachedGrammar); fDTDGrammar = fGrammarResolver->getGrammarPool()->createDTDGrammar(); - fGrammarResolver->putGrammar(XMLUni::fgDTDEntityString, fDTDGrammar); + XMLDTDDescription* gramDesc = fGrammarResolver->getGrammarPool()->createDTDDescription(XMLUni::fgDTDEntityString); + fGrammarResolver->putGrammar(gramDesc, fDTDGrammar); fGrammar = fDTDGrammar; fGrammarType = fGrammar->getGrammarType(); fRootGrammar = 0;