00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #if !defined(XMLVALIDATOR_HPP)
00023 #define XMLVALIDATOR_HPP
00024
00025 #include <xercesc/framework/XMLAttr.hpp>
00026 #include <xercesc/framework/XMLValidityCodes.hpp>
00027
00028 XERCES_CPP_NAMESPACE_BEGIN
00029
00030 class ReaderMgr;
00031 class XMLBufferMgr;
00032 class XMLElementDecl;
00033 class XMLScanner;
00034 class Grammar;
00035
00036
00052 class XMLValidator : public XMemory
00053 {
00054 public:
00055
00056
00057
00058
00061
00066 virtual ~XMLValidator()
00067 {
00068 }
00070
00071
00072
00073
00074
00075
00078
00098 virtual int checkContent
00099 (
00100 XMLElementDecl* const elemDecl
00101 , QName** const children
00102 , const unsigned int childCount
00103 ) = 0;
00104
00113 virtual void faultInAttr
00114 (
00115 XMLAttr& toFill
00116 , const XMLAttDef& attDef
00117 ) const = 0;
00118
00122 virtual void preContentValidation(bool reuseGrammar,
00123 bool validateDefAttr = false) = 0;
00124
00132 virtual void postParseValidation() = 0;
00133
00139 virtual void reset() = 0;
00140
00147 virtual bool requiresNamespaces() const = 0;
00148
00159 virtual void validateAttrValue
00160 (
00161 const XMLAttDef* attDef
00162 , const XMLCh* const attrValue
00163 , bool preValidation = false
00164 , const XMLElementDecl* elemDecl = 0
00165 ) = 0;
00166
00174 virtual void validateElement
00175 (
00176 const XMLElementDecl* elemDef
00177 ) = 0;
00178
00182 virtual Grammar* getGrammar() const =0;
00183
00187 virtual void setGrammar(Grammar* aGrammar) =0;
00188
00189
00191
00192
00193
00194
00195
00198
00203 virtual bool handlesDTD() const = 0;
00204
00205
00206
00207
00208
00215 virtual bool handlesSchema() const = 0;
00216
00218
00219
00220
00221
00222
00223
00224
00225
00228
00242 void setScannerInfo
00243 (
00244 XMLScanner* const owningScanner
00245 , ReaderMgr* const readerMgr
00246 , XMLBufferMgr* const bufMgr
00247 );
00248
00258 void setErrorReporter
00259 (
00260 XMLErrorReporter* const errorReporter
00261 );
00262
00264
00265
00266
00267
00268
00269
00272
00291 void emitError(const XMLValid::Codes toEmit);
00292 void emitError
00293 (
00294 const XMLValid::Codes toEmit
00295 , const XMLCh* const text1
00296 , const XMLCh* const text2 = 0
00297 , const XMLCh* const text3 = 0
00298 , const XMLCh* const text4 = 0
00299 );
00300 void emitError
00301 (
00302 const XMLValid::Codes toEmit
00303 , const char* const text1
00304 , const char* const text2 = 0
00305 , const char* const text3 = 0
00306 , const char* const text4 = 0
00307 );
00308
00310
00311
00312
00313
00321 bool checkRootElement
00322 (
00323 const unsigned int
00324 ) { return true;};
00325
00326
00327
00328
00329 static void reinitMsgMutex();
00330
00331 static void reinitMsgLoader();
00332
00333 protected :
00334
00335
00336
00337 XMLValidator
00338 (
00339 XMLErrorReporter* const errReporter = 0
00340 );
00341
00342
00343
00344
00345
00346 const XMLBufferMgr* getBufMgr() const;
00347 XMLBufferMgr* getBufMgr();
00348 const ReaderMgr* getReaderMgr() const;
00349 ReaderMgr* getReaderMgr();
00350 const XMLScanner* getScanner() const;
00351 XMLScanner* getScanner();
00352
00353
00354 private :
00355
00356
00357
00358 XMLValidator(const XMLValidator&);
00359 XMLValidator& operator=(const XMLValidator&);
00360
00361
00362
00363
00364
00365
00366
00367
00368
00369 XMLBufferMgr* fBufMgr;
00370 XMLErrorReporter* fErrorReporter;
00371 ReaderMgr* fReaderMgr;
00372 XMLScanner* fScanner;
00373 };
00374
00375
00376
00377
00378
00379 inline void
00380 XMLValidator::setScannerInfo(XMLScanner* const owningScanner
00381 , ReaderMgr* const readerMgr
00382 , XMLBufferMgr* const bufMgr)
00383 {
00384
00385 fScanner = owningScanner;
00386 fReaderMgr = readerMgr;
00387 fBufMgr = bufMgr;
00388 }
00389
00390 inline void
00391 XMLValidator::setErrorReporter(XMLErrorReporter* const errorReporter)
00392 {
00393 fErrorReporter = errorReporter;
00394 }
00395
00396
00397
00398
00399
00400 inline const XMLBufferMgr* XMLValidator::getBufMgr() const
00401 {
00402 return fBufMgr;
00403 }
00404
00405 inline XMLBufferMgr* XMLValidator::getBufMgr()
00406 {
00407 return fBufMgr;
00408 }
00409
00410 inline const ReaderMgr* XMLValidator::getReaderMgr() const
00411 {
00412 return fReaderMgr;
00413 }
00414
00415 inline ReaderMgr* XMLValidator::getReaderMgr()
00416 {
00417 return fReaderMgr;
00418 }
00419
00420 inline const XMLScanner* XMLValidator::getScanner() const
00421 {
00422 return fScanner;
00423 }
00424
00425 inline XMLScanner* XMLValidator::getScanner()
00426 {
00427 return fScanner;
00428 }
00429
00430 XERCES_CPP_NAMESPACE_END
00431
00432 #endif