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 #if !defined(XMLVALIDATOR_HPP)
00123 #define XMLVALIDATOR_HPP
00124
00125 #include <util/XercesDefs.hpp>
00126 #include <framework/XMLAttr.hpp>
00127 #include <framework/XMLValidityCodes.hpp>
00128 #include <framework/XMLRefInfo.hpp>
00129
00130 class ReaderMgr;
00131 class XMLBuffer;
00132 class XMLBufferMgr;
00133 class XMLElementDecl;
00134 class XMLEntityHandler;
00135 class XMLErrorReporter;
00136 class XMLMsgLoader;
00137 class XMLScanner;
00138 class Grammar;
00139
00140
00156 class XMLValidator
00157 {
00158 public:
00159
00160
00161
00162
00165
00170 virtual ~XMLValidator()
00171 {
00172 }
00174
00175
00176
00177
00178
00179
00182
00203 virtual int checkContent
00204 (
00205 XMLElementDecl* const elemDecl
00206 , QName** const children
00207 , const unsigned int childCount
00208 ) = 0;
00209
00218 virtual void faultInAttr
00219 (
00220 XMLAttr& toFill
00221 , const XMLAttDef& attDef
00222 ) const = 0;
00223
00227 virtual void preContentValidation(bool reuseGrammar) = 0;
00228
00236 virtual void postParseValidation() = 0;
00237
00243 virtual void reset() = 0;
00244
00251 virtual bool requiresNamespaces() const = 0;
00252
00263 virtual void validateAttrValue
00264 (
00265 const XMLAttDef* attDef
00266 , const XMLCh* const attrValue
00267 ) = 0;
00268
00276 virtual void validateElement
00277 (
00278 const XMLElementDecl* elemDef
00279 ) = 0;
00280
00284 virtual Grammar* getGrammar() const =0;
00285
00289 virtual void setGrammar(Grammar* aGrammar) =0;
00290
00291
00293
00294
00295
00296
00297
00300
00305 virtual bool handlesDTD() const = 0;
00306
00307
00308
00309
00310
00312
00317 virtual bool handlesSchema() const = 0;
00318
00320
00321
00322
00323
00324
00325
00326
00327
00330
00344 void setScannerInfo
00345 (
00346 XMLScanner* const owningScanner
00347 , ReaderMgr* const readerMgr
00348 , XMLBufferMgr* const bufMgr
00349 );
00350
00360 void setErrorReporter
00361 (
00362 XMLErrorReporter* const errorReporter
00363 );
00364
00366
00367
00368
00369
00370
00371
00374
00392 void emitError(const XMLValid::Codes toEmit);
00393 void emitError
00394 (
00395 const XMLValid::Codes toEmit
00396 , const XMLCh* const text1
00397 , const XMLCh* const text2 = 0
00398 , const XMLCh* const text3 = 0
00399 , const XMLCh* const text4 = 0
00400 );
00401 void emitError
00402 (
00403 const XMLValid::Codes toEmit
00404 , const char* const text1
00405 , const char* const text2 = 0
00406 , const char* const text3 = 0
00407 , const char* const text4 = 0
00408 );
00409
00411
00412
00413
00414
00422 bool checkRootElement
00423 (
00424 const unsigned int elemId
00425 ) { return true;};
00426
00427
00428
00429
00430 static void reinitMsgMutex();
00431
00432 static void reinitMsgLoader();
00433
00434 protected :
00435
00436
00437
00438 XMLValidator
00439 (
00440 XMLErrorReporter* const errReporter = 0
00441 );
00442
00443
00444
00445
00446
00447 const XMLBufferMgr* getBufMgr() const;
00448 XMLBufferMgr* getBufMgr();
00449 const ReaderMgr* getReaderMgr() const;
00450 ReaderMgr* getReaderMgr();
00451 const XMLScanner* getScanner() const;
00452 XMLScanner* getScanner();
00453
00454
00455 private :
00456
00457
00458
00459 XMLValidator(const XMLValidator&);
00460 void operator=(const XMLValidator&);
00461
00462
00463
00464
00465
00466
00467
00468
00469
00470 XMLBufferMgr* fBufMgr;
00471 XMLErrorReporter* fErrorReporter;
00472 ReaderMgr* fReaderMgr;
00473 XMLScanner* fScanner;
00474
00475 };
00476
00477
00478
00479
00480
00481 inline void
00482 XMLValidator::setScannerInfo(XMLScanner* const owningScanner
00483 , ReaderMgr* const readerMgr
00484 , XMLBufferMgr* const bufMgr)
00485 {
00486
00487 fScanner = owningScanner;
00488 fReaderMgr = readerMgr;
00489 fBufMgr = bufMgr;
00490 }
00491
00492 inline void
00493 XMLValidator::setErrorReporter(XMLErrorReporter* const errorReporter)
00494 {
00495 fErrorReporter = errorReporter;
00496 }
00497
00498
00499
00500
00501
00502 inline const XMLBufferMgr* XMLValidator::getBufMgr() const
00503 {
00504 return fBufMgr;
00505 }
00506
00507 inline XMLBufferMgr* XMLValidator::getBufMgr()
00508 {
00509 return fBufMgr;
00510 }
00511
00512 inline const ReaderMgr* XMLValidator::getReaderMgr() const
00513 {
00514 return fReaderMgr;
00515 }
00516
00517 inline ReaderMgr* XMLValidator::getReaderMgr()
00518 {
00519 return fReaderMgr;
00520 }
00521
00522 inline const XMLScanner* XMLValidator::getScanner() const
00523 {
00524 return fScanner;
00525 }
00526
00527 inline XMLScanner* XMLValidator::getScanner()
00528 {
00529 return fScanner;
00530 }
00531
00532
00533 #endif