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.9 2001/06/19 16:44:31 tng
00060 * Add installAdvDocHandler to SAX2XMLReader as the code is there already.
00061 *
00062 * Revision 1.8 2001/06/04 21:03:07 jberry
00063 * Add pure virtual getErrorCount to SAX2XMLReader interface.
00064 *
00065 * Revision 1.7 2001/05/11 13:26:25 tng
00066 * Copyright update.
00067 *
00068 * Revision 1.6 2001/02/15 15:56:31 tng
00069 * Schema: Add setSchemaValidation and getSchemaValidation for DOMParser and SAXParser.
00070 * Add feature "http://apache.org/xml/features/validation/schema" for SAX2XMLReader.
00071 * New data field fSchemaValidation in XMLScanner as the flag.
00072 *
00073 * Revision 1.5 2001/01/12 21:22:00 tng
00074 * Documentation Enhancement: Add list of SAX2 feature strings that are supported.
00075 *
00076 * Revision 1.4 2000/12/22 15:17:04 tng
00077 * SAX2-ext's LexicalHandler support added by David Bertoni.
00078 *
00079 * Revision 1.3 2000/08/09 22:19:29 jpolast
00080 * many conformance & stability changes:
00081 * - ContentHandler::resetDocument() removed
00082 * - attrs param of ContentHandler::startDocument() made const
00083 * - SAXExceptions thrown now have msgs
00084 * - removed duplicate function signatures that had 'const'
00085 * [ eg: getContentHander() ]
00086 * - changed getFeature and getProperty to apply to const objs
00087 * - setProperty now takes a void* instead of const void*
00088 * - SAX2XMLReaderImpl does not inherit from SAXParser anymore
00089 * - Reuse Validator (http://apache.org/xml/features/reuse-validator) implemented
00090 * - Features & Properties now read-only during parse
00091 *
00092 * Revision 1.2 2000/08/07 18:21:27 jpolast
00093 * change module to
00094 *
00095 * Revision 1.1 2000/08/02 18:02:35 jpolast
00096 * initial checkin of sax2 implementation
00097 * submitted by Simon Fell (simon@fell.com)
00098 * and Joe Polastre (jpolast@apache.org)
00099 *
00100 *
00101 */
00102
00103 #ifndef SAX2XMLReader_HPP
00104 #define SAX2XMLReader_HPP
00105
00106 #include <util/XercesDefs.hpp>
00107 #include <util/XMLUniDefs.hpp>
00108 #include <framework/XMLValidator.hpp>
00109
00110 class ContentHandler ;
00111 class DTDHandler;
00112 class EntityResolver;
00113 class ErrorHandler;
00114 class InputSource;
00115 class LexicalHandler;
00116 class XMLDocumentHandler;
00117
00118 class SAX2XMLReader
00119 {
00120 public:
00121
00122 enum ValSchemes
00123 {
00124 Val_Never
00125 , Val_Always
00126 , Val_Auto
00127 };
00128
00130 // -----------------------------------------------------------------------
00131 // Constructors and Destructor
00132 // -----------------------------------------------------------------------
00134 /** The default constructor */
00135SAX2XMLReader()
00136 {
00137 }
00139 virtual ~SAX2XMLReader()
00140 {
00141 }
00143
00144 //-----------------------------------------------------------------------
00145 // The XMLReader interface
00146 //-----------------------------------------------------------------------
00149
00160 virtual int getErrorCount() const = 0 ;
00161
00167 virtual ContentHandler* getContentHandler() const = 0 ;
00168
00174 virtual DTDHandler* getDTDHandler() const = 0;
00175
00181 virtual EntityResolver* getEntityResolver() const = 0 ;
00182
00188 virtual ErrorHandler* getErrorHandler() const = 0 ;
00189
00195 virtual LexicalHandler* getLexicalHandler() const = 0 ;
00196
00204 virtual bool getFeature(const XMLCh* const name) const = 0;
00205
00213 virtual void* getProperty(const XMLCh* const name) const = 0 ;
00214
00215
00241 virtual void parse
00242 (
00243 const InputSource& source
00244 ) = 0;
00245
00265 virtual void parse
00266 (
00267 const XMLCh* const systemId
00268 ) = 0;
00269
00289 virtual void parse
00290 (
00291 const char* const systemId
00292 ) = 0;
00293
00310 virtual void setContentHandler(ContentHandler* const handler) = 0;
00311
00327 virtual void setDTDHandler(DTDHandler* const handler) = 0;
00328
00345 virtual void setEntityResolver(EntityResolver* const resolver) = 0;
00346
00364 virtual void setErrorHandler(ErrorHandler* const handler) = 0;
00365
00382 virtual void setLexicalHandler(LexicalHandler* const handler) = 0;
00383
00401 virtual void setFeature(const XMLCh* const name, const bool value) = 0;
00402
00414 virtual void setProperty(const XMLCh* const name, void* value) = 0 ;
00415
00417
00418 // -----------------------------------------------------------------------
00419 // Validator: setters and getters
00420 // -----------------------------------------------------------------------
00423
00432 virtual void setValidator(XMLValidator* valueToAdopt) = 0;
00433
00444 virtual XMLValidator* getValidator() const = 0;
00446
00447 // -----------------------------------------------------------------------
00448 // Advanced document handler list maintenance methods
00449 // -----------------------------------------------------------------------
00450
00453
00466 virtual void installAdvDocHandler(XMLDocumentHandler* const toInstall) = 0;
00467
00477 virtual bool removeAdvDocHandler(XMLDocumentHandler* const toRemove) = 0;
00479
00480 private :
00481 /* The copy constructor, you cannot call this directly */
00482 SAX2XMLReader(const SAX2XMLReader&);
00483
00484 /* The assignment operator, you cannot call this directly */
00485 void operator=(const SAX2XMLReader&);
00486
00487 };
00488
00489 #endif