00001 /*
00002 * The Apache Software License, Version 1.1
00003 *
00004 * Copyright (c) 1999-2000 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.5 2001/01/12 21:22:00 tng
00060 * Documentation Enhancement: Add list of SAX2 feature strings that are supported.
00061 *
00062 * Revision 1.4 2000/12/22 15:17:04 tng
00063 * SAX2-ext's LexicalHandler support added by David Bertoni.
00064 *
00065 * Revision 1.3 2000/08/09 22:19:29 jpolast
00066 * many conformance & stability changes:
00067 * - ContentHandler::resetDocument() removed
00068 * - attrs param of ContentHandler::startDocument() made const
00069 * - SAXExceptions thrown now have msgs
00070 * - removed duplicate function signatures that had 'const'
00071 * [ eg: getContentHander() ]
00072 * - changed getFeature and getProperty to apply to const objs
00073 * - setProperty now takes a void* instead of const void*
00074 * - SAX2XMLReaderImpl does not inherit from SAXParser anymore
00075 * - Reuse Validator (http://apache.org/xml/features/reuse-validator) implemented
00076 * - Features & Properties now read-only during parse
00077 *
00078 * Revision 1.2 2000/08/07 18:21:27 jpolast
00079 * change module to
00080 *
00081 * Revision 1.1 2000/08/02 18:02:35 jpolast
00082 * initial checkin of sax2 implementation
00083 * submitted by Simon Fell (simon@fell.com)
00084 * and Joe Polastre (jpolast@apache.org)
00085 *
00086 *
00087 */
00088
00089 #ifndef SAX2XMLReader_HPP
00090 #define SAX2XMLReader_HPP
00091
00092 #include <util/XercesDefs.hpp>
00093 #include <util/XMLUniDefs.hpp>
00094 #include <framework/XMLValidator.hpp>
00095
00096 class ContentHandler ;
00097 class DTDHandler;
00098 class EntityResolver;
00099 class ErrorHandler;
00100 class InputSource;
00101 class LexicalHandler;
00102
00103 class SAX2XMLReader
00104 {
00105 public:
00106
00107 enum ValSchemes
00108 {
00109 Val_Never
00110 , Val_Always
00111 , Val_Auto
00112 };
00113
00115 // -----------------------------------------------------------------------
00116 // Constructors and Destructor
00117 // -----------------------------------------------------------------------
00119 /** The default constructor */
00120SAX2XMLReader()
00121 {
00122 }
00124 virtual ~SAX2XMLReader()
00125 {
00126 }
00128
00129 //-----------------------------------------------------------------------
00130 // The XMLReader interface
00131 //-----------------------------------------------------------------------
00134
00140 virtual ContentHandler* getContentHandler() const = 0 ;
00141
00147 virtual DTDHandler* getDTDHandler() const = 0;
00148
00154 virtual EntityResolver* getEntityResolver() const = 0 ;
00155
00161 virtual ErrorHandler* getErrorHandler() const = 0 ;
00162
00168 virtual LexicalHandler* getLexicalHandler() const = 0 ;
00169
00177 virtual bool getFeature(const XMLCh* const name) const = 0;
00178
00186 virtual void* getProperty(const XMLCh* const name) const = 0 ;
00187
00188
00214 virtual void parse
00215 (
00216 const InputSource& source
00217 ) = 0;
00218
00238 virtual void parse
00239 (
00240 const XMLCh* const systemId
00241 ) = 0;
00242
00262 virtual void parse
00263 (
00264 const char* const systemId
00265 ) = 0;
00266
00283 virtual void setContentHandler(ContentHandler* const handler) = 0;
00284
00300 virtual void setDTDHandler(DTDHandler* const handler) = 0;
00301
00318 virtual void setEntityResolver(EntityResolver* const resolver) = 0;
00319
00337 virtual void setErrorHandler(ErrorHandler* const handler) = 0;
00338
00355 virtual void setLexicalHandler(LexicalHandler* const handler) = 0;
00356
00373 virtual void setFeature(const XMLCh* const name, const bool value) = 0;
00374
00386 virtual void setProperty(const XMLCh* const name, void* value) = 0 ;
00387
00389
00390 // -----------------------------------------------------------------------
00391 // Validator: setters and getters
00392 // -----------------------------------------------------------------------
00395
00404 virtual void setValidator(XMLValidator* valueToAdopt) = 0;
00405
00416 virtual XMLValidator* getValidator() const = 0;
00418
00419 private :
00420 /* The copy constructor, you cannot call this directly */
00421 SAX2XMLReader(const SAX2XMLReader&);
00422
00423 /* The assignment operator, you cannot call this directly */
00424 void operator=(const SAX2XMLReader&);
00425
00426 };
00427
00428 #endif