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
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202 #if !defined(XMLSCANNER_HPP)
00203 #define XMLSCANNER_HPP
00204
00205 #include <xercesc/util/KVStringPair.hpp>
00206 #include <xercesc/util/RefVectorOf.hpp>
00207 #include <xercesc/util/XMLString.hpp>
00208 #include <xercesc/framework/XMLAttr.hpp>
00209 #include <xercesc/framework/XMLBufferMgr.hpp>
00210 #include <xercesc/framework/XMLErrorCodes.hpp>
00211 #include <xercesc/framework/XMLRefInfo.hpp>
00212 #include <xercesc/framework/XMLPScanToken.hpp>
00213 #include <xercesc/internal/ElemStack.hpp>
00214 #include <xercesc/internal/ReaderMgr.hpp>
00215 #include <xercesc/validators/DTD/DTDEntityDecl.hpp>
00216 #include <xercesc/validators/DTD/DTDValidator.hpp>
00217 #include <xercesc/validators/schema/SchemaValidator.hpp>
00218
00219 class InputSource;
00220 class XMLDocumentHandler;
00221 class DocTypeHandler;
00222 class XMLElementDecl;
00223 class XMLEntityHandler;
00224 class EntityResolver;
00225 class XMLErrorReporter;
00226 class ErrorHandler;
00227 class XMLMsgLoader;
00228 class XMLValidator;
00229 class ValueStoreCache;
00230 class XPathMatcherStack;
00231 class FieldActivator;
00232 class IdentityConstraint;
00233
00234
00235
00236
00237
00238
00239 class XMLPARSER_EXPORT XMLScanner
00240 {
00241 public :
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265 enum DeclTypes
00266 {
00267 Decl_Text
00268 , Decl_XML
00269 };
00270
00271 enum EntityExpRes
00272 {
00273 EntityExp_Pushed
00274 , EntityExp_Returned
00275 , EntityExp_Failed
00276 };
00277
00278 enum XMLTokens
00279 {
00280 Token_CData
00281 , Token_CharData
00282 , Token_Comment
00283 , Token_EndTag
00284 , Token_EOF
00285 , Token_PI
00286 , Token_StartTag
00287 , Token_Unknown
00288 };
00289
00290 enum ValSchemes
00291 {
00292 Val_Never
00293 , Val_Always
00294 , Val_Auto
00295 };
00296
00297
00298
00299
00300
00301 XMLScanner
00302 (
00303 XMLValidator* const valToAdopt
00304 );
00305 XMLScanner
00306 (
00307 XMLDocumentHandler* const docHandler
00308 , DocTypeHandler* const docTypeHandler
00309 , XMLEntityHandler* const entityHandler
00310 , XMLErrorReporter* const errReporter
00311 , XMLValidator* const valToAdopt
00312 );
00313 ~XMLScanner();
00314
00315
00316
00317
00318
00319 void emitError(const XMLErrs::Codes toEmit);
00320 void emitError
00321 (
00322 const XMLErrs::Codes toEmit
00323 , const XMLCh* const text1
00324 , const XMLCh* const text2 = 0
00325 , const XMLCh* const text3 = 0
00326 , const XMLCh* const text4 = 0
00327 );
00328 void emitError
00329 (
00330 const XMLErrs::Codes toEmit
00331 , const char* const text1
00332 , const char* const text2 = 0
00333 , const char* const text3 = 0
00334 , const char* const text4 = 0
00335 );
00336
00337
00338
00339
00340
00341 const XMLDocumentHandler* getDocHandler() const;
00342 XMLDocumentHandler* getDocHandler();
00343 const DocTypeHandler* getDocTypeHandler() const;
00344 DocTypeHandler* getDocTypeHandler();
00345 bool getDoNamespaces() const;
00346 ValSchemes getValidationScheme() const;
00347 bool getDoSchema() const;
00348 bool getValidationSchemaFullChecking() const;
00349 const XMLEntityHandler* getEntityHandler() const;
00350 XMLEntityHandler* getEntityHandler();
00351 const XMLErrorReporter* getErrorReporter() const;
00352 XMLErrorReporter* getErrorReporter();
00353 bool getExitOnFirstFatal() const;
00354 bool getValidationConstraintFatal() const;
00355 RefHashTableOf<XMLRefInfo>* getIDRefList();
00356 const RefHashTableOf<XMLRefInfo>* getIDRefList() const;
00357 bool getInException() const;
00358 bool getLastExtLocation
00359 (
00360 XMLCh* const sysIdToFill
00361 , const unsigned int maxSysIdChars
00362 , XMLCh* const pubIdToFill
00363 , const unsigned int maxPubIdChars
00364 , unsigned int& lineToFill
00365 , unsigned int& colToFill
00366 );
00367 const Locator* getLocator() const;
00368 unsigned int getSrcOffset() const;
00369 bool getStandalone() const;
00370 const XMLValidator* getValidator() const;
00371 XMLValidator* getValidator();
00372 int getErrorCount();
00373 const DTDEntityDecl* getEntityDecl
00374 (
00375 const XMLCh* const entName
00376 ) const;
00377
00378 DTDEntityDecl* getEntityDecl
00379 (
00380 const XMLCh* const entName
00381 );
00382 NameIdPoolEnumerator<DTDEntityDecl> getEntityEnumerator() const;
00383 NameIdPool<DTDEntityDecl>* getEntityDeclPool();
00384 const NameIdPool<DTDEntityDecl>* getEntityDeclPool() const;
00385 const XMLStringPool* getURIStringPool() const;
00386 XMLStringPool* getURIStringPool();
00387 bool getHasNoDTD() const;
00388 XMLCh* getExternalSchemaLocation() const;
00389 XMLCh* getExternalNoNamespaceSchemaLocation() const;
00390 bool getURLEntityCaching() const;
00391 XMLCh* getURLEntityCacheDir() const;
00392
00393
00394
00395
00396
00405 unsigned int getEmptyNamespaceId() const;
00406
00416 unsigned int getUnknownNamespaceId() const;
00417
00425 unsigned int getXMLNamespaceId() const;
00426
00434 unsigned int getXMLNSNamespaceId() const;
00435
00440 bool getURIText
00441 (
00442 const unsigned int uriId
00443 , XMLBuffer& uriBufToFill
00444 ) const;
00445
00446 const XMLCh* getURIText(const unsigned int uriId) const;
00447
00455 unsigned int resolveQName
00456 (
00457 const XMLCh* const qName
00458 , XMLBuffer& nameBufToFill
00459 , XMLBuffer& prefixBufToFill
00460 , const ElemStack::MapModes mode
00461 );
00462
00463
00464 bool isValidatorFromUser();
00465
00466
00467
00468
00469
00470 void setDocHandler(XMLDocumentHandler* const docHandler);
00471 void setDocTypeHandler(DocTypeHandler* const docTypeHandler);
00472 void setDoNamespaces(const bool doNamespaces);
00473 void setEntityHandler(XMLEntityHandler* const docTypeHandler);
00474 void setEntityResolver(EntityResolver* const handler);
00475 void setErrorReporter(XMLErrorReporter* const errHandler);
00476 void setErrorHandler(ErrorHandler* const handler);
00477 void setExitOnFirstFatal(const bool newValue);
00478 void setValidationConstraintFatal(const bool newValue);
00479 void setValidationScheme(const ValSchemes newScheme);
00480 void setValidator(XMLValidator* const valToAdopt);
00481 void setDoSchema(const bool doSchema);
00482 void setValidationSchemaFullChecking(const bool schemaFullChecking);
00483 void setHasNoDTD(const bool hasNoDTD);
00484 void setRootElemName(XMLCh* rootElemName);
00485 void setExternalSchemaLocation(const XMLCh* const schemaLocation);
00486 void setExternalNoNamespaceSchemaLocation(const XMLCh* const noNamespaceSchemaLocation);
00487 void setExternalSchemaLocation(const char* const schemaLocation);
00488 void setExternalNoNamespaceSchemaLocation(const char* const noNamespaceSchemaLocation);
00489 void setURLEntityCaching(const bool useCache);
00490 void setURLEntityCacheDir(const XMLCh* const cacheDir);
00491 void setURLEntityCacheDir(const char* const cacheDir);
00492 void setURLSetByAPI(const bool setByAPI);
00493
00494
00495
00496
00497 void incrementErrorCount(void);
00498
00499
00500
00501
00502
00503 bool getDoValidation() const;
00504 void setDoValidation(const bool validate, const bool setValScheme = true);
00505
00506
00507
00508
00509
00510
00511 void checkEnvForCaching();
00512
00513
00514
00515
00516
00517
00518
00519 void scanDocument
00520 (
00521 const InputSource& src
00522 , const bool reuseGrammar = false
00523 );
00524 void scanDocument
00525 (
00526 const XMLCh* const systemId
00527 , const bool reuseGrammar = false
00528 );
00529 void scanDocument
00530 (
00531 const char* const systemId
00532 , const bool reuseGrammar = false
00533 );
00534
00535 bool scanFirst
00536 (
00537 const InputSource& src
00538 , XMLPScanToken& toFill
00539 , const bool reuseGrammar = false
00540 );
00541 bool scanFirst
00542 (
00543 const XMLCh* const systemId
00544 , XMLPScanToken& toFill
00545 , const bool reuseGrammar = false
00546 );
00547 bool scanFirst
00548 (
00549 const char* const systemId
00550 , XMLPScanToken& toFill
00551 , const bool reuseGrammar = false
00552 );
00553
00554 bool scanNext(XMLPScanToken& toFill);
00555
00556 void scanReset(XMLPScanToken& toFill);
00557
00558 bool checkXMLDecl(bool startWithAngle);
00559
00560
00561
00562
00563 static void reinitScannerMutex();
00564
00565 static void reinitMsgLoader();
00566
00567 private :
00568
00569
00570
00571 XMLScanner();
00572 XMLScanner(const XMLScanner&);
00573 void operator=(const XMLScanner&);
00574
00575
00576
00577
00578
00579 void commonInit();
00580 void initValidator(XMLValidator* theValidator);
00581 void resetEntityDeclPool();
00582 void resetURIStringPool();
00583
00584
00585
00586
00587
00588
00589
00590
00591 unsigned int buildAttList
00592 (
00593 const RefVectorOf<KVStringPair>& providedAttrs
00594 , const unsigned int attCount
00595 , XMLElementDecl* elemDecl
00596 , RefVectorOf<XMLAttr>& toFill
00597 );
00598 void checkIDRefs();
00599 bool isLegalToken(const XMLPScanToken& toCheck);
00600 bool normalizeAttValue
00601 (
00602 const XMLAttDef* const attDef
00603 , const XMLCh* const value
00604 , XMLBuffer& toFill
00605 );
00606 bool normalizeAttRawValue
00607 (
00608 const XMLCh* const attrName
00609 , const XMLCh* const value
00610 , XMLBuffer& toFill
00611 );
00612
00613 unsigned int resolvePrefix
00614 (
00615 const XMLCh* const prefix
00616 , const ElemStack::MapModes mode
00617 );
00618 unsigned int resolvePrefix
00619 (
00620 const XMLCh* const prefix
00621 , XMLBuffer& uriBufToFill
00622 , const ElemStack::MapModes mode
00623 );
00624 void scanReset(const InputSource& src);
00625 void sendCharData(XMLBuffer& toSend);
00626 XMLTokens senseNextToken(unsigned int& orgReader);
00627 void updateNSMap
00628 (
00629 const XMLCh* const attrName
00630 , const XMLCh* const attrValue
00631 );
00632 void scanRawAttrListforNameSpaces(const RefVectorOf<KVStringPair>* theRawAttrList, int attCount);
00633 void parseSchemaLocation(const XMLCh* const schemaLocationStr);
00634 void resolveSchemaGrammar(const XMLCh* const loc, const XMLCh* const uri);
00635 bool switchGrammar(unsigned int newGrammarNameSpaceIndex);
00636 bool switchGrammar(const XMLCh* const newGrammarNameSpace);
00637 bool laxElementValidation(QName* element, ContentLeafNameTypeVector* cv,
00638 const XMLContentModel* const cm,
00639 const unsigned int parentElemDepth);
00640 bool anyAttributeValidation(SchemaAttDef* attWildCard,
00641 unsigned int uriId,
00642 bool& skipThisOne,
00643 bool& laxThisOne);
00644
00645
00646
00647
00648 bool basicAttrValueScan
00649 (
00650 const XMLCh* const attrName
00651 , XMLBuffer& toFill
00652 );
00653 bool getQuotedString(XMLBuffer& toFill);
00654 unsigned int rawAttrScan
00655 (
00656 const XMLCh* const elemName
00657 , RefVectorOf<KVStringPair>& toFill
00658 , bool& isEmpty
00659 );
00660 bool scanAttValue
00661 (
00662 const XMLAttDef* const attDef
00663 , XMLBuffer& toFill
00664 );
00665 void scanCDSection();
00666 void scanCharData(XMLBuffer& toToUse);
00667 bool scanCharRef(XMLCh& toFill, XMLCh& second);
00668 void scanComment();
00669 bool scanContent(const bool extEntity);
00670 void scanEndTag(bool& gotData);
00671 EntityExpRes scanEntityRef
00672 (
00673 const bool inAttVal
00674 , XMLCh& firstCh
00675 , XMLCh& secondCh
00676 , bool& escaped
00677 );
00678 bool scanEq();
00679 void scanMiscellaneous();
00680 void scanPI();
00681 void scanProlog();
00682 bool scanStartTag(bool& gotData);
00683 bool scanStartTagNS(bool& gotData);
00684 void scanXMLDecl(const DeclTypes type);
00685 unsigned int scanUpToWSOr
00686 (
00687 XMLBuffer& toFill
00688 , const XMLCh chEndChar
00689 );
00690
00691
00692
00693
00694 void resizeElemState();
00695
00696
00697
00698
00699 void activateSelectorFor(IdentityConstraint* const ic);
00700
00701
00702
00703
00704
00705
00706
00707
00708
00709
00710
00711
00712
00713
00714
00715
00716
00717
00718
00719
00720
00721
00722
00723
00724
00725
00726
00727
00728
00729
00730
00731
00732
00733
00734
00735
00736
00737
00738
00739
00740
00741
00742
00743
00744
00745
00746
00747
00748
00749
00750
00751
00752
00753
00754
00755
00756
00757
00758
00759
00760
00761
00762
00763
00764
00765
00766
00767
00768
00769
00770
00771
00772
00773
00774
00775
00776
00777
00778
00779
00780
00781
00782
00783
00784
00785
00786
00787
00788
00789
00790
00791
00792
00793
00794
00795
00796
00797
00798
00799
00800
00801
00802
00803
00804
00805
00806
00807
00808
00809
00810
00811
00812
00813
00814
00815
00816
00817
00818
00819
00820
00821
00822
00823
00824
00825
00826
00827
00828
00829
00830
00831
00832
00833
00834
00835
00836
00837
00838
00839
00840
00841
00842
00843
00844
00845
00846
00847
00848
00849
00850
00851
00852
00853
00854
00855
00856
00857
00858
00859
00860
00861
00862
00863
00864
00865
00866
00867
00868
00869
00870
00871
00872
00873
00874
00875
00876
00877
00878
00879
00880
00881
00882
00883
00884
00885
00886
00887
00888
00889
00890
00891
00892
00893
00894
00895
00896
00897
00898
00899
00900
00901
00902
00903
00904
00905
00906
00907
00908
00909
00910
00911
00912
00913
00914
00915
00916
00917
00918
00919
00920
00921
00922
00923
00924
00925
00926
00927
00928
00929
00930
00931
00932 bool fDoNamespaces;
00933 bool fExitOnFirstFatal;
00934 bool fValidationConstraintFatal;
00935 bool fInException;
00936 bool fReuseGrammar;
00937 bool fStandalone;
00938 bool fHasNoDTD;
00939 bool fValidate;
00940 bool fValidatorFromUser;
00941 bool fDoSchema;
00942 bool fSchemaFullChecking;
00943 bool fSeeXsi;
00944 int fErrorCount;
00945 unsigned int fEmptyNamespaceId;
00946 unsigned int fUnknownNamespaceId;
00947 unsigned int fXMLNamespaceId;
00948 unsigned int fXMLNSNamespaceId;
00949 unsigned int fSchemaNamespaceId;
00950 unsigned int fElemStateSize;
00951 XMLUInt32 fScannerId;
00952 XMLUInt32 fSequenceId;
00953 unsigned int* fElemState;
00954 RefVectorOf<XMLAttr>* fAttrList;
00955 XMLBufferMgr fBufMgr;
00956 XMLDocumentHandler* fDocHandler;
00957 DocTypeHandler* fDocTypeHandler;
00958 ElemStack fElemStack;
00959 XMLEntityHandler* fEntityHandler;
00960 EntityResolver* fEntityResolver;
00961 XMLErrorReporter* fErrorReporter;
00962 ErrorHandler* fErrorHandler;
00963 RefHashTableOf<XMLRefInfo>* fIDRefList;
00964 RefVectorOf<KVStringPair>* fRawAttrList;
00965 ReaderMgr fReaderMgr;
00966 XMLValidator* fValidator;
00967 DTDValidator* fDTDValidator;
00968 SchemaValidator* fSchemaValidator;
00969 ValSchemes fValScheme;
00970 XMLBuffer fAttNameBuf;
00971 XMLBuffer fAttValueBuf;
00972 XMLBuffer fCDataBuf;
00973 XMLBuffer fNameBuf;
00974 XMLBuffer fQNameBuf;
00975 XMLBuffer fPrefixBuf;
00976 XMLBuffer fURIBuf;
00977 GrammarResolver* fGrammarResolver;
00978 Grammar* fGrammar;
00979 Grammar::GrammarType fGrammarType;
00980 NameIdPool<DTDEntityDecl>* fEntityDeclPool;
00981 XMLStringPool* fURIStringPool;
00982 XPathMatcherStack* fMatcherStack;
00983 ValueStoreCache* fValueStoreCache;
00984 FieldActivator* fFieldActivator;
00985 XMLCh* fRootElemName;
00986 XMLCh* fExternalSchemaLocation;
00987 XMLCh* fExternalNoNamespaceSchemaLocation;
00988 bool fURLEntityCaching;
00989 XMLCh* fURLEntityCacheDir;
00990 bool fURLSetByAPI;
00991 };
00992
00993
00994
00995
00996
00997
00998 inline const XMLDocumentHandler* XMLScanner::getDocHandler() const
00999 {
01000 return fDocHandler;
01001 }
01002
01003 inline XMLDocumentHandler* XMLScanner::getDocHandler()
01004 {
01005 return fDocHandler;
01006 }
01007
01008 inline const DocTypeHandler* XMLScanner::getDocTypeHandler() const
01009 {
01010 return fDocTypeHandler;
01011 }
01012
01013 inline DocTypeHandler* XMLScanner::getDocTypeHandler()
01014 {
01015 return fDocTypeHandler;
01016 }
01017
01018 inline bool XMLScanner::getDoNamespaces() const
01019 {
01020 return fDoNamespaces;
01021 }
01022
01023 inline const XMLEntityHandler* XMLScanner::getEntityHandler() const
01024 {
01025 return fEntityHandler;
01026 }
01027
01028 inline XMLEntityHandler* XMLScanner::getEntityHandler()
01029 {
01030 return fEntityHandler;
01031 }
01032
01033 inline const XMLErrorReporter* XMLScanner::getErrorReporter() const
01034 {
01035 return fErrorReporter;
01036 }
01037
01038 inline XMLErrorReporter* XMLScanner::getErrorReporter()
01039 {
01040 return fErrorReporter;
01041 }
01042
01043 inline bool XMLScanner::getExitOnFirstFatal() const
01044 {
01045 return fExitOnFirstFatal;
01046 }
01047
01048 inline bool XMLScanner::getValidationConstraintFatal() const
01049 {
01050 return fValidationConstraintFatal;
01051 }
01052
01053 inline RefHashTableOf<XMLRefInfo>* XMLScanner::getIDRefList()
01054 {
01055 return fIDRefList;
01056 }
01057
01058 inline bool XMLScanner::getInException() const
01059 {
01060 return fInException;
01061 }
01062
01063 inline const RefHashTableOf<XMLRefInfo>* XMLScanner::getIDRefList() const
01064 {
01065 return fIDRefList;
01066 }
01067
01068 inline const Locator* XMLScanner::getLocator() const
01069 {
01070 return &fReaderMgr;
01071 }
01072
01073 inline unsigned int XMLScanner::getSrcOffset() const
01074 {
01075 return fReaderMgr.getSrcOffset();
01076 }
01077
01078 inline bool XMLScanner::getStandalone() const
01079 {
01080 return fStandalone;
01081 }
01082
01083 inline XMLScanner::ValSchemes XMLScanner::getValidationScheme() const
01084 {
01085 return fValScheme;
01086 }
01087
01088 inline const XMLValidator* XMLScanner::getValidator() const
01089 {
01090 return fValidator;
01091 }
01092
01093 inline XMLValidator* XMLScanner::getValidator()
01094 {
01095 return fValidator;
01096 }
01097
01098 inline bool XMLScanner::getDoSchema() const
01099 {
01100 return fDoSchema;
01101 }
01102
01103 inline bool XMLScanner::getValidationSchemaFullChecking() const
01104 {
01105 return fSchemaFullChecking;
01106 }
01107
01108 inline int XMLScanner::getErrorCount()
01109 {
01110 return fErrorCount;
01111 }
01112
01113 inline bool XMLScanner::isValidatorFromUser()
01114 {
01115 return fValidatorFromUser;
01116 }
01117
01118 inline unsigned int XMLScanner::getEmptyNamespaceId() const
01119 {
01120 return fEmptyNamespaceId;
01121 }
01122
01123 inline unsigned int XMLScanner::getUnknownNamespaceId() const
01124 {
01125 return fUnknownNamespaceId;
01126 }
01127
01128 inline unsigned int XMLScanner::getXMLNamespaceId() const
01129 {
01130 return fXMLNamespaceId;
01131 }
01132
01133 inline unsigned int XMLScanner::getXMLNSNamespaceId() const
01134 {
01135 return fXMLNSNamespaceId;
01136 }
01137
01138 inline NameIdPoolEnumerator<DTDEntityDecl>
01139 XMLScanner::getEntityEnumerator() const
01140 {
01141 return NameIdPoolEnumerator<DTDEntityDecl>(fEntityDeclPool);
01142 }
01143
01144 inline const DTDEntityDecl* XMLScanner::getEntityDecl(const XMLCh* const entName) const
01145 {
01146 return fEntityDeclPool->getByKey(entName);
01147 }
01148
01149 inline DTDEntityDecl* XMLScanner::getEntityDecl(const XMLCh* const entName)
01150 {
01151 return fEntityDeclPool->getByKey(entName);
01152 }
01153
01154 inline NameIdPool<DTDEntityDecl>* XMLScanner::getEntityDeclPool()
01155 {
01156 return fEntityDeclPool;
01157 }
01158
01159 inline const NameIdPool<DTDEntityDecl>* XMLScanner::getEntityDeclPool() const
01160 {
01161 return fEntityDeclPool;
01162 }
01163
01164 inline const XMLStringPool* XMLScanner::getURIStringPool() const
01165 {
01166 return fURIStringPool;
01167 }
01168
01169 inline XMLStringPool* XMLScanner::getURIStringPool()
01170 {
01171 return fURIStringPool;
01172 }
01173
01174 inline bool XMLScanner::getHasNoDTD() const
01175 {
01176 return fHasNoDTD;
01177 }
01178
01179 inline XMLCh* XMLScanner::getExternalSchemaLocation() const
01180 {
01181 return fExternalSchemaLocation;
01182 }
01183
01184 inline XMLCh* XMLScanner::getExternalNoNamespaceSchemaLocation() const
01185 {
01186 return fExternalNoNamespaceSchemaLocation;
01187 }
01188
01189 inline bool XMLScanner::getURLEntityCaching() const
01190 {
01191 return fURLEntityCaching;
01192 }
01193
01194 inline XMLCh* XMLScanner::getURLEntityCacheDir() const
01195 {
01196 return fURLEntityCacheDir;
01197 }
01198
01199
01200
01201
01202 inline void XMLScanner::setDocHandler(XMLDocumentHandler* const docHandler)
01203 {
01204 fDocHandler = docHandler;
01205 }
01206
01207 inline void XMLScanner::setDocTypeHandler(DocTypeHandler* const docTypeHandler)
01208 {
01209 fDocTypeHandler = docTypeHandler;
01210 }
01211
01212 inline void XMLScanner::setDoNamespaces(const bool doNamespaces)
01213 {
01214 fDoNamespaces = doNamespaces;
01215 if (fDoNamespaces) {
01216 if (!fURIStringPool) {
01217 fURIStringPool = new XMLStringPool();
01218 resetURIStringPool();
01219 }
01220 }
01221 }
01222
01223 inline void XMLScanner::setErrorReporter(XMLErrorReporter* const errHandler)
01224 {
01225 fErrorReporter = errHandler;
01226 fDTDValidator->setErrorReporter(fErrorReporter);
01227 fSchemaValidator->setErrorReporter(fErrorReporter);
01228 }
01229
01230 inline void XMLScanner::setErrorHandler(ErrorHandler* const handler)
01231 {
01232 fErrorHandler = handler;
01233 }
01234
01235 inline void XMLScanner::setEntityHandler(XMLEntityHandler* const entityHandler)
01236 {
01237 fEntityHandler = entityHandler;
01238 fReaderMgr.setEntityHandler(entityHandler);
01239 }
01240
01241 inline void XMLScanner::setEntityResolver(EntityResolver* const handler)
01242 {
01243 fEntityResolver = handler;
01244 }
01245
01246 inline void XMLScanner::setExitOnFirstFatal(const bool newValue)
01247 {
01248 fExitOnFirstFatal = newValue;
01249 }
01250
01251 inline void XMLScanner::setValidationConstraintFatal(const bool newValue)
01252 {
01253 fValidationConstraintFatal = newValue;
01254 }
01255
01256 inline void XMLScanner::setValidationScheme(const ValSchemes newScheme)
01257 {
01258 fValScheme = newScheme;
01259
01260
01261
01262 if (fValScheme == Val_Always)
01263 fValidate = true;
01264 else
01265 fValidate = false;
01266 }
01267
01268 inline void XMLScanner::setValidator(XMLValidator* const valToAdopt)
01269 {
01270 if (fValidatorFromUser)
01271 delete fValidator;
01272 fValidator = valToAdopt;
01273 fValidatorFromUser = true;
01274 initValidator(fValidator);
01275 }
01276
01277 inline void XMLScanner::setDoSchema(const bool doSchema)
01278 {
01279 fDoSchema = doSchema;
01280 }
01281
01282 inline void XMLScanner::setValidationSchemaFullChecking(const bool schemaFullChecking)
01283 {
01284 fSchemaFullChecking = schemaFullChecking;
01285 }
01286
01287 inline void XMLScanner::setHasNoDTD(const bool hasNoDTD)
01288 {
01289 fHasNoDTD = hasNoDTD;
01290 }
01291
01292 inline void XMLScanner::setRootElemName(XMLCh* rootElemName)
01293 {
01294 delete [] fRootElemName;
01295 fRootElemName = XMLString::replicate(rootElemName);
01296 }
01297
01298 inline void XMLScanner::setExternalSchemaLocation(const XMLCh* const schemaLocation)
01299 {
01300 delete [] fExternalSchemaLocation;
01301 fExternalSchemaLocation = XMLString::replicate(schemaLocation);
01302 }
01303
01304 inline void XMLScanner::setExternalNoNamespaceSchemaLocation(const XMLCh* const noNamespaceSchemaLocation)
01305 {
01306 delete [] fExternalNoNamespaceSchemaLocation;
01307 fExternalNoNamespaceSchemaLocation = XMLString::replicate(noNamespaceSchemaLocation);
01308 }
01309
01310 inline void XMLScanner::setExternalSchemaLocation(const char* const schemaLocation)
01311 {
01312 delete [] fExternalSchemaLocation;
01313 fExternalSchemaLocation = XMLString::transcode(schemaLocation);
01314 }
01315
01316 inline void XMLScanner::setExternalNoNamespaceSchemaLocation(const char* const noNamespaceSchemaLocation)
01317 {
01318 delete [] fExternalNoNamespaceSchemaLocation;
01319 fExternalNoNamespaceSchemaLocation = XMLString::transcode(noNamespaceSchemaLocation);
01320 }
01321
01322 inline void XMLScanner::setURLEntityCaching(const bool useCache)
01323 {
01324 fURLEntityCaching = useCache;
01325 }
01326
01327 inline void XMLScanner::setURLSetByAPI(const bool setByAPI)
01328 {
01329 fURLSetByAPI = setByAPI;
01330 }
01331
01332 inline void XMLScanner::setURLEntityCacheDir(const XMLCh* const cacheDir)
01333 {
01334 delete [] fURLEntityCacheDir;
01335 fURLEntityCacheDir = XMLString::replicate(cacheDir);
01336 }
01337
01338 inline void XMLScanner::setURLEntityCacheDir(const char* const cacheDir)
01339 {
01340 delete [] fURLEntityCacheDir;
01341 fURLEntityCacheDir = XMLString::transcode(cacheDir);
01342 }
01343
01344
01345
01346
01347
01348 inline void XMLScanner::incrementErrorCount()
01349 {
01350 ++fErrorCount;
01351 }
01352
01353
01354
01355
01356
01357 inline bool XMLScanner::getDoValidation() const
01358 {
01359 return fValidate;
01360 }
01361
01362 inline void XMLScanner::setDoValidation(const bool validate, const bool setValScheme)
01363 {
01364 fValidate = validate;
01365 if (setValScheme) {
01366 if (fValidate)
01367 fValScheme = Val_Always;
01368 else
01369 fValScheme = Val_Never;
01370 }
01371 }
01372
01373 #endif