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 #if !defined(XMLVALIDATOR_HPP)
00129 #define XMLVALIDATOR_HPP
00130
00131 #include <xercesc/util/XercesDefs.hpp>
00132 #include <xercesc/framework/XMLAttr.hpp>
00133 #include <xercesc/framework/XMLValidityCodes.hpp>
00134 #include <xercesc/framework/XMLRefInfo.hpp>
00135
00136 class ReaderMgr;
00137 class XMLBuffer;
00138 class XMLBufferMgr;
00139 class XMLElementDecl;
00140 class XMLEntityHandler;
00141 class XMLErrorReporter;
00142 class XMLMsgLoader;
00143 class XMLScanner;
00144 class Grammar;
00145
00146
00162 class XMLValidator
00163 {
00164 public:
00165
00166
00167
00168
00171
00176 virtual ~XMLValidator()
00177 {
00178 }
00180
00181
00182
00183
00184
00185
00188
00208 virtual int checkContent
00209 (
00210 XMLElementDecl* const elemDecl
00211 , QName** const children
00212 , const unsigned int childCount
00213 ) = 0;
00214
00223 virtual void faultInAttr
00224 (
00225 XMLAttr& toFill
00226 , const XMLAttDef& attDef
00227 ) const = 0;
00228
00232 virtual void preContentValidation(bool reuseGrammar) = 0;
00233
00241 virtual void postParseValidation() = 0;
00242
00248 virtual void reset() = 0;
00249
00256 virtual bool requiresNamespaces() const = 0;
00257
00268 virtual void validateAttrValue
00269 (
00270 const XMLAttDef* attDef
00271 , const XMLCh* const attrValue
00272 ) = 0;
00273
00281 virtual void validateElement
00282 (
00283 const XMLElementDecl* elemDef
00284 ) = 0;
00285
00289 virtual Grammar* getGrammar() const =0;
00290
00294 virtual void setGrammar(Grammar* aGrammar) =0;
00295
00296
00298
00299
00300
00301
00302
00305
00310 virtual bool handlesDTD() const = 0;
00311
00312
00313
00314
00315
00317
00322 virtual bool handlesSchema() const = 0;
00323
00325
00326
00327
00328
00329
00330
00331
00332
00335
00349 void setScannerInfo
00350 (
00351 XMLScanner* const owningScanner
00352 , ReaderMgr* const readerMgr
00353 , XMLBufferMgr* const bufMgr
00354 );
00355
00365 void setErrorReporter
00366 (
00367 XMLErrorReporter* const errorReporter
00368 );
00369
00371
00372
00373
00374
00375
00376
00379
00398 void emitError(const XMLValid::Codes toEmit);
00399 void emitError
00400 (
00401 const XMLValid::Codes toEmit
00402 , const XMLCh* const text1
00403 , const XMLCh* const text2 = 0
00404 , const XMLCh* const text3 = 0
00405 , const XMLCh* const text4 = 0
00406 );
00407 void emitError
00408 (
00409 const XMLValid::Codes toEmit
00410 , const char* const text1
00411 , const char* const text2 = 0
00412 , const char* const text3 = 0
00413 , const char* const text4 = 0
00414 );
00415
00417
00418
00419
00420
00428 bool checkRootElement
00429 (
00430 const unsigned int elemId
00431 ) { return true;};
00432
00433
00434
00435
00436 static void reinitMsgMutex();
00437
00438 static void reinitMsgLoader();
00439
00440 protected :
00441
00442
00443
00444 XMLValidator
00445 (
00446 XMLErrorReporter* const errReporter = 0
00447 );
00448
00449
00450
00451
00452
00453 const XMLBufferMgr* getBufMgr() const;
00454 XMLBufferMgr* getBufMgr();
00455 const ReaderMgr* getReaderMgr() const;
00456 ReaderMgr* getReaderMgr();
00457 const XMLScanner* getScanner() const;
00458 XMLScanner* getScanner();
00459
00460
00461 private :
00462
00463
00464
00465 XMLValidator(const XMLValidator&);
00466 void operator=(const XMLValidator&);
00467
00468
00469
00470
00471
00472
00473
00474
00475
00476 XMLBufferMgr* fBufMgr;
00477 XMLErrorReporter* fErrorReporter;
00478 ReaderMgr* fReaderMgr;
00479 XMLScanner* fScanner;
00480
00481 };
00482
00483
00484
00485
00486
00487 inline void
00488 XMLValidator::setScannerInfo(XMLScanner* const owningScanner
00489 , ReaderMgr* const readerMgr
00490 , XMLBufferMgr* const bufMgr)
00491 {
00492
00493 fScanner = owningScanner;
00494 fReaderMgr = readerMgr;
00495 fBufMgr = bufMgr;
00496 }
00497
00498 inline void
00499 XMLValidator::setErrorReporter(XMLErrorReporter* const errorReporter)
00500 {
00501 fErrorReporter = errorReporter;
00502 }
00503
00504
00505
00506
00507
00508 inline const XMLBufferMgr* XMLValidator::getBufMgr() const
00509 {
00510 return fBufMgr;
00511 }
00512
00513 inline XMLBufferMgr* XMLValidator::getBufMgr()
00514 {
00515 return fBufMgr;
00516 }
00517
00518 inline const ReaderMgr* XMLValidator::getReaderMgr() const
00519 {
00520 return fReaderMgr;
00521 }
00522
00523 inline ReaderMgr* XMLValidator::getReaderMgr()
00524 {
00525 return fReaderMgr;
00526 }
00527
00528 inline const XMLScanner* XMLValidator::getScanner() const
00529 {
00530 return fScanner;
00531 }
00532
00533 inline XMLScanner* XMLValidator::getScanner()
00534 {
00535 return fScanner;
00536 }
00537
00538
00539 #endif