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 #if !defined(XMLVALIDATOR_HPP)
00115 #define XMLVALIDATOR_HPP
00116 
00117 #include <util/XercesDefs.hpp>
00118 #include <framework/XMLAttr.hpp>
00119 #include <framework/XMLValidityCodes.hpp>
00120 #include <framework/XMLRefInfo.hpp>
00121 
00122 class ReaderMgr;
00123 class XMLBuffer;
00124 class XMLBufferMgr;
00125 class XMLElementDecl;
00126 class XMLEntityHandler;
00127 class XMLErrorReporter;
00128 class XMLMsgLoader;
00129 class XMLScanner;
00130 class Grammar;
00131 
00132 
00148 class  XMLValidator
00149 {
00150 public:
00151     
00152     
00153     
00154 
00157 
00162     virtual ~XMLValidator()
00163     {
00164     }
00166 
00167 
00168     
00169     
00170     
00171 
00174 
00195     virtual int checkContent
00196     (
00197         XMLElementDecl* const   elemDecl
00198         , QName** const         children
00199         , const unsigned int    childCount
00200     ) = 0;
00201 
00207     virtual bool checkRootElement
00208     (
00209         const   unsigned int    elemId
00210     ) = 0;
00211 
00220     virtual void faultInAttr
00221     (
00222                 XMLAttr&    toFill
00223         , const XMLAttDef&  attDef
00224     )   const = 0;
00225 
00229     virtual void preContentValidation(bool reuseGrammar) = 0;
00230 
00238     virtual void postParseValidation() = 0;
00239 
00245     virtual void reset() = 0;
00246 
00253     virtual bool requiresNamespaces() const = 0;
00254 
00265     virtual void validateAttrValue
00266     (
00267         const   XMLAttDef*                  attDef
00268         , const XMLCh* const                attrValue
00269     ) = 0;
00270 
00278     virtual void validateElement
00279     (
00280         const   XMLElementDecl*             elemDef
00281     ) = 0;
00282 
00286     virtual Grammar* getGrammar() const =0;
00287 
00291     virtual void setGrammar(Grammar* aGrammar) =0;
00292 
00293 
00295 
00296     
00297     
00298     
00299 
00302 
00307     virtual bool handlesDTD() const = 0;
00308 
00309     
00310     
00311     
00312 
00314 
00319     virtual bool handlesSchema() const = 0;
00320 
00322 
00323     
00324     
00325     
00326     
00327     
00328     
00329 
00332 
00346     void setScannerInfo
00347     (
00348         XMLScanner* const           owningScanner
00349         , ReaderMgr* const          readerMgr
00350         , XMLBufferMgr* const       bufMgr
00351     );
00352 
00362     void setErrorReporter
00363     (
00364         XMLErrorReporter* const errorReporter
00365     );
00366 
00368 
00369 
00370     
00371     
00372     
00373 
00376 
00394     void emitError(const XMLValid::Codes toEmit);
00395     void emitError
00396     (
00397         const   XMLValid::Codes toEmit
00398         , const XMLCh* const    text1
00399         , const XMLCh* const    text2 = 0
00400         , const XMLCh* const    text3 = 0
00401         , const XMLCh* const    text4 = 0
00402     );
00403     void emitError
00404     (
00405         const   XMLValid::Codes toEmit
00406         , const char* const     text1
00407         , const char* const     text2 = 0
00408         , const char* const     text3 = 0
00409         , const char* const     text4 = 0
00410     );
00411 
00413 
00414     
00415     
00416     
00417     static void reinitXMLValidator();   
00418 
00419 protected :
00420     
00421     
00422     
00423     XMLValidator
00424     (
00425         XMLErrorReporter* const errReporter = 0
00426     );
00427 
00428 
00429     
00430     
00431     
00432     const XMLBufferMgr* getBufMgr() const;
00433     XMLBufferMgr* getBufMgr();
00434     const ReaderMgr* getReaderMgr() const;
00435     ReaderMgr* getReaderMgr();
00436     const XMLScanner* getScanner() const;
00437     XMLScanner* getScanner();
00438 
00439 
00440 private :
00441     
00442     
00443     
00444     XMLValidator(const XMLValidator&);
00445     void operator=(const XMLValidator&);
00446 
00447 
00448     
00449     
00450     
00451     
00452     
00453     
00454     
00455     XMLBufferMgr*       fBufMgr;
00456     XMLErrorReporter*   fErrorReporter;
00457     ReaderMgr*          fReaderMgr;
00458     XMLScanner*         fScanner;
00459 
00460 };
00461 
00462 
00463 
00464 
00465 
00466 inline void
00467 XMLValidator::setScannerInfo(XMLScanner* const      owningScanner
00468                             , ReaderMgr* const      readerMgr
00469                             , XMLBufferMgr* const   bufMgr)
00470 {
00471     
00472     fScanner = owningScanner;
00473     fReaderMgr = readerMgr;
00474     fBufMgr = bufMgr;
00475 }
00476 
00477 inline void
00478 XMLValidator::setErrorReporter(XMLErrorReporter* const errorReporter)
00479 {
00480     fErrorReporter = errorReporter;
00481 }
00482 
00483 
00484 
00485 
00486 
00487 inline const XMLBufferMgr* XMLValidator::getBufMgr() const
00488 {
00489     return fBufMgr;
00490 }
00491 
00492 inline XMLBufferMgr* XMLValidator::getBufMgr()
00493 {
00494     return fBufMgr;
00495 }
00496 
00497 inline const ReaderMgr* XMLValidator::getReaderMgr() const
00498 {
00499     return fReaderMgr;
00500 }
00501 
00502 inline ReaderMgr* XMLValidator::getReaderMgr()
00503 {
00504     return fReaderMgr;
00505 }
00506 
00507 inline const XMLScanner* XMLValidator::getScanner() const
00508 {
00509     return fScanner;
00510 }
00511 
00512 inline XMLScanner* XMLValidator::getScanner()
00513 {
00514     return fScanner;
00515 }
00516 
00517 
00518 #endif