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 #if !defined(ABSTRACTDOMPARSER_HPP)
00062 #define ABSTRACTDOMPARSER_HPP
00063
00064 #include <xercesc/dom/DOMDocument.hpp>
00065 #include <xercesc/framework/XMLDocumentHandler.hpp>
00066 #include <xercesc/framework/XMLErrorReporter.hpp>
00067 #include <xercesc/framework/XMLEntityHandler.hpp>
00068 #include <xercesc/util/SecurityManager.hpp>
00069 #include <xercesc/util/ValueStackOf.hpp>
00070 #include <xercesc/validators/DTD/DocTypeHandler.hpp>
00071 #include <xercesc/dom/DOMDocumentType.hpp>
00072 #include <xercesc/validators/DTD/DTDElementDecl.hpp>
00073 #include <xercesc/framework/XMLBufferMgr.hpp>
00074
00075
00076 XERCES_CPP_NAMESPACE_BEGIN
00077
00078 class XMLPScanToken;
00079 class XMLScanner;
00080 class XMLValidator;
00081 class DOMDocumentImpl;
00082 class DOMDocumentTypeImpl;
00083 class DOMElement;
00084 class GrammarResolver;
00085
00086
00091 class AbstractDOMParser :
00092
00093 public XMemory
00094 , public XMLDocumentHandler
00095 , public XMLErrorReporter
00096 , public XMLEntityHandler
00097 , public DocTypeHandler
00098 {
00099 public :
00100
00101
00102
00105
00113 enum ValSchemes
00114 {
00115 Val_Never
00116 , Val_Always
00117 , Val_Auto
00118 };
00120
00121
00122
00123
00124
00127
00131 virtual ~AbstractDOMParser();
00132
00134
00135
00136
00137
00138
00146 void reset();
00147
00161 DOMDocument* adoptDocument();
00162
00164
00165
00166
00167
00168
00169
00172
00184 DOMDocument* getDocument();
00185
00193 const XMLValidator& getValidator() const;
00194
00202 ValSchemes getValidationScheme() const;
00203
00214 bool getDoSchema() const;
00215
00226 bool getValidationSchemaFullChecking() const;
00227
00239 int getErrorCount() const;
00240
00251 bool getDoNamespaces() const;
00252
00265 bool getExitOnFirstFatalError() const;
00266
00277 bool getValidationConstraintFatal() const;
00278
00288 bool getCreateEntityReferenceNodes()const;
00289
00300 bool getIncludeIgnorableWhitespace() const;
00301
00321 XMLCh* getExternalSchemaLocation() const;
00322
00342 XMLCh* getExternalNoNamespaceSchemaLocation() const;
00343
00359 SecurityManager* getSecurityManager() const;
00360
00372 bool getLoadExternalDTD() const;
00373
00382 bool getCreateCommentNodes()const;
00383
00395 bool getCalculateSrcOfs() const;
00396
00407 bool getStandardUriConformant() const;
00408
00410
00411
00412
00413
00414
00415
00418
00433 void setDoNamespaces(const bool newState);
00434
00451 void setExitOnFirstFatalError(const bool newState);
00452
00472 void setValidationConstraintFatal(const bool newState);
00473
00492 void setCreateEntityReferenceNodes(const bool create);
00493
00515 void setIncludeIgnorableWhitespace(const bool include);
00516
00533 void setValidationScheme(const ValSchemes newScheme);
00534
00550 void setDoSchema(const bool newState);
00551
00568 void setValidationSchemaFullChecking(const bool schemaFullChecking);
00569
00590 void setExternalSchemaLocation(const XMLCh* const schemaLocation);
00591
00600 void setExternalSchemaLocation(const char* const schemaLocation);
00601
00616 void setExternalNoNamespaceSchemaLocation(const XMLCh* const noNamespaceSchemaLocation);
00617
00626 void setExternalNoNamespaceSchemaLocation(const char* const noNamespaceSchemaLocation);
00627
00643 void setSecurityManager(SecurityManager* const securityManager);
00644
00661 void setLoadExternalDTD(const bool newState);
00662
00673 void setCreateCommentNodes(const bool create);
00674
00687 void setCalculateSrcOfs(const bool newState);
00688
00699 void setStandardUriConformant(const bool newState);
00700
00708 void useScanner(const XMLCh* const scannerName);
00709
00711
00712
00713
00714
00715
00716
00719
00735 void parse(const InputSource& source);
00736
00753 void parse(const XMLCh* const systemId);
00754
00770 void parse(const char* const systemId);
00771
00798 bool parseFirst
00799 (
00800 const XMLCh* const systemId
00801 , XMLPScanToken& toFill
00802 );
00803
00831 bool parseFirst
00832 (
00833 const char* const systemId
00834 , XMLPScanToken& toFill
00835 );
00836
00864 bool parseFirst
00865 (
00866 const InputSource& source
00867 , XMLPScanToken& toFill
00868 );
00869
00892 bool parseNext(XMLPScanToken& token);
00893
00919 void parseReset(XMLPScanToken& token);
00920
00922
00923
00924
00925
00926
00929
00942 virtual void docCharacters
00943 (
00944 const XMLCh* const chars
00945 , const unsigned int length
00946 , const bool cdataSection
00947 );
00948
00957 virtual void docComment
00958 (
00959 const XMLCh* const comment
00960 );
00961
00974 virtual void docPI
00975 (
00976 const XMLCh* const target
00977 , const XMLCh* const data
00978 );
00979
00984 virtual void endDocument();
00985
01002 virtual void endElement
01003 (
01004 const XMLElementDecl& elemDecl
01005 , const unsigned int urlId
01006 , const bool isRoot
01007 , const XMLCh* const elemPrefix
01008 );
01009
01018 virtual void endEntityReference
01019 (
01020 const XMLEntityDecl& entDecl
01021 );
01022
01041 virtual void ignorableWhitespace
01042 (
01043 const XMLCh* const chars
01044 , const unsigned int length
01045 , const bool cdataSection
01046 );
01047
01054 virtual void resetDocument();
01055
01060 virtual void startDocument();
01061
01089 virtual void startElement
01090 (
01091 const XMLElementDecl& elemDecl
01092 , const unsigned int urlId
01093 , const XMLCh* const elemPrefix
01094 , const RefVectorOf<XMLAttr>& attrList
01095 , const unsigned int attrCount
01096 , const bool isEmpty
01097 , const bool isRoot
01098 );
01099
01109 virtual void startEntityReference
01110 (
01111 const XMLEntityDecl& entDecl
01112 );
01113
01132 virtual void XMLDecl
01133 (
01134 const XMLCh* const versionStr
01135 , const XMLCh* const encodingStr
01136 , const XMLCh* const standaloneStr
01137 , const XMLCh* const actualEncStr
01138 );
01140
01141
01142
01143
01144
01147 virtual void attDef
01148 (
01149 const DTDElementDecl& elemDecl
01150 , const DTDAttDef& attDef
01151 , const bool ignoring
01152 );
01153
01154 virtual void doctypeComment
01155 (
01156 const XMLCh* const comment
01157 );
01158
01159 virtual void doctypeDecl
01160 (
01161 const DTDElementDecl& elemDecl
01162 , const XMLCh* const publicId
01163 , const XMLCh* const systemId
01164 , const bool hasIntSubset
01165 , const bool hasExtSubset = false
01166 );
01167
01168 virtual void doctypePI
01169 (
01170 const XMLCh* const target
01171 , const XMLCh* const data
01172 );
01173
01174 virtual void doctypeWhitespace
01175 (
01176 const XMLCh* const chars
01177 , const unsigned int length
01178 );
01179
01180 virtual void elementDecl
01181 (
01182 const DTDElementDecl& decl
01183 , const bool isIgnored
01184 );
01185
01186 virtual void endAttList
01187 (
01188 const DTDElementDecl& elemDecl
01189 );
01190
01191 virtual void endIntSubset();
01192
01193 virtual void endExtSubset();
01194
01195 virtual void entityDecl
01196 (
01197 const DTDEntityDecl& entityDecl
01198 , const bool isPEDecl
01199 , const bool isIgnored
01200 );
01201
01202 virtual void resetDocType();
01203
01204 virtual void notationDecl
01205 (
01206 const XMLNotationDecl& notDecl
01207 , const bool isIgnored
01208 );
01209
01210 virtual void startAttList
01211 (
01212 const DTDElementDecl& elemDecl
01213 );
01214
01215 virtual void startIntSubset();
01216
01217 virtual void startExtSubset();
01218
01219 virtual void TextDecl
01220 (
01221 const XMLCh* const versionStr
01222 , const XMLCh* const encodingStr
01223 );
01224
01225
01227
01228
01229
01230
01231
01244 bool getDoValidation() const;
01245
01259 void setDoValidation(const bool newState);
01260
01274 bool getExpandEntityReferences() const;
01275
01292 void setExpandEntityReferences(const bool expand);
01293
01295
01296 protected :
01297
01298
01299
01311 AbstractDOMParser
01312 (
01313 XMLValidator* const valToAdopt = 0
01314 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
01315 );
01316
01318
01319
01320
01321
01329 DOMNode* getCurrentNode();
01330
01335 XMLScanner* getScanner() const;
01336
01341 GrammarResolver* getGrammarResolver() const;
01342
01348 bool getParseInProgress() const;
01349
01350 MemoryManager* getMemoryManager() const;
01351
01353
01354
01355
01356
01357
01358
01361
01369 void setCurrentNode(DOMNode* toSet);
01370
01377 void setDocument(DOMDocument* toSet);
01378
01385 void setParseInProgress(const bool toSet);
01387
01388
01389
01390
01393 virtual DOMElement* createElementNSNode(const XMLCh *fNamespaceURI,
01394 const XMLCh *qualifiedName);
01395
01396 void resetPool();
01397
01401 bool isDocumentAdopted() const;
01402
01404
01405
01406 private :
01407
01408
01409
01410 void initialize();
01411 void cleanUp();
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
01455
01456
01457
01458
01459
01460
01461
01462
01463
01464
01465
01466
01467
01468
01469
01470
01471
01472 bool fCreateEntityReferenceNodes;
01473 bool fIncludeIgnorableWhitespace;
01474 bool fWithinElement;
01475 bool fParseInProgress;
01476 bool fCreateCommentNodes;
01477 bool fDocumentAdoptedByUser;
01478 XMLScanner* fScanner;
01479 DOMNode* fCurrentParent;
01480 DOMNode* fCurrentNode;
01481 DOMEntity* fCurrentEntity;
01482 DOMDocumentImpl* fDocument;
01483 ValueStackOf<DOMNode*>* fNodeStack;
01484 DOMDocumentTypeImpl* fDocumentType;
01485 RefVectorOf<DOMDocumentImpl>* fDocumentVector;
01486 GrammarResolver* fGrammarResolver;
01487 XMLStringPool* fURIStringPool;
01488 XMLValidator* fValidator;
01489 MemoryManager* fMemoryManager;
01490 XMLBufferMgr fBufMgr;
01491 XMLBuffer& fInternalSubset;
01492 };
01493
01494
01495
01496
01497
01498
01499 inline bool AbstractDOMParser::getExpandEntityReferences() const
01500 {
01501 return !fCreateEntityReferenceNodes;
01502 }
01503 inline bool AbstractDOMParser::getCreateEntityReferenceNodes() const
01504 {
01505 return fCreateEntityReferenceNodes;
01506 }
01507
01508 inline bool AbstractDOMParser::getIncludeIgnorableWhitespace() const
01509 {
01510 return fIncludeIgnorableWhitespace;
01511 }
01512
01513 inline bool AbstractDOMParser::getParseInProgress() const
01514 {
01515 return fParseInProgress;
01516 }
01517
01518 inline XMLScanner* AbstractDOMParser::getScanner() const
01519 {
01520 return fScanner;
01521 }
01522
01523 inline GrammarResolver* AbstractDOMParser::getGrammarResolver() const
01524 {
01525 return fGrammarResolver;
01526 }
01527
01528 inline bool AbstractDOMParser::getCreateCommentNodes() const
01529 {
01530 return fCreateCommentNodes;
01531 }
01532
01533
01534
01535
01536 inline void AbstractDOMParser::setExpandEntityReferences(const bool expand)
01537 {
01538 fCreateEntityReferenceNodes = !expand;
01539 }
01540
01541 inline void AbstractDOMParser::setCreateEntityReferenceNodes(const bool create)
01542 {
01543 fCreateEntityReferenceNodes = create;
01544 }
01545
01546 inline void AbstractDOMParser::setIncludeIgnorableWhitespace(const bool include)
01547 {
01548 fIncludeIgnorableWhitespace = include;
01549 }
01550
01551 inline void AbstractDOMParser::setCreateCommentNodes(const bool create)
01552 {
01553 fCreateCommentNodes = create;
01554 }
01555
01556
01557
01558
01559
01560 inline DOMNode* AbstractDOMParser::getCurrentNode()
01561 {
01562 return fCurrentNode;
01563 }
01564
01565 inline MemoryManager* AbstractDOMParser::getMemoryManager() const
01566 {
01567 return fMemoryManager;
01568 }
01569
01570
01571
01572
01573 inline void AbstractDOMParser::setCurrentNode(DOMNode* toSet)
01574 {
01575 fCurrentNode = toSet;
01576 }
01577
01578 inline void AbstractDOMParser::setDocument(DOMDocument* toSet)
01579 {
01580 fDocument = (DOMDocumentImpl *)toSet;
01581 }
01582
01583 inline void AbstractDOMParser::setParseInProgress(const bool toSet)
01584 {
01585 fParseInProgress = toSet;
01586 }
01587
01588 XERCES_CPP_NAMESPACE_END
01589
01590 #endif
01591
01592
01593