00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #if !defined(XERCESC_INCLUDE_GUARD_XMLVALIDATOR_HPP)
00023 #define XERCESC_INCLUDE_GUARD_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 XMLPARSER_EXPORT XMLValidator : public XMemory
00053 {
00054 public:
00055
00056
00057
00058
00061
00066 virtual ~XMLValidator()
00067 {
00068 }
00070
00071
00072
00073
00074
00075
00078
00103 virtual bool checkContent
00104 (
00105 XMLElementDecl* const elemDecl
00106 , QName** const children
00107 , XMLSize_t childCount
00108 , XMLSize_t* indexFailingChild
00109 ) = 0;
00110
00119 virtual void faultInAttr
00120 (
00121 XMLAttr& toFill
00122 , const XMLAttDef& attDef
00123 ) const = 0;
00124
00128 virtual void preContentValidation(bool reuseGrammar,
00129 bool validateDefAttr = false) = 0;
00130
00138 virtual void postParseValidation() = 0;
00139
00145 virtual void reset() = 0;
00146
00153 virtual bool requiresNamespaces() const = 0;
00154
00165 virtual void validateAttrValue
00166 (
00167 const XMLAttDef* attDef
00168 , const XMLCh* const attrValue
00169 , bool preValidation = false
00170 , const XMLElementDecl* elemDecl = 0
00171 ) = 0;
00172
00180 virtual void validateElement
00181 (
00182 const XMLElementDecl* elemDef
00183 ) = 0;
00184
00188 virtual Grammar* getGrammar() const =0;
00189
00193 virtual void setGrammar(Grammar* aGrammar) =0;
00194
00195
00197
00198
00199
00200
00201
00204
00209 virtual bool handlesDTD() const = 0;
00210
00211
00212
00213
00214
00221 virtual bool handlesSchema() const = 0;
00222
00224
00225
00226
00227
00228
00229
00230
00231
00234
00248 void setScannerInfo
00249 (
00250 XMLScanner* const owningScanner
00251 , ReaderMgr* const readerMgr
00252 , XMLBufferMgr* const bufMgr
00253 );
00254
00264 void setErrorReporter
00265 (
00266 XMLErrorReporter* const errorReporter
00267 );
00268
00270
00271
00272
00273
00274
00275
00278
00297 void emitError(const XMLValid::Codes toEmit);
00298 void emitError
00299 (
00300 const XMLValid::Codes toEmit
00301 , const XMLCh* const text1
00302 , const XMLCh* const text2 = 0
00303 , const XMLCh* const text3 = 0
00304 , const XMLCh* const text4 = 0
00305 );
00306 void emitError
00307 (
00308 const XMLValid::Codes toEmit
00309 , const char* const text1
00310 , const char* const text2 = 0
00311 , const char* const text3 = 0
00312 , const char* const text4 = 0
00313 );
00314 void emitError
00315 (
00316 const XMLValid::Codes toEmit
00317 , const XMLExcepts::Codes originalErrorCode
00318 , const XMLCh* const text1 = 0
00319 , const XMLCh* const text2 = 0
00320 , const XMLCh* const text3 = 0
00321 , const XMLCh* const text4 = 0
00322
00323 );
00324
00326
00327 protected :
00328
00329
00330
00331 XMLValidator
00332 (
00333 XMLErrorReporter* const errReporter = 0
00334 );
00335
00336
00337
00338
00339
00340 const XMLBufferMgr* getBufMgr() const;
00341 XMLBufferMgr* getBufMgr();
00342 const ReaderMgr* getReaderMgr() const;
00343 ReaderMgr* getReaderMgr();
00344 const XMLScanner* getScanner() const;
00345 XMLScanner* getScanner();
00346
00347
00348 private :
00349
00350
00351
00352 XMLValidator(const XMLValidator&);
00353 XMLValidator& operator=(const XMLValidator&);
00354
00355
00356
00357
00358
00359
00360
00361
00362
00363 XMLBufferMgr* fBufMgr;
00364 XMLErrorReporter* fErrorReporter;
00365 ReaderMgr* fReaderMgr;
00366 XMLScanner* fScanner;
00367 };
00368
00369
00370
00371
00372
00373 inline void
00374 XMLValidator::setScannerInfo(XMLScanner* const owningScanner
00375 , ReaderMgr* const readerMgr
00376 , XMLBufferMgr* const bufMgr)
00377 {
00378
00379 fScanner = owningScanner;
00380 fReaderMgr = readerMgr;
00381 fBufMgr = bufMgr;
00382 }
00383
00384 inline void
00385 XMLValidator::setErrorReporter(XMLErrorReporter* const errorReporter)
00386 {
00387 fErrorReporter = errorReporter;
00388 }
00389
00390
00391
00392
00393
00394 inline const XMLBufferMgr* XMLValidator::getBufMgr() const
00395 {
00396 return fBufMgr;
00397 }
00398
00399 inline XMLBufferMgr* XMLValidator::getBufMgr()
00400 {
00401 return fBufMgr;
00402 }
00403
00404 inline const ReaderMgr* XMLValidator::getReaderMgr() const
00405 {
00406 return fReaderMgr;
00407 }
00408
00409 inline ReaderMgr* XMLValidator::getReaderMgr()
00410 {
00411 return fReaderMgr;
00412 }
00413
00414 inline const XMLScanner* XMLValidator::getScanner() const
00415 {
00416 return fScanner;
00417 }
00418
00419 inline XMLScanner* XMLValidator::getScanner()
00420 {
00421 return fScanner;
00422 }
00423
00424 XERCES_CPP_NAMESPACE_END
00425
00426 #endif