http://xml.apache.org/http://www.apache.org/http://www.w3.org/

Home

Readme
Release Info

Installation
Download
Build

FAQs
Samples
API Docs

DOM C++ Binding
Programming
Migration Guide

Feedback
Bug-Reporting
PDF Document

CVS Repository
Mail Archive

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.