peiyongz 2004/05/03 11:50:59 Modified: c/src/xercesc/internal IGXMLScanner2.cpp SGXMLScanner.cpp Log: To resolveGrammar correctly, patch from David Bertoni. Revision Changes Path 1.63 +15 -7 xml-xerces/c/src/xercesc/internal/IGXMLScanner2.cpp Index: IGXMLScanner2.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/IGXMLScanner2.cpp,v retrieving revision 1.62 retrieving revision 1.63 diff -u -r1.62 -r1.63 --- IGXMLScanner2.cpp 27 Apr 2004 19:17:52 -0000 1.62 +++ IGXMLScanner2.cpp 3 May 2004 18:50:59 -0000 1.63 @@ -78,21 +78,20 @@ #include <xercesc/framework/XMLPScanToken.hpp> #include <xercesc/framework/XMLRefInfo.hpp> #include <xercesc/framework/XMLGrammarPool.hpp> -#include <xercesc/framework/XMLDTDDescription.hpp> -#include <xercesc/framework/XMLSchemaDescription.hpp> #include <xercesc/framework/psvi/PSVIAttributeList.hpp> #include <xercesc/framework/psvi/PSVIElement.hpp> #include <xercesc/validators/common/ContentLeafNameTypeVector.hpp> #include <xercesc/validators/DTD/DTDGrammar.hpp> #include <xercesc/validators/DTD/DTDValidator.hpp> +#include <xercesc/validators/DTD/XMLDTDDescriptionImpl.hpp> #include <xercesc/validators/datatype/DatatypeValidator.hpp> +#include <xercesc/validators/schema/XMLSchemaDescriptionImpl.hpp> #include <xercesc/validators/schema/SchemaGrammar.hpp> #include <xercesc/validators/schema/SchemaValidator.hpp> #include <xercesc/validators/schema/TraverseSchema.hpp> #include <xercesc/validators/schema/SubstitutionGroupComparator.hpp> #include <xercesc/validators/schema/XSDDOMParser.hpp> #include <xercesc/validators/schema/identity/IdentityConstraintHandler.hpp> -#include <xercesc/util/XMLResourceIdentifier.hpp> XERCES_CPP_NAMESPACE_BEGIN @@ -1201,8 +1200,11 @@ fGrammarResolver->cacheGrammarFromParse(fToCacheGrammar); fGrammarResolver->useCachedGrammarInParse(fUseCachedGrammar); - fDTDGrammar = (DTDGrammar*) fGrammarResolver->getGrammar(XMLUni::fgDTDEntityString); - + { + XMLDTDDescriptionImpl theDTDDescription(XMLUni::fgDTDEntityString, fMemoryManager); + fDTDGrammar = (DTDGrammar*) fGrammarResolver->getGrammar(&theDTDDescription); + } + if (!fDTDGrammar) { fDTDGrammar = new (fGrammarPoolMemoryManager) DTDGrammar(fGrammarPoolMemoryManager); @@ -1693,7 +1695,13 @@ void IGXMLScanner::resolveSchemaGrammar(const XMLCh* const loc, const XMLCh* const uri) { - Grammar* grammar = fGrammarResolver->getGrammar(uri); + Grammar* grammar = 0; + + { + XMLSchemaDescriptionImpl theSchemaDescription(uri, fMemoryManager); + theSchemaDescription.setLocationHints(loc); + grammar = fGrammarResolver->getGrammar(&theSchemaDescription); + } if (!grammar || grammar->getGrammarType() == Grammar::DTDGrammarType) { XSDDOMParser parser(0, fMemoryManager, 0); 1.80 +9 -4 xml-xerces/c/src/xercesc/internal/SGXMLScanner.cpp Index: SGXMLScanner.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/SGXMLScanner.cpp,v retrieving revision 1.79 retrieving revision 1.80 diff -u -r1.79 -r1.80 --- SGXMLScanner.cpp 14 Apr 2004 21:33:57 -0000 1.79 +++ SGXMLScanner.cpp 3 May 2004 18:50:59 -0000 1.80 @@ -72,7 +72,6 @@ #include <xercesc/framework/XMLPScanToken.hpp> #include <xercesc/framework/MemoryManager.hpp> #include <xercesc/framework/XMLGrammarPool.hpp> -#include <xercesc/framework/XMLSchemaDescription.hpp> #include <xercesc/framework/psvi/PSVIHandler.hpp> #include <xercesc/framework/psvi/PSVIAttributeList.hpp> #include <xercesc/internal/EndOfEntityException.hpp> @@ -81,10 +80,10 @@ #include <xercesc/validators/schema/TraverseSchema.hpp> #include <xercesc/validators/schema/XSDDOMParser.hpp> #include <xercesc/validators/schema/SubstitutionGroupComparator.hpp> +#include <xercesc/validators/schema/XMLSchemaDescriptionImpl.hpp> #include <xercesc/validators/schema/identity/IdentityConstraintHandler.hpp> #include <xercesc/validators/schema/identity/IC_Selector.hpp> #include <xercesc/util/OutOfMemoryException.hpp> -#include <xercesc/util/XMLResourceIdentifier.hpp> #include <xercesc/util/HashPtr.hpp> XERCES_CPP_NAMESPACE_BEGIN @@ -3614,7 +3613,13 @@ void SGXMLScanner::resolveSchemaGrammar(const XMLCh* const loc, const XMLCh* const uri) { - Grammar* grammar = fGrammarResolver->getGrammar(uri); + Grammar* grammar = 0; + + { + XMLSchemaDescriptionImpl theSchemaDescription(uri, fMemoryManager); + theSchemaDescription.setLocationHints(loc); + grammar = fGrammarResolver->getGrammar(&theSchemaDescription); + } if (!grammar || grammar->getGrammarType() == Grammar::DTDGrammarType) { XSDDOMParser parser(0, fMemoryManager, 0);
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]