00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148 #if !defined(SAX2XMLReaderImpl_HPP)
00149 #define SAX2XMLReaderImpl_HPP
00150
00151 #include <xercesc/parsers/SAXParser.hpp>
00152 #include <xercesc/sax/Parser.hpp>
00153 #include <xercesc/framework/XMLBuffer.hpp>
00154 #include <xercesc/internal/VecAttributesImpl.hpp>
00155 #include <xercesc/sax2/SAX2XMLReader.hpp>
00156 #include <xercesc/util/RefStackOf.hpp>
00157 #include <xercesc/util/ValueStackOf.hpp>
00158 #include <xercesc/framework/XMLBufferMgr.hpp>
00159
00160 class ContentHandler;
00161 class LexicalHandler;
00162 class DeclHandler;
00163
00179 class PARSERS_EXPORT SAX2XMLReaderImpl :
00180 public SAX2XMLReader
00181
00182 , public XMLDocumentHandler
00183 , public XMLErrorReporter
00184 , public XMLEntityHandler
00185 , public DocTypeHandler
00186 {
00187 public :
00188
00189 SAX2XMLReaderImpl() ;
00190 ~SAX2XMLReaderImpl() ;
00191
00192
00193
00194
00195
00213 virtual void docCharacters
00214 (
00215 const XMLCh* const chars
00216 , const unsigned int length
00217 , const bool cdataSection
00218 );
00219
00229 virtual void docComment
00230 (
00231 const XMLCh* const comment
00232 );
00233
00253 virtual void docPI
00254 (
00255 const XMLCh* const target
00256 , const XMLCh* const data
00257 );
00258
00270 virtual void endDocument();
00271
00288 virtual void endElement
00289 (
00290 const XMLElementDecl& elemDecl
00291 , const unsigned int urlId
00292 , const bool isRoot
00293 );
00294
00305 virtual void endEntityReference
00306 (
00307 const XMLEntityDecl& entDecl
00308 );
00309
00329 virtual void ignorableWhitespace
00330 (
00331 const XMLCh* const chars
00332 , const unsigned int length
00333 , const bool cdataSection
00334 );
00335
00340 virtual void resetDocument();
00341
00352 virtual void startDocument();
00353
00380 virtual void startElement
00381 (
00382 const XMLElementDecl& elemDecl
00383 , const unsigned int urlId
00384 , const XMLCh* const elemPrefix
00385 , const RefVectorOf<XMLAttr>& attrList
00386 , const unsigned int attrCount
00387 , const bool isEmpty
00388 , const bool isRoot
00389 );
00390
00400 virtual void startEntityReference
00401 (
00402 const XMLEntityDecl& entDecl
00403 );
00404
00422 virtual void XMLDecl
00423 (
00424 const XMLCh* const versionStr
00425 , const XMLCh* const encodingStr
00426 , const XMLCh* const standaloneStr
00427 , const XMLCh* const actualEncodingStr
00428 );
00430
00431
00432
00433
00434
00437
00448 virtual int getErrorCount() const;
00449
00455 virtual ContentHandler* getContentHandler() const;
00456
00462 virtual DTDHandler* getDTDHandler() const ;
00463
00469 virtual EntityResolver* getEntityResolver() const ;
00470
00476 virtual ErrorHandler* getErrorHandler() const ;
00477
00483 virtual LexicalHandler* getLexicalHandler() const ;
00484
00490 virtual DeclHandler* getDeclarationHandler() const ;
00491
00501 virtual bool getExitOnFirstFatalError() const;
00502
00513 virtual bool getValidationConstraintFatal() const;
00514
00524 virtual void parse(const InputSource& source);
00525
00533 virtual void parse(const XMLCh* const systemId);
00534
00542 virtual void parse(const char* const systemId);
00543
00552 virtual void setContentHandler(ContentHandler* const handler);
00553
00569 virtual void setDTDHandler(DTDHandler* const handler) ;
00570
00587 virtual void setEntityResolver(EntityResolver* const resolver) ;
00588
00606 virtual void setErrorHandler(ErrorHandler* const handler) ;
00607
00624 virtual void setLexicalHandler(LexicalHandler* const handler) ;
00625
00642 virtual void setDeclarationHandler(DeclHandler* const handler);
00643
00659 virtual void setExitOnFirstFatalError(const bool newState);
00660
00676 virtual void setValidationConstraintFatal(const bool newState);
00677
00698 virtual void setFeature(const XMLCh* const name, const bool value);
00699
00707 virtual bool getFeature(const XMLCh* const name) const;
00708
00732 virtual void setProperty(const XMLCh* const name, void* value);
00733
00753 virtual void* getProperty(const XMLCh* const name) const;
00755
00756
00757
00758
00759
00785 virtual void error
00786 (
00787 const unsigned int errCode
00788 , const XMLCh* const msgDomain
00789 , const XMLErrorReporter::ErrTypes errType
00790 , const XMLCh* const errorText
00791 , const XMLCh* const systemId
00792 , const XMLCh* const publicId
00793 , const unsigned int lineNum
00794 , const unsigned int colNum
00795 );
00796
00805 virtual void resetErrors();
00807
00808
00809
00810
00811
00812
00826 virtual void endInputSource(const InputSource& inputSource);
00827
00842 virtual bool expandSystemId
00843 (
00844 const XMLCh* const systemId
00845 , XMLBuffer& toFill
00846 );
00847
00855 virtual void resetEntities();
00856
00871 virtual InputSource* resolveEntity
00872 (
00873 const XMLCh* const publicId
00874 , const XMLCh* const systemId
00875 );
00876
00888 virtual void startInputSource(const InputSource& inputSource);
00890
00891
00892
00893
00894
00911 virtual void attDef
00912 (
00913 const DTDElementDecl& elemDecl
00914 , const DTDAttDef& attDef
00915 , const bool ignoring
00916 );
00917
00927 virtual void doctypeComment
00928 (
00929 const XMLCh* const comment
00930 );
00931
00948 virtual void doctypeDecl
00949 (
00950 const DTDElementDecl& elemDecl
00951 , const XMLCh* const publicId
00952 , const XMLCh* const systemId
00953 , const bool hasIntSubset
00954 );
00955
00969 virtual void doctypePI
00970 (
00971 const XMLCh* const target
00972 , const XMLCh* const data
00973 );
00974
00986 virtual void doctypeWhitespace
00987 (
00988 const XMLCh* const chars
00989 , const unsigned int length
00990 );
00991
01004 virtual void elementDecl
01005 (
01006 const DTDElementDecl& decl
01007 , const bool isIgnored
01008 );
01009
01020 virtual void endAttList
01021 (
01022 const DTDElementDecl& elemDecl
01023 );
01024
01031 virtual void endIntSubset();
01032
01039 virtual void endExtSubset();
01040
01055 virtual void entityDecl
01056 (
01057 const DTDEntityDecl& entityDecl
01058 , const bool isPEDecl
01059 , const bool isIgnored
01060 );
01061
01066 virtual void resetDocType();
01067
01080 virtual void notationDecl
01081 (
01082 const XMLNotationDecl& notDecl
01083 , const bool isIgnored
01084 );
01085
01096 virtual void startAttList
01097 (
01098 const DTDElementDecl& elemDecl
01099 );
01100
01107 virtual void startIntSubset();
01108
01115 virtual void startExtSubset();
01116
01129 virtual void TextDecl
01130 (
01131 const XMLCh* const versionStr
01132 , const XMLCh* const encodingStr
01133 );
01135
01136
01137
01138
01150 virtual void setValidator(XMLValidator* valueToAdopt);
01151
01162 virtual XMLValidator* getValidator() const;
01164
01165
01166
01167
01168
01184 virtual void installAdvDocHandler(XMLDocumentHandler* const toInstall);
01185
01195 virtual bool removeAdvDocHandler(XMLDocumentHandler* const toRemove);
01197
01198
01199
01200
01201
01204
01235 virtual bool parseFirst
01236 (
01237 const XMLCh* const systemId
01238 , XMLPScanToken& toFill
01239 , const bool reuseGrammar = false
01240 );
01241
01272 virtual bool parseFirst
01273 (
01274 const char* const systemId
01275 , XMLPScanToken& toFill
01276 , const bool reuseGrammar = false
01277 );
01278
01309 virtual bool parseFirst
01310 (
01311 const InputSource& source
01312 , XMLPScanToken& toFill
01313 , const bool reuseGrammar = false
01314 );
01315
01340 virtual bool parseNext(XMLPScanToken& token);
01341
01363 virtual void parseReset(XMLPScanToken& token);
01364
01366
01367 private :
01368
01369
01370
01371 SAX2XMLReaderImpl(const SAX2XMLReaderImpl&);
01372 void operator=(const SAX2XMLReaderImpl&);
01373
01374
01375
01376
01377
01378
01379
01380
01381
01382
01383
01384
01385
01386
01387
01388
01389
01390
01391
01392
01393
01394
01395
01396
01397
01398
01399
01400
01401
01402
01403
01404
01405
01406
01407
01408
01409
01410
01411
01412
01413
01414
01415
01416
01417
01418
01419
01420
01421
01422
01423
01424
01425
01426
01427
01428
01429
01430
01431
01432
01433
01434
01435
01436
01437
01438
01439
01440
01441
01442
01443
01444
01445
01446
01447
01448
01449
01450
01451
01452
01453
01454 VecAttributesImpl fAttrList ;
01455 ContentHandler* fDocHandler ;
01456 RefVectorOf<XMLAttr>* tempAttrVec ;
01457
01458 bool fnamespacePrefix;
01459 bool fautoValidation;
01460 bool fValidation;
01461 bool fReuseGrammar;
01462
01463 XMLBufferMgr fStringBuffers ;
01464 RefStackOf<XMLBuffer> * fPrefixes ;
01465 ValueStackOf<unsigned int> * prefixCounts ;
01466
01467 DTDHandler* fDTDHandler;
01468 unsigned int fElemDepth;
01469 EntityResolver* fEntityResolver;
01470 ErrorHandler* fErrorHandler;
01471 LexicalHandler* fLexicalHandler;
01472 DeclHandler* fDeclHandler;
01473 unsigned int fAdvDHCount;
01474 XMLDocumentHandler** fAdvDHList;
01475 unsigned int fAdvDHListSize;
01476 bool fParseInProgress;
01477 XMLScanner* fScanner;
01478 bool fHasExternalSubset;
01479
01480
01481
01482
01483 void setValidationScheme(const ValSchemes newScheme);
01484 void setDoNamespaces(const bool newState);
01485 bool getDoNamespaces() const;
01486 void setDoSchema(const bool newState);
01487 bool getDoSchema() const;
01488
01489 };
01490
01491
01492
01493
01494
01495 inline ContentHandler* SAX2XMLReaderImpl::getContentHandler() const
01496 {
01497 return fDocHandler;
01498 }
01499
01500 inline DTDHandler* SAX2XMLReaderImpl::getDTDHandler() const
01501 {
01502 return fDTDHandler ;
01503 }
01504
01505 inline EntityResolver* SAX2XMLReaderImpl::getEntityResolver() const
01506 {
01507 return fEntityResolver;
01508 }
01509
01510 inline ErrorHandler* SAX2XMLReaderImpl::getErrorHandler() const
01511 {
01512 return fErrorHandler;
01513 }
01514
01515 inline LexicalHandler* SAX2XMLReaderImpl::getLexicalHandler() const
01516 {
01517 return fLexicalHandler;
01518 }
01519
01520 inline DeclHandler* SAX2XMLReaderImpl::getDeclarationHandler() const
01521 {
01522 return fDeclHandler;
01523 }
01524
01525 inline bool SAX2XMLReaderImpl::getExitOnFirstFatalError() const
01526 {
01527 return fScanner->getExitOnFirstFatal();
01528 }
01529
01530 inline bool SAX2XMLReaderImpl::getValidationConstraintFatal() const
01531 {
01532 return fScanner->getValidationConstraintFatal();
01533 }
01534
01535 #endif