| API Docs for SAX and DOM |

Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members File Members

# XMLValidator.hpp

Go to the documentation of this file.

    00001 /*
    00002  * The Apache Software License, Version 1.1
    00003  *
    00004  * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
    00005  * reserved.
    00006  *
    00007  * Redistribution and use in source and binary forms, with or without
    00008  * modification, are permitted provided that the following conditions
    00009  * are met:
    00010  *
    00011  * 1. Redistributions of source code must retain the above copyright
    00012  *    notice, this list of conditions and the following disclaimer.
    00013  *
    00014  * 2. Redistributions in binary form must reproduce the above copyright
    00015  *    notice, this list of conditions and the following disclaimer in
    00016  *    the documentation and/or other materials provided with the
    00017  *    distribution.
    00018  *
    00019  * 3. The end-user documentation included with the redistribution,
    00020  *    if any, must include the following acknowledgment:
    00021  *       "This product includes software developed by the
    00022  *        Apache Software Foundation (http://www.apache.org/)."
    00023  *    Alternately, this acknowledgment may appear in the software itself,
    00024  *    if and wherever such third-party acknowledgments normally appear.
    00025  *
    00026  * 4. The names "Xerces" and "Apache Software Foundation" must
    00027  *    not be used to endorse or promote products derived from this
    00028  *    software without prior written permission. For written
    00029  *    permission, please contact apache\@apache.org.
    00030  *
    00031  * 5. Products derived from this software may not be called "Apache",
    00032  *    nor may "Apache" appear in their name, without prior written
    00033  *    permission of the Apache Software Foundation.
    00034  *
    00035  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
    00036  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
    00037  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    00038  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
    00039  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    00040  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
    00041  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
    00042  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    00043  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
    00044  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
    00045  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    00046  * SUCH DAMAGE.
    00047  * ====================================================================
    00048  *
    00049  * This software consists of voluntary contributions made by many
    00050  * individuals on behalf of the Apache Software Foundation, and was
    00051  * originally based on software copyright (c) 1999, International
    00052  * Business Machines, Inc., http://www.ibm.com .  For more information
    00053  * on the Apache Software Foundation, please see
    00054  * <http://www.apache.org/>.
    00055  */
    00056
    00057  /*
    00058   * $Log: XMLValidator.hpp,v $
    00059   * Revision 1.4  2002/08/20 16:54:11  tng
    00060   * [Bug 6251] Info during compilation.
    00061   *
    00062   * Revision 1.3  2002/07/11 18:55:44  knoaman
    00063   * Add a flag to the preContentValidation method to indicate whether to validate
    00064   * default/fixed attributes or not.
    00065   *
    00066   * Revision 1.2  2002/02/20 18:17:01  tng
    00067   * [Bug 5977] Warnings on generating apiDocs.
    00068   *
    00069   * Revision 1.1.1.1  2002/02/01 22:21:52  peiyongz
    00070   * sane_include
    00071   *
    00072   * Revision 1.17  2001/11/30 22:18:18  peiyongz
    00073   * cleanUp function made member function
    00074   * cleanUp object moved to file scope
    00075   * double mutex lock removed
    00076   *
    00077   * Revision 1.16  2001/11/13 13:24:46  tng
    00078   * Deprecate function XMLValidator::checkRootElement.
    00079   *
    00080   * Revision 1.15  2001/10/24 23:46:52  peiyongz
    00081   * [Bug 4342] fix the leak.
    00082   *
    00083   * Revision 1.14  2001/06/05 16:51:17  knoaman
    00084   * Add 'const' to getGrammar - submitted by Peter A. Volchek.
    00085   *
    00086   * Revision 1.13  2001/05/11 13:25:33  tng
    00087   * Copyright update.
    00088   *
    00089   * Revision 1.12  2001/05/03 20:34:22  tng
    00090   * Schema: SchemaValidator update
    00091   *
    00092   * Revision 1.11  2001/04/19 18:16:53  tng
    00093   * Schema: SchemaValidator update, and use QName in Content Model
    00094   *
    00095   * Revision 1.10  2001/03/21 21:56:03  tng
    00096   * Schema: Add Schema Grammar, Schema Validator, and split the DTDValidator into DTDValidator, DTDScanner, and DTDGrammar.
    00097   *
    00098   * Revision 1.9  2001/02/26 19:21:33  tng
    00099   * Schema: add parameter prefix in findElem and findAttr.
    00100   *
    00101   * Revision 1.8  2000/12/14 18:49:58  tng
    00102   * Fix API document generation warning: "Warning: end of member group without matching begin"
    00103   *
    00104   * Revision 1.7  2000/08/09 22:09:09  jpolast
    00105   * added const XMLCh* getURIText()
    00106   * allows parsers to use const URIs instead of appending
    00107   * to a XMLBuffer.
    00108   *
    00109   * Revision 1.6  2000/03/02 19:54:25  roddey
    00110   * This checkin includes many changes done while waiting for the
    00111   * 1.1.0 code to be finished. I can't list them all here, but a list is
    00112   * available elsewhere.
    00113   *
    00114   * Revision 1.5  2000/02/24 20:00:24  abagchi
    00115   * Swat for removing Log from API docs
    00116   *
    00117   * Revision 1.4  2000/02/15 23:59:07  roddey
    00118   * More updated documentation of Framework classes.
    00119   *
    00120   * Revision 1.3  2000/02/15 01:21:31  roddey
    00121   * Some initial documentation improvements. More to come...
    00122   *
    00123   * Revision 1.2  2000/02/06 07:47:49  rahulj
    00124   * Year 2K copyright swat.
    00125   *
    00126   * Revision 1.1.1.1  1999/11/09 01:08:38  twl
    00127   * Initial checkin
    00128   *
    00129   * Revision 1.4  1999/11/08 20:44:41  rahul
    00130   * Swat for adding in Product name and CVS comment log variable.
    00131   *
    00132   */
    00133
    00134
    00135 #if !defined(XMLVALIDATOR_HPP)
    00136 #define XMLVALIDATOR_HPP
    00137
    00138 #include <xercesc/util/XercesDefs.hpp>
    00139 #include <xercesc/framework/XMLAttr.hpp>
    00140 #include <xercesc/framework/XMLValidityCodes.hpp>
    00141 #include <xercesc/framework/XMLRefInfo.hpp>
    00142
    00143 class ReaderMgr;
    00144 class XMLBuffer;
    00145 class XMLBufferMgr;
    00146 class XMLElementDecl;
    00147 class XMLEntityHandler;
    00148 class XMLErrorReporter;
    00149 class XMLMsgLoader;
    00150 class XMLScanner;
    00151 class Grammar;
    00152
    00153
    00169 class  XMLValidator
    00170 {
    00171 public:
    00172     // -----------------------------------------------------------------------
    00173     //  Constructors are hidden, just the virtual destructor is exposed
    00174     // -----------------------------------------------------------------------
    00175
    00178
    00183     virtual ~XMLValidator()
    00184     {
    00185     }
    00187
    00188
    00189     // -----------------------------------------------------------------------
    00190     //  The virtual validator interface
    00191     // -----------------------------------------------------------------------
    00192
    00195
    00215     virtual int checkContent
    00216     (
    00217         XMLElementDecl* const   elemDecl
    00218         , QName** const         children
    00219         , const unsigned int    childCount
    00220     ) = 0;
    00221
    00230     virtual void faultInAttr
    00231     (
    00232                 XMLAttr&    toFill
    00233         , const XMLAttDef&  attDef
    00234     )   const = 0;
    00235
    00239     virtual void preContentValidation(bool reuseGrammar,
    00240                                       bool validateDefAttr = false) = 0;
    00241
    00249     virtual void postParseValidation() = 0;
    00250
    00256     virtual void reset() = 0;
    00257
    00264     virtual bool requiresNamespaces() const = 0;
    00265
    00276     virtual void validateAttrValue
    00277     (
    00278         const   XMLAttDef*                  attDef
    00279         , const XMLCh* const                attrValue
    00280     ) = 0;
    00281
    00289     virtual void validateElement
    00290     (
    00291         const   XMLElementDecl*             elemDef
    00292     ) = 0;
    00293
    00297     virtual Grammar* getGrammar() const =0;
    00298
    00302     virtual void setGrammar(Grammar* aGrammar) =0;
    00303
    00304
    00306
    00307     // -----------------------------------------------------------------------
    00308     //  Virtual DTD handler interface.
    00309     // -----------------------------------------------------------------------
    00310
    00313
    00318     virtual bool handlesDTD() const = 0;
    00319
    00320     // -----------------------------------------------------------------------
    00321     //  Virtual Schema handler interface.
    00322     // -----------------------------------------------------------------------
    00323
    00325
    00330     virtual bool handlesSchema() const = 0;
    00331
    00333
    00334     // -----------------------------------------------------------------------
    00335     //  Setter methods
    00336     //
    00337     //  setScannerInfo() is called by the scanner to tell the validator
    00338     //  about the stuff it needs to have access to.
    00339     // -----------------------------------------------------------------------
    00340
    00343
    00357     void setScannerInfo
    00358     (
    00359         XMLScanner* const           owningScanner
    00360         , ReaderMgr* const          readerMgr
    00361         , XMLBufferMgr* const       bufMgr
    00362     );
    00363
    00373     void setErrorReporter
    00374     (
    00375         XMLErrorReporter* const errorReporter
    00376     );
    00377
    00379
    00380
    00381     // -----------------------------------------------------------------------
    00382     //  Error emitter methods
    00383     // -----------------------------------------------------------------------
    00384
    00387
    00406     void emitError(const XMLValid::Codes toEmit);
    00407     void emitError
    00408     (
    00409         const   XMLValid::Codes toEmit
    00410         , const XMLCh* const    text1
    00411         , const XMLCh* const    text2 = 0
    00412         , const XMLCh* const    text3 = 0
    00413         , const XMLCh* const    text4 = 0
    00414     );
    00415     void emitError
    00416     (
    00417         const   XMLValid::Codes toEmit
    00418         , const char* const     text1
    00419         , const char* const     text2 = 0
    00420         , const char* const     text3 = 0
    00421         , const char* const     text4 = 0
    00422     );
    00423
    00425
    00426     // -----------------------------------------------------------------------
    00427     //  Deprecated XMLValidator interface
    00428     // -----------------------------------------------------------------------
    00436     bool checkRootElement
    00437     (
    00438         const   unsigned int
    00439     ) { return true;};
    00440
    00441     // -----------------------------------------------------------------------
    00442     //  Notification that lazy data has been deleted
    00443     // -----------------------------------------------------------------------
    00444     static void reinitMsgMutex();
    00445
    00446     static void reinitMsgLoader();
    00447
    00448 protected :
    00449     // -----------------------------------------------------------------------
    00450     //  Hidden constructors
    00451     // -----------------------------------------------------------------------
    00452     XMLValidator
    00453     (
    00454         XMLErrorReporter* const errReporter = 0
    00455     );
    00456
    00457
    00458     // -----------------------------------------------------------------------
    00459     //  Protected getters
    00460     // -----------------------------------------------------------------------
    00461     const XMLBufferMgr* getBufMgr() const;
    00462     XMLBufferMgr* getBufMgr();
    00463     const ReaderMgr* getReaderMgr() const;
    00464     ReaderMgr* getReaderMgr();
    00465     const XMLScanner* getScanner() const;
    00466     XMLScanner* getScanner();
    00467
    00468
    00469 private :
    00470     // -----------------------------------------------------------------------
    00471     //  Unimplemented Constructors and Operators
    00472     // -----------------------------------------------------------------------
    00473     XMLValidator(const XMLValidator&);
    00474     void operator=(const XMLValidator&);
    00475
    00476
    00477     // -----------------------------------------------------------------------
    00478     //  Private data members
    00479     //
    00480     //  fErrorReporter
    00481     //      The error reporter we are to use, if any.
    00482     //
    00483     // -----------------------------------------------------------------------
    00484     XMLBufferMgr*       fBufMgr;
    00485     XMLErrorReporter*   fErrorReporter;
    00486     ReaderMgr*          fReaderMgr;
    00487     XMLScanner*         fScanner;
    00488
    00489 };
    00490
    00491
    00492 // -----------------------------------------------------------------------
    00493 //  Setter methods
    00494 // -----------------------------------------------------------------------
    00495 inline void
    00496 XMLValidator::setScannerInfo(XMLScanner* const      owningScanner
    00497                             , ReaderMgr* const      readerMgr
    00498                             , XMLBufferMgr* const   bufMgr)
    00499 {
    00500     // We don't own any of these, we just reference them
    00501     fScanner = owningScanner;
    00502     fReaderMgr = readerMgr;
    00503     fBufMgr = bufMgr;
    00504 }
    00505
    00506 inline void
    00507 XMLValidator::setErrorReporter(XMLErrorReporter* const errorReporter)
    00508 {
    00509     fErrorReporter = errorReporter;
    00510 }
    00511
    00512
    00513 // ---------------------------------------------------------------------------
    00514 //  XMLValidator: Protected getter
    00515 // ---------------------------------------------------------------------------
    00516 inline const XMLBufferMgr* XMLValidator::getBufMgr() const
    00517 {
    00518     return fBufMgr;
    00519 }
    00520
    00521 inline XMLBufferMgr* XMLValidator::getBufMgr()
    00522 {
    00523     return fBufMgr;
    00524 }
    00525
    00526 inline const ReaderMgr* XMLValidator::getReaderMgr() const
    00527 {
    00528     return fReaderMgr;
    00529 }
    00530
    00531 inline ReaderMgr* XMLValidator::getReaderMgr()
    00532 {
    00533     return fReaderMgr;
    00534 }
    00535
    00536 inline const XMLScanner* XMLValidator::getScanner() const
    00537 {
    00538     return fScanner;
    00539 }
    00540
    00541 inline XMLScanner* XMLValidator::getScanner()
    00542 {
    00543     return fScanner;
    00544 }
    00545
    00546
    00547 #endif

Copyright © 2000 The Apache Software Foundation. All Rights Reserved.