You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by pe...@apache.org on 2004/05/03 20:50:59 UTC

cvs commit: xml-xerces/c/src/xercesc/internal IGXMLScanner2.cpp SGXMLScanner.cpp

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: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org