blob: f28d472e7f643d9af8cd4e5264254abc2f3b1da8 [file] [log] [blame]
/*
* 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 "Xalan" 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/>.
*/
#if !defined(XMLPARSERLIAISON_HEADER_GUARD_1357924680)
#define XMLPARSERLIAISON_HEADER_GUARD_1357924680
// Base include file. Must be first.
#include <XMLSupport/XMLSupportDefinitions.hpp>
#include <XalanDOM/XalanDOMString.hpp>
#include <PlatformSupport/Resettable.hpp>
class DocumentHandler;
class EntityResolver;
class ErrorHandler;
class ExecutionContext;
class FormatterListener;
class InputSource;
class XalanAttr;
class XalanDocument;
class XalanElement;
class XALAN_XMLSUPPORT_EXPORT XMLParserLiaison : public Resettable
{
public:
typedef unsigned long DocumentNumberType;
XMLParserLiaison();
virtual
~XMLParserLiaison();
// These interfaces are inherited from Resettable...
virtual void
reset() = 0;
// These interfaces are new to XMLParserLiaison
virtual ExecutionContext*
getExecutionContext() const = 0;
virtual void
setExecutionContext(ExecutionContext& theContext) = 0;
/**
* Parse the text pointed at by the reader as XML, and return a DOM
* Document interface. It is recommended that you pass in some sort of
* recognizable name, such as the filename or URI, with which the reader
* can be recognized if the parse fails.
*
* The liaison owns the XalanDocument instance, and will delete it when
* when asked (see DestroyDocument()), or when the liaison is reset, or
* goes out of scope.
*
* @param reader stream that should hold valid XML
* @param identifier used for diagnostic purposes only, some sort of
* identification for error reporting, default an empty
* string
* @return DOM document created
*/
virtual XalanDocument*
parseXMLStream(
const InputSource& inputSource,
const XalanDOMString& identifier = XalanDOMString()) = 0;
/**
* Parse the text pointed at by the reader as XML. It is recommended that
* you pass in some sort of recognizable name, such as the filename or URI,
* with which the reader can be recognized if the parse fails.
*
* @param inputSource input source that should hold valid XML
* @param handler instance of a DocumentHandler
* @param identifier used for diagnostic purposes only, some sort of
* identification for error reporting, default an
* empty string
*/
virtual void
parseXMLStream(
const InputSource& inputSource,
DocumentHandler& handler,
const XalanDOMString& identifier = XalanDOMString()) = 0;
/**
* Create an empty DOM Document. Mainly used for creating an
* output document.
*
* The liaison owns the XalanDocument instance, and will delete it when
* when asked (see DestroyDocument()), or when the liaison is reset, or
* goes out of scope.
*
* @return DOM document created
*/
virtual XalanDocument*
createDocument() = 0;
/**
* Get a factory object required to create nodes in the result tree.
*
* The liaison owns the XalanDocument instance, and will delete it when
* when asked (see DestroyDocument()), or when the liaison is reset, or
* goes out of scope.
*
* @return A XalanDocument instance.
*/
virtual XalanDocument*
createDOMFactory() = 0;
/**
* Destroy the supplied XalanDocument instance. It must be an instance that
* was created by a previous call to createDocument() or getDOMFactory().
*
* @param theDocument The XalanDocument instance to destroy.
*/
virtual void
destroyDocument(XalanDocument* theDocument) = 0;
/**
* Get a unique number for identifying the document. The number need
* only be unique to the parser liaison instance.
*
* @return The unique number
*/
virtual DocumentNumberType
getNextDocumentNumber() = 0;
/**
* Get the amount to indent when indent-result="yes".
*
* @deprecated
*
* @return number of characters to indent
*/
virtual int
getIndent() const = 0;
/**
* Set the amount to indent when indent-result="yes".
*
* @deprecated
*
* @param i number of characters to indent
*/
virtual void
setIndent(int i) = 0;
/**
* Get whether or not validation will be performed. Validation is off by
* default.
*
* @return true to perform validation
*/
virtual bool
getUseValidation() const = 0;
/**
* If set to true, validation will be performed. Validation is off by
* default.
*
* @param b true to perform validation
*/
virtual void
setUseValidation(bool b) = 0;
/**
* Return a string suitable for telling the user what parser is being used.
*
* @return string describing parser
*/
virtual const XalanDOMString
getParserDescription() const = 0;
/**
* This method returns the installed entity resolver.
*
* @return The pointer to the installed entity resolver object.
*/
virtual EntityResolver*
getEntityResolver() const = 0;
/**
* This method installs the user specified entity resolver on the
* parser. It allows applications to trap and redirect calls to
* external entities.
*
* @param handler A pointer to the entity resolver to be called
* when the parser comes across references to
* entities in the XML file.
*/
virtual void
setEntityResolver(EntityResolver* resolver) = 0;
/**
* This method returns the installed error handler.
*
* @return The pointer to the installed error handler object.
*/
virtual ErrorHandler*
getErrorHandler() const = 0;
/**
* This method installs the user-specified error handler.
*
* @param handler A pointer to the error handler to be called upon error.
*/
virtual void
setErrorHandler(ErrorHandler* handler) = 0;
private:
// Not implemented
XMLParserLiaison(const XMLParserLiaison&);
XMLParserLiaison&
operator=(const XMLParserLiaison&);
};
#endif // XMLPARSERLIAISON_HEADER_GUARD_1357924680