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: SAX2XMLReader.hpp,v $
00059 * Revision 1.10 2001/06/27 17:40:16 knoaman
00060 * Fix for bug #2353.
00061 *
00062 * Revision 1.9 2001/06/19 16:44:31 tng
00063 * Add installAdvDocHandler to SAX2XMLReader as the code is there already.
00064 *
00065 * Revision 1.8 2001/06/04 21:03:07 jberry
00066 * Add pure virtual getErrorCount to SAX2XMLReader interface.
00067 *
00068 * Revision 1.7 2001/05/11 13:26:25 tng
00069 * Copyright update.
00070 *
00071 * Revision 1.6 2001/02/15 15:56:31 tng
00072 * Schema: Add setSchemaValidation and getSchemaValidation for DOMParser and SAXParser.
00073 * Add feature "http://apache.org/xml/features/validation/schema" for SAX2XMLReader.
00074 * New data field fSchemaValidation in XMLScanner as the flag.
00075 *
00076 * Revision 1.5 2001/01/12 21:22:00 tng
00077 * Documentation Enhancement: Add list of SAX2 feature strings that are supported.
00078 *
00079 * Revision 1.4 2000/12/22 15:17:04 tng
00080 * SAX2-ext's LexicalHandler support added by David Bertoni.
00081 *
00082 * Revision 1.3 2000/08/09 22:19:29 jpolast
00083 * many conformance & stability changes:
00084 * - ContentHandler::resetDocument() removed
00085 * - attrs param of ContentHandler::startDocument() made const
00086 * - SAXExceptions thrown now have msgs
00087 * - removed duplicate function signatures that had 'const'
00088 * [ eg: getContentHander() ]
00089 * - changed getFeature and getProperty to apply to const objs
00090 * - setProperty now takes a void* instead of const void*
00091 * - SAX2XMLReaderImpl does not inherit from SAXParser anymore
00092 * - Reuse Validator (http://apache.org/xml/features/reuse-validator) implemented
00093 * - Features & Properties now read-only during parse
00094 *
00095 * Revision 1.2 2000/08/07 18:21:27 jpolast
00096 * change module to
00097 *
00098 * Revision 1.1 2000/08/02 18:02:35 jpolast
00099 * initial checkin of sax2 implementation
00100 * submitted by Simon Fell (simon@fell.com)
00101 * and Joe Polastre (jpolast@apache.org)
00102 *
00103 *
00104 */
00105
00106 #ifndef SAX2XMLReader_HPP
00107 #define SAX2XMLReader_HPP
00108
00109 #include <util/XercesDefs.hpp>
00110 #include <util/XMLUniDefs.hpp>
00111 #include <framework/XMLValidator.hpp>
00112
00113 class ContentHandler ;
00114 class DTDHandler;
00115 class EntityResolver;
00116 class ErrorHandler;
00117 class InputSource;
00118 class LexicalHandler;
00119 class XMLDocumentHandler;
00120
00121 class SAX2XMLReader
00122 {
00123 public:
00124
00125 enum ValSchemes
00126 {
00127 Val_Never
00128 , Val_Always
00129 , Val_Auto
00130 };
00131
00133 // -----------------------------------------------------------------------
00134 // Constructors and Destructor
00135 // -----------------------------------------------------------------------
00137 /** The default constructor */
00138SAX2XMLReader()
00139 {
00140 }
00142 virtual ~SAX2XMLReader()
00143 {
00144 }
00146
00147 //-----------------------------------------------------------------------
00148 // The XMLReader interface
00149 //-----------------------------------------------------------------------
00152
00163 virtual int getErrorCount() const = 0 ;
00164
00170 virtual ContentHandler* getContentHandler() const = 0 ;
00171
00177 virtual DTDHandler* getDTDHandler() const = 0;
00178
00184 virtual EntityResolver* getEntityResolver() const = 0 ;
00185
00191 virtual ErrorHandler* getErrorHandler() const = 0 ;
00192
00198 virtual LexicalHandler* getLexicalHandler() const = 0 ;
00199
00207 virtual bool getFeature(const XMLCh* const name) const = 0;
00208
00216 virtual void* getProperty(const XMLCh* const name) const = 0 ;
00217
00227 virtual bool getExitOnFirstFatalError() const = 0;
00228
00239 virtual bool getValidationConstraintFatal() const = 0;
00240
00241
00267 virtual void parse
00268 (
00269 const InputSource& source
00270 ) = 0;
00271
00291 virtual void parse
00292 (
00293 const XMLCh* const systemId
00294 ) = 0;
00295
00315 virtual void parse
00316 (
00317 const char* const systemId
00318 ) = 0;
00319
00336 virtual void setContentHandler(ContentHandler* const handler) = 0;
00337
00353 virtual void setDTDHandler(DTDHandler* const handler) = 0;
00354
00371 virtual void setEntityResolver(EntityResolver* const resolver) = 0;
00372
00390 virtual void setErrorHandler(ErrorHandler* const handler) = 0;
00391
00408 virtual void setLexicalHandler(LexicalHandler* const handler) = 0;
00409
00425 virtual void setExitOnFirstFatalError(const bool newState) = 0;
00426
00442 virtual void setValidationConstraintFatal(const bool newState) = 0;
00443
00461 virtual void setFeature(const XMLCh* const name, const bool value) = 0;
00462
00474 virtual void setProperty(const XMLCh* const name, void* value) = 0 ;
00475
00477
00478 // -----------------------------------------------------------------------
00479 // Validator: setters and getters
00480 // -----------------------------------------------------------------------
00483
00492 virtual void setValidator(XMLValidator* valueToAdopt) = 0;
00493
00504 virtual XMLValidator* getValidator() const = 0;
00506
00507 // -----------------------------------------------------------------------
00508 // Advanced document handler list maintenance methods
00509 // -----------------------------------------------------------------------
00510
00513
00526 virtual void installAdvDocHandler(XMLDocumentHandler* const toInstall) = 0;
00527
00537 virtual bool removeAdvDocHandler(XMLDocumentHandler* const toRemove) = 0;
00539
00540 private :
00541 /* The copy constructor, you cannot call this directly */
00542 SAX2XMLReader(const SAX2XMLReader&);
00543
00544 /* The assignment operator, you cannot call this directly */
00545 void operator=(const SAX2XMLReader&);
00546
00547 };
00548
00549 #endif