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

Home

Readme
Download
Installation
Build

API Docs
Samples
Schema

FAQs
Programming
Migration

Releases
Bug-Reporting
Feedback

Y2K Compliance
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.15  2001/10/24 23:46:52  peiyongz
00060   * [Bug 4342] fix the leak.
00061   *
00062   * Revision 1.14  2001/06/05 16:51:17  knoaman
00063   * Add 'const' to getGrammar - submitted by Peter A. Volchek.
00064   *
00065   * Revision 1.13  2001/05/11 13:25:33  tng
00066   * Copyright update.
00067   *
00068   * Revision 1.12  2001/05/03 20:34:22  tng
00069   * Schema: SchemaValidator update
00070   *
00071   * Revision 1.11  2001/04/19 18:16:53  tng
00072   * Schema: SchemaValidator update, and use QName in Content Model
00073   *
00074   * Revision 1.10  2001/03/21 21:56:03  tng
00075   * Schema: Add Schema Grammar, Schema Validator, and split the DTDValidator into DTDValidator, DTDScanner, and DTDGrammar.
00076   *
00077   * Revision 1.9  2001/02/26 19:21:33  tng
00078   * Schema: add parameter prefix in findElem and findAttr.
00079   *
00080   * Revision 1.8  2000/12/14 18:49:58  tng
00081   * Fix API document generation warning: "Warning: end of member group without matching begin"
00082   *
00083   * Revision 1.7  2000/08/09 22:09:09  jpolast
00084   * added const XMLCh* getURIText()
00085   * allows parsers to use const URIs instead of appending
00086   * to a XMLBuffer.
00087   *
00088   * Revision 1.6  2000/03/02 19:54:25  roddey
00089   * This checkin includes many changes done while waiting for the
00090   * 1.1.0 code to be finished. I can't list them all here, but a list is
00091   * available elsewhere.
00092   *
00093   * Revision 1.5  2000/02/24 20:00:24  abagchi
00094   * Swat for removing Log from API docs
00095   *
00096   * Revision 1.4  2000/02/15 23:59:07  roddey
00097   * More updated documentation of Framework classes.
00098   *
00099   * Revision 1.3  2000/02/15 01:21:31  roddey
00100   * Some initial documentation improvements. More to come...
00101   *
00102   * Revision 1.2  2000/02/06 07:47:49  rahulj
00103   * Year 2K copyright swat.
00104   *
00105   * Revision 1.1.1.1  1999/11/09 01:08:38  twl
00106   * Initial checkin
00107   *
00108   * Revision 1.4  1999/11/08 20:44:41  rahul
00109   * Swat for adding in Product name and CVS comment log variable.
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     //  Constructors are hidden, just the virtual destructor is exposed
00153     // -----------------------------------------------------------------------
00154 
00157 
00162     virtual ~XMLValidator()
00163     {
00164     }
00166 
00167 
00168     // -----------------------------------------------------------------------
00169     //  The virtual validator interface
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     //  Virtual DTD handler interface.
00298     // -----------------------------------------------------------------------
00299 
00302 
00307     virtual bool handlesDTD() const = 0;
00308 
00309     // -----------------------------------------------------------------------
00310     //  Virtual Schema handler interface.
00311     // -----------------------------------------------------------------------
00312 
00314 
00319     virtual bool handlesSchema() const = 0;
00320 
00322 
00323     // -----------------------------------------------------------------------
00324     //  Setter methods
00325     //
00326     //  setScannerInfo() is called by the scanner to tell the validator
00327     //  about the stuff it needs to have access to.
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     //  Error emitter methods
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     //  Notification that lazy data has been deleted
00416     // -----------------------------------------------------------------------
00417     static void reinitXMLValidator();   
00418 
00419 protected :
00420     // -----------------------------------------------------------------------
00421     //  Hidden constructors
00422     // -----------------------------------------------------------------------
00423     XMLValidator
00424     (
00425         XMLErrorReporter* const errReporter = 0
00426     );
00427 
00428 
00429     // -----------------------------------------------------------------------
00430     //  Protected getters
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     //  Unimplemented Constructors and Operators
00443     // -----------------------------------------------------------------------
00444     XMLValidator(const XMLValidator&);
00445     void operator=(const XMLValidator&);
00446 
00447 
00448     // -----------------------------------------------------------------------
00449     //  Private data members
00450     //
00451     //  fErrorReporter
00452     //      The error reporter we are to use, if any.
00453     //
00454     // -----------------------------------------------------------------------
00455     XMLBufferMgr*       fBufMgr;
00456     XMLErrorReporter*   fErrorReporter;
00457     ReaderMgr*          fReaderMgr;
00458     XMLScanner*         fScanner;
00459 
00460 };
00461 
00462 
00463 // -----------------------------------------------------------------------
00464 //  Setter methods
00465 // -----------------------------------------------------------------------
00466 inline void
00467 XMLValidator::setScannerInfo(XMLScanner* const      owningScanner
00468                             , ReaderMgr* const      readerMgr
00469                             , XMLBufferMgr* const   bufMgr)
00470 {
00471     // We don't own any of these, we just reference them
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 //  XMLValidator: Protected getter
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


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