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.8 2001/06/04 21:03:07 jberry
00060 * Add pure virtual getErrorCount to SAX2XMLReader interface.
00061 *
00062 * Revision 1.7 2001/05/11 13:26:25 tng
00063 * Copyright update.
00064 *
00065 * Revision 1.6 2001/02/15 15:56:31 tng
00066 * Schema: Add setSchemaValidation and getSchemaValidation for DOMParser and SAXParser.
00067 * Add feature "http://apache.org/xml/features/validation/schema" for SAX2XMLReader.
00068 * New data field fSchemaValidation in XMLScanner as the flag.
00069 *
00070 * Revision 1.5 2001/01/12 21:22:00 tng
00071 * Documentation Enhancement: Add list of SAX2 feature strings that are supported.
00072 *
00073 * Revision 1.4 2000/12/22 15:17:04 tng
00074 * SAX2-ext's LexicalHandler support added by David Bertoni.
00075 *
00076 * Revision 1.3 2000/08/09 22:19:29 jpolast
00077 * many conformance & stability changes:
00078 * - ContentHandler::resetDocument() removed
00079 * - attrs param of ContentHandler::startDocument() made const
00080 * - SAXExceptions thrown now have msgs
00081 * - removed duplicate function signatures that had 'const'
00082 * [ eg: getContentHander() ]
00083 * - changed getFeature and getProperty to apply to const objs
00084 * - setProperty now takes a void* instead of const void*
00085 * - SAX2XMLReaderImpl does not inherit from SAXParser anymore
00086 * - Reuse Validator (http://apache.org/xml/features/reuse-validator) implemented
00087 * - Features & Properties now read-only during parse
00088 *
00089 * Revision 1.2 2000/08/07 18:21:27 jpolast
00090 * change module to
00091 *
00092 * Revision 1.1 2000/08/02 18:02:35 jpolast
00093 * initial checkin of sax2 implementation
00094 * submitted by Simon Fell (simon@fell.com)
00095 * and Joe Polastre (jpolast@apache.org)
00096 *
00097 *
00098 */
00099
00100 #ifndef SAX2XMLReader_HPP
00101 #define SAX2XMLReader_HPP
00102
00103 #include <util/XercesDefs.hpp>
00104 #include <util/XMLUniDefs.hpp>
00105 #include <framework/XMLValidator.hpp>
00106
00107 class ContentHandler ;
00108 class DTDHandler;
00109 class EntityResolver;
00110 class ErrorHandler;
00111 class InputSource;
00112 class LexicalHandler;
00113
00114 class SAX2XMLReader
00115 {
00116 public:
00117
00118 enum ValSchemes
00119 {
00120 Val_Never
00121 , Val_Always
00122 , Val_Auto
00123 };
00124
00126 // -----------------------------------------------------------------------
00127 // Constructors and Destructor
00128 // -----------------------------------------------------------------------
00130 /** The default constructor */
00131SAX2XMLReader()
00132 {
00133 }
00135 virtual ~SAX2XMLReader()
00136 {
00137 }
00139
00140 //-----------------------------------------------------------------------
00141 // The XMLReader interface
00142 //-----------------------------------------------------------------------
00145
00156 virtual int getErrorCount() const = 0 ;
00157
00163 virtual ContentHandler* getContentHandler() const = 0 ;
00164
00170 virtual DTDHandler* getDTDHandler() const = 0;
00171
00177 virtual EntityResolver* getEntityResolver() const = 0 ;
00178
00184 virtual ErrorHandler* getErrorHandler() const = 0 ;
00185
00191 virtual LexicalHandler* getLexicalHandler() const = 0 ;
00192
00200 virtual bool getFeature(const XMLCh* const name) const = 0;
00201
00209 virtual void* getProperty(const XMLCh* const name) const = 0 ;
00210
00211
00237 virtual void parse
00238 (
00239 const InputSource& source
00240 ) = 0;
00241
00261 virtual void parse
00262 (
00263 const XMLCh* const systemId
00264 ) = 0;
00265
00285 virtual void parse
00286 (
00287 const char* const systemId
00288 ) = 0;
00289
00306 virtual void setContentHandler(ContentHandler* const handler) = 0;
00307
00323 virtual void setDTDHandler(DTDHandler* const handler) = 0;
00324
00341 virtual void setEntityResolver(EntityResolver* const resolver) = 0;
00342
00360 virtual void setErrorHandler(ErrorHandler* const handler) = 0;
00361
00378 virtual void setLexicalHandler(LexicalHandler* const handler) = 0;
00379
00397 virtual void setFeature(const XMLCh* const name, const bool value) = 0;
00398
00410 virtual void setProperty(const XMLCh* const name, void* value) = 0 ;
00411
00413
00414 // -----------------------------------------------------------------------
00415 // Validator: setters and getters
00416 // -----------------------------------------------------------------------
00419
00428 virtual void setValidator(XMLValidator* valueToAdopt) = 0;
00429
00440 virtual XMLValidator* getValidator() const = 0;
00442
00443 private :
00444 /* The copy constructor, you cannot call this directly */
00445 SAX2XMLReader(const SAX2XMLReader&);
00446
00447 /* The assignment operator, you cannot call this directly */
00448 void operator=(const SAX2XMLReader&);
00449
00450 };
00451
00452 #endif