diff --git a/src/xercesc/dom/deprecated/DOMParser.cpp b/src/xercesc/dom/deprecated/DOMParser.cpp index 83dc48e10aee49729f8d9a3b8b019aa74bd2e9b6..c2da4884aafe304d5844251ee18a0b09a1b634b9 100644 --- a/src/xercesc/dom/deprecated/DOMParser.cpp +++ b/src/xercesc/dom/deprecated/DOMParser.cpp @@ -383,11 +383,11 @@ void DOMParser::useScanner(const XMLCh* const scannerName) if (tempScanner) { - // REVISIT: need to set scanner options and handlers + tempScanner->setParseSettings(fScanner); + tempScanner->setGrammarResolver(fGrammarResolver); + tempScanner->setURIStringPool(fURIStringPool); delete fScanner; fScanner = tempScanner; - fScanner->setGrammarResolver(fGrammarResolver); - fScanner->setURIStringPool(fURIStringPool); } } diff --git a/src/xercesc/internal/XMLScanner.cpp b/src/xercesc/internal/XMLScanner.cpp index 54296478b4a7d9da79b8db7e779c876993e54221..fa1ba381fb2b67a149cda629221e74a25c685ebe 100644 --- a/src/xercesc/internal/XMLScanner.cpp +++ b/src/xercesc/internal/XMLScanner.cpp @@ -540,7 +540,26 @@ void XMLScanner::scanReset(XMLPScanToken& token) fErrorCount = 0; } - +void XMLScanner::setParseSettings(XMLScanner* const refScanner) +{ + setDocHandler(refScanner->getDocHandler()); + setDocTypeHandler(refScanner->getDocTypeHandler()); + setErrorHandler(refScanner->getErrorHandler()); + setErrorReporter(refScanner->getErrorReporter()); + setEntityHandler(refScanner->getEntityHandler()); + setDoNamespaces(refScanner->getDoNamespaces()); + setDoSchema(refScanner->getDoSchema()); + setCalculateSrcOfs(refScanner->getCalculateSrcOfs()); + setExitOnFirstFatal(refScanner->getExitOnFirstFatal()); + setValidationConstraintFatal(refScanner->getValidationConstraintFatal()); + setValidationSchemaFullChecking(refScanner->getValidationSchemaFullChecking()); + cacheGrammarFromParse(refScanner->isCachingGrammarFromParse()); + useCachedGrammarInParse(refScanner->isUsingCachedGrammarInParse()); + setLoadExternalDTD(refScanner->getLoadExternalDTD()); + setNormalizeData(refScanner->getNormalizeData()); + setExternalSchemaLocation(refScanner->getExternalSchemaLocation()); + setExternalNoNamespaceSchemaLocation(refScanner->getExternalNoNamespaceSchemaLocation()); +} // --------------------------------------------------------------------------- // XMLScanner: Private helper methods. diff --git a/src/xercesc/internal/XMLScanner.hpp b/src/xercesc/internal/XMLScanner.hpp index 7a9be63ea39542fd140a8a1ea691a009e16d3395..a599fc70239c8c11db31dd7a0a1c066a7f0ad218 100644 --- a/src/xercesc/internal/XMLScanner.hpp +++ b/src/xercesc/internal/XMLScanner.hpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.15 2002/12/27 16:16:51 knoaman + * Set scanner options and handlers. + * * Revision 1.14 2002/12/20 22:09:56 tng * XML 1.1 * @@ -408,6 +411,8 @@ public : XMLEntityHandler* getEntityHandler(); const XMLErrorReporter* getErrorReporter() const; XMLErrorReporter* getErrorReporter(); + const ErrorHandler* getErrorHandler() const; + ErrorHandler* getErrorHandler(); bool getExitOnFirstFatal() const; bool getValidationConstraintFatal() const; RefHashTableOf<XMLRefInfo>* getIDRefList(); @@ -527,6 +532,7 @@ public : void setLoadExternalDTD(const bool loadDTD); void setNormalizeData(const bool normalizeData); void setCalculateSrcOfs(const bool newValue); + void setParseSettings(XMLScanner* const refScanner); // ----------------------------------------------------------------------- // Mutator methods @@ -577,7 +583,7 @@ public : // ----------------------------------------------------------------------- // Grammar preparsing methods - // ----------------------------------------------------------------------- + // ----------------------------------------------------------------------- Grammar* loadGrammar ( const XMLCh* const systemId @@ -934,6 +940,16 @@ inline XMLErrorReporter* XMLScanner::getErrorReporter() return fErrorReporter; } +inline const ErrorHandler* XMLScanner::getErrorHandler() const +{ + return fErrorHandler; +} + +inline ErrorHandler* XMLScanner::getErrorHandler() +{ + return fErrorHandler; +} + inline bool XMLScanner::getExitOnFirstFatal() const { return fExitOnFirstFatal; diff --git a/src/xercesc/parsers/AbstractDOMParser.cpp b/src/xercesc/parsers/AbstractDOMParser.cpp index 952afb877a5dd7a4b3e9e825de755e6d173fea35..b0e65e9b320b1c9e04605291d9c7fe61af0450e8 100644 --- a/src/xercesc/parsers/AbstractDOMParser.cpp +++ b/src/xercesc/parsers/AbstractDOMParser.cpp @@ -378,13 +378,11 @@ void AbstractDOMParser::useScanner(const XMLCh* const scannerName) if (tempScanner) { - // REVISIT: need to set scanner options and handlers + tempScanner->setParseSettings(fScanner); + tempScanner->setGrammarResolver(fGrammarResolver); + tempScanner->setURIStringPool(fURIStringPool); delete fScanner; fScanner = tempScanner; - fScanner->setDocHandler(this); - fScanner->setDocTypeHandler(this); - fScanner->setGrammarResolver(fGrammarResolver); - fScanner->setURIStringPool(fURIStringPool); } } diff --git a/src/xercesc/parsers/SAX2XMLReaderImpl.cpp b/src/xercesc/parsers/SAX2XMLReaderImpl.cpp index af7f51e9a47f766063d462cfc74d102e422d5052..3a7db573b7e83719e087981659e7718995a82e42 100644 --- a/src/xercesc/parsers/SAX2XMLReaderImpl.cpp +++ b/src/xercesc/parsers/SAX2XMLReaderImpl.cpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.15 2002/12/27 16:16:51 knoaman + * Set scanner options and handlers. + * * Revision 1.14 2002/12/11 22:14:54 knoaman * Performance: no need to use temporary buffer to hold namespace value. * @@ -1488,7 +1491,7 @@ void SAX2XMLReaderImpl::setProperty(const XMLCh* const name, void* value) if (tempScanner) { - // REVISIT: set scanner options and handlers + tempScanner->setParseSettings(fScanner); tempScanner->setGrammarResolver(fGrammarResolver); tempScanner->setURIStringPool(fURIStringPool); delete fScanner; diff --git a/src/xercesc/parsers/SAXParser.cpp b/src/xercesc/parsers/SAXParser.cpp index 5fd825e41c2c724d70e5a841cc33e106f784cc23..686378f1f57323c06dbff4db1128063bee4e922c 100644 --- a/src/xercesc/parsers/SAXParser.cpp +++ b/src/xercesc/parsers/SAXParser.cpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.12 2002/12/27 16:16:51 knoaman + * Set scanner options and handlers. + * * Revision 1.11 2002/12/23 15:23:18 knoaman * Added a public api to various parsers to return the src offset within the input * source. @@ -553,11 +556,11 @@ void SAXParser::useScanner(const XMLCh* const scannerName) if (tempScanner) { - // REVISIT: need to set scanner options and handlers + tempScanner->setParseSettings(fScanner); + tempScanner->setGrammarResolver(fGrammarResolver); + tempScanner->setURIStringPool(fURIStringPool); delete fScanner; fScanner = tempScanner; - fScanner->setGrammarResolver(fGrammarResolver); - fScanner->setURIStringPool(fURIStringPool); } }