| /* |
| * The Apache Software License, Version 1.1 |
| * |
| * Copyright (c) 1999 The Apache Software Foundation. All rights |
| * reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * |
| * 1. Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * |
| * 2. Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in |
| * the documentation and/or other materials provided with the |
| * distribution. |
| * |
| * 3. The end-user documentation included with the redistribution, |
| * if any, must include the following acknowledgment: |
| * "This product includes software developed by the |
| * Apache Software Foundation (http://www.apache.org/)." |
| * Alternately, this acknowledgment may appear in the software itself, |
| * if and wherever such third-party acknowledgments normally appear. |
| * |
| * 4. The names "Xerces" and "Apache Software Foundation" must |
| * not be used to endorse or promote products derived from this |
| * software without prior written permission. For written |
| * permission, please contact apache\@apache.org. |
| * |
| * 5. Products derived from this software may not be called "Apache", |
| * nor may "Apache" appear in their name, without prior written |
| * permission of the Apache Software Foundation. |
| * |
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED |
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR |
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF |
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT |
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
| * SUCH DAMAGE. |
| * ==================================================================== |
| * |
| * This software consists of voluntary contributions made by many |
| * individuals on behalf of the Apache Software Foundation, and was |
| * originally based on software copyright (c) 1999, International |
| * Business Machines, Inc., http://www.ibm.com . For more information |
| * on the Apache Software Foundation, please see |
| * <http://www.apache.org/>. |
| */ |
| |
| /** |
| * $Log$ |
| * Revision 1.1 1999/11/09 01:07:46 twl |
| * Initial revision |
| * |
| * Revision 1.3 1999/11/08 20:45:02 rahul |
| * Swat for adding in Product name and CVS comment log variable. |
| * |
| */ |
| |
| #ifndef PARSER_HPP |
| #define PARSER_HPP |
| |
| class DTDHandler; |
| class EntityResolver; |
| class DocumentHandler; |
| class ErrorHandler; |
| class InputSource; |
| |
| /** |
| * Basic interface for SAX (Simple API for XML) parsers. |
| * |
| * All SAX parsers must implement this basic interface: it allows |
| * applications to register handlers for different types of events |
| * and to initiate a parse from a URI, or a character stream. |
| * |
| * All SAX parsers must also implement a zero-argument constructor |
| * (though other constructors are also allowed). |
| * |
| * SAX parsers are reusable but not re-entrant: the application |
| * may reuse a parser object (possibly with a different input source) |
| * once the first parse has completed successfully, but it may not |
| * invoke the parse() methods recursively within a parse. |
| * |
| * $Log$ |
| * Revision 1.1 1999/11/09 01:07:46 twl |
| * Initial revision |
| * |
| * Revision 1.3 1999/11/08 20:45:02 rahul |
| * Swat for adding in Product name and CVS comment log variable. |
| * |
| * @see EntityResolver#EntityResolver |
| * @see DTDHandler#DTDHandler |
| * @see DocumentHandler#DocumentHandler |
| * @see ErrorHandler#ErrorHandler |
| * @see HandlerBase#HandlerBase |
| * @see InputSource#InputSource |
| */ |
| |
| #include <util/XML4CDefs.hpp> |
| |
| class SAX_EXPORT Parser |
| { |
| public: |
| /** @name Constructors and Destructor */ |
| // ----------------------------------------------------------------------- |
| // Constructors and Destructor |
| // ----------------------------------------------------------------------- |
| //@{ |
| /** The default constructor */ |
| Parser() |
| { |
| } |
| /** The destructor */ |
| virtual ~Parser() |
| { |
| } |
| //@} |
| |
| //----------------------------------------------------------------------- |
| // The parser interface |
| //----------------------------------------------------------------------- |
| /** @name The parser interfaces */ |
| //@{ |
| /** |
| * Allow an application to register a custom entity resolver. |
| * |
| * If the application does not register an entity resolver, the |
| * SAX parser will resolve system identifiers and open connections |
| * to entities itself (this is the default behaviour implemented in |
| * HandlerBase). |
| * |
| * Applications may register a new or different entity resolver |
| * in the middle of a parse, and the SAX parser must begin using |
| * the new resolver immediately. |
| * |
| * @param resolver The object for resolving entities. |
| * @see EntityResolver#EntityResolver |
| * @see HandlerBase#HandlerBase |
| */ |
| virtual void setEntityResolver(EntityResolver* const resolver) = 0; |
| |
| /** |
| * Allow an application to register a DTD event handler. |
| * |
| * If the application does not register a DTD handler, all DTD |
| * events reported by the SAX parser will be silently ignored (this |
| * is the default behaviour implemented by HandlerBase). |
| * |
| * Applications may register a new or different handler in the middle |
| * of a parse, and the SAX parser must begin using the new handler |
| * immediately. |
| * |
| * @param handler The DTD handler. |
| * @see DTDHandler#DTDHandler |
| * @see HandlerBase#HandlerBase |
| */ |
| virtual void setDTDHandler(DTDHandler* const handler) = 0; |
| |
| /** |
| * Allow an application to register a document event handler. |
| * |
| * If the application does not register a document handler, all |
| * document events reported by the SAX parser will be silently |
| * ignored (this is the default behaviour implemented by |
| * HandlerBase). |
| * |
| * Applications may register a new or different handler in the |
| * middle of a parse, and the SAX parser must begin using the new |
| * handler immediately. |
| * |
| * @param handler The document handler. |
| * @see DocumentHandler#DocumentHandler |
| * @see HandlerBase#HandlerBase |
| */ |
| virtual void setDocumentHandler(DocumentHandler* const handler) = 0; |
| |
| /** |
| * Allow an application to register an error event handler. |
| * |
| * If the application does not register an error event handler, |
| * all error events reported by the SAX parser will be silently |
| * ignored, except for fatalError, which will throw a SAXException |
| * (this is the default behaviour implemented by HandlerBase). |
| * |
| * Applications may register a new or different handler in the |
| * middle of a parse, and the SAX parser must begin using the new |
| * handler immediately. |
| * |
| * @param handler The error handler. |
| * @see ErrorHandler#ErrorHandler |
| * @see SAXException#SAXException |
| * @see HandlerBase#HandlerBase |
| */ |
| virtual void setErrorHandler(ErrorHandler* const handler) = 0; |
| |
| /** |
| * Parse an XML document. |
| * |
| * The application can use this method to instruct the SAX parser |
| * to begin parsing an XML document from any valid input |
| * source (a character stream, a byte stream, or a URI). |
| * |
| * Applications may not invoke this method while a parse is in |
| * progress (they should create a new Parser instead for each |
| * additional XML document). Once a parse is complete, an |
| * application may reuse the same Parser object, possibly with a |
| * different input source. |
| * |
| * @param source The input source for the top-level of the |
| * XML document. |
| * @param reuseValidator Indicates whether the validator should be |
| * reused, ignoring any external subset. If true, there |
| * cannot be any internal subset. |
| * @exception SAXException Any SAX exception, possibly |
| * wrapping another exception. |
| * @exception XMLException An exception from the parser or client |
| * handler code. |
| * @see InputSource#InputSource |
| * @see #setEntityResolver |
| * @see #setDTDHandler |
| * @see #setDocumentHandler |
| * @see #setErrorHandler |
| */ |
| virtual void parse |
| ( |
| const InputSource& source |
| , const bool reuseValidator = false |
| ) = 0; |
| |
| /** |
| * Parse an XML document from a system identifier (URI). |
| * |
| * This method is a shortcut for the common case of reading a |
| * document from a system identifier. It is the exact equivalent |
| * of the following: |
| * |
| * parse(new URLInputSource(systemId)); |
| * |
| * If the system identifier is a URL, it must be fully resolved |
| * by the application before it is passed to the parser. |
| * |
| * @param systemId The system identifier (URI). |
| * @param reuseValidator Indicates whether the validator should be |
| * reused, ignoring any external subset. If true, there |
| * cannot be any internal subset. |
| * @exception SAXException Any SAX exception, possibly |
| * wrapping another exception. |
| * @exception XMLException An exception from the parser or client |
| * handler code. |
| * @see #parse(InputSource) |
| */ |
| virtual void parse |
| ( |
| const XMLCh* const systemId |
| , const bool reuseValidator = false |
| ) = 0; |
| |
| virtual void parse |
| ( |
| const char* const systemId |
| , const bool reuseValidator = false |
| ) = 0; |
| //@} |
| |
| |
| private : |
| /** @name Unimplemented constructors and operators */ |
| //@{ |
| /** The copy constructor, you cannot call this directly */ |
| Parser(const Parser&); |
| |
| /** The assignment operator, you cannot call this directly */ |
| void operator=(const Parser&); |
| //@} |
| }; |
| |
| #endif |