blob: c6ccbed062db7100d8c07be13674333fe997b958 [file] [log] [blame]
/*
* Copyright 1999-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#if !defined(XALANSOURCETREEPARSERLIAISON_HEADER_GUARD_1357924680)
#define XALANSOURCETREEPARSERLIAISON_HEADER_GUARD_1357924680
// Base include file. Must be first.
#include <xalanc/XalanSourceTree/XalanSourceTreeDefinitions.hpp>
#include <xalanc/Include/XalanMap.hpp>
#include <xalanc/XercesParserLiaison/XercesDOMSupport.hpp>
#include <xalanc/XercesParserLiaison/XercesParserLiaison.hpp>
XALAN_DECLARE_XERCES_CLASS(ContentHandler)
XALAN_DECLARE_XERCES_CLASS(DTDHandler)
XALAN_DECLARE_XERCES_CLASS(LexicalHandler)
XALAN_DECLARE_XERCES_CLASS(SAX2XMLReader)
XALAN_CPP_NAMESPACE_BEGIN
class XalanSourceTreeDOMSupport;
class XalanSourceTreeDocument;
typedef XERCES_CPP_NAMESPACE_QUALIFIER ContentHandler ContentHandlerType;
typedef XERCES_CPP_NAMESPACE_QUALIFIER DTDHandler DTDHandlerType;
typedef XERCES_CPP_NAMESPACE_QUALIFIER LexicalHandler LexicalHandlerType;
typedef XERCES_CPP_NAMESPACE_QUALIFIER SAX2XMLReader SAX2XMLReaderType;
class XALAN_XALANSOURCETREE_EXPORT XalanSourceTreeParserLiaison : public XMLParserLiaison
{
public:
/**
* Construct a XalanSourceTreeParserLiaison instance.
*
* @param theSupport instance of DOMSupport object
*
* @deprecated This constructor is deprecated. Use the next constructor instead.
*/
XalanSourceTreeParserLiaison(XalanSourceTreeDOMSupport& theSupport);
/**
* Construct a XalanSourceTreeParserLiaison instance.
*/
XalanSourceTreeParserLiaison();
virtual
~XalanSourceTreeParserLiaison();
/**
* Get the value of the flag which determines if the data of all
* text nodes are pooled, or just whitespace text nodes.
*
* @return true if the data of all text nodes are pooled, false otherwise.
*/
bool
getPoolAllText() const
{
return m_poolAllText;
}
/**
* Set the value of the flag which determines if the data of all
* text nodes are pooled, or just whitespace text nodes.
*
* @param fValue The new value for the flag.
*/
void
setPoolAllText(bool fValue)
{
m_poolAllText = fValue;
}
// These interfaces are inherited from XMLParserLiaison...
virtual void
reset();
virtual ExecutionContext*
getExecutionContext() const;
virtual void
setExecutionContext(ExecutionContext& theContext);
virtual XalanDocument*
parseXMLStream(
const InputSourceType& reader,
const XalanDOMString& identifier = XalanDOMString());
virtual void
parseXMLStream(
const InputSourceType& inputSource,
DocumentHandlerType& handler,
const XalanDOMString& identifier = XalanDOMString());
virtual void
destroyDocument(XalanDocument* theDocument);
virtual int
getIndent() const;
virtual void
setIndent(int i);
virtual bool
getUseValidation() const;
virtual void
setUseValidation(bool b);
virtual const XalanDOMString
getParserDescription() const;
virtual EntityResolverType*
getEntityResolver() const;
virtual void
setEntityResolver(EntityResolverType* resolver);
// These interfaces are new to XalanSourceTreeParserLiaison...
/**
* Parse using a SAX2 ContentHandler, DTDHandler, and LexicalHandler.
*
* @param theInputSource The input source for the parser
* @param theContentHandler The ContentHandler to use
* @param theDTDHandler The DTDHandler to use. May be null.
* @param theLexicalHandler The LexicalHandler to use. May be null.
* @param identifier Used for error reporting only.
*/
virtual void
parseXMLStream(
const InputSourceType& theInputSource,
ContentHandlerType& theContentHandler,
DTDHandlerType* theDTDHandler = 0,
LexicalHandlerType* theLexicalHandler = 0,
const XalanDOMString& theIdentifier = XalanDOMString());
virtual DOMDocument_Type*
createDOMFactory();
virtual void
destroyDocument(DOMDocument_Type* theDocument);
/** Get the 'include ignorable whitespace' flag.
*
* This method returns the state of the parser's include ignorable
* whitespace flag.
*
* @return 'true' if the include ignorable whitespace flag is set on
* the parser, 'false' otherwise.
*
* @see #setIncludeIgnorableWhitespace
*/
virtual bool
getIncludeIgnorableWhitespace() const;
/** Set the 'include ignorable whitespace' flag
*
* This method allows the user to specify whether a validating parser
* should include ignorable whitespaces as text nodes. It has no effect
* on non-validating parsers which always include non-markup text.
* <p>When set to true (also the default), ignorable whitespaces will be
* added to the DOM tree as text nodes. The method
* DOM_Text::isIgnorableWhitespace() will return true for those text
* nodes only.
* <p>When set to false, all ignorable whitespace will be discarded and
* no text node is added to the DOM tree. Note: applications intended
* to process the "xml:space" attribute should not set this flag to false.
*
* @param include The new state of the include ignorable whitespace
* flag.
*
* @see #getIncludeIgnorableWhitespace
*/
virtual void
setIncludeIgnorableWhitespace(bool include);
/**
* This method returns the installed error handler.
*
* @return A pointer to the installed error handler object.
*/
virtual ErrorHandlerType*
getErrorHandler() const;
/**
* This method installs the user specified error handler on
* the parser.
*
* @param handler A pointer to the error handler to be called
* when the parser comes across 'error' events
* as per the SAX specification.
*
* @see Parser#setErrorHandler
*/
virtual void
setErrorHandler(ErrorHandlerType* handler);
/**
* This method returns the state of the parser's namespace
* handling capability.
*
* @return true, if the parser is currently configured to
* understand namespaces, false otherwise.
*
* @see #setDoNamespaces
*/
virtual bool
getDoNamespaces() const;
/**
* This method allows users to enable or disable the parser's
* namespace processing. When set to true, parser starts enforcing
* all the constraints / rules specified by the NameSpace
* specification.
*
* <p>The parser's default state is: false.</p>
*
* <p>This flag is ignored by the underlying scanner if the installed
* validator indicates that namespace constraints should be
* enforced.</p>
*
* @param newState The value specifying whether NameSpace rules should
* be enforced or not.
*
* @see #getDoNamespaces
*/
virtual void
setDoNamespaces(bool newState);
/**
* This method returns the state of the parser's
* exit-on-First-Fatal-Error flag.
*
* @return true, if the parser is currently configured to
* exit on the first fatal error, false otherwise.
*
* @see #setExitOnFirstFatalError
*/
virtual bool
getExitOnFirstFatalError() const;
/**
* This method allows users to set the parser's behaviour when it
* encounters the first fatal error. If set to true, the parser
* will exit at the first fatal error. If false, then it will
* report the error and continue processing.
*
* <p>The default value is 'true' and the parser exits on the
* first fatal error.</p>
*
* @param newState The value specifying whether the parser should
* continue or exit when it encounters the first
* fatal error.
*
* @see #getExitOnFirstFatalError
*/
virtual void
setExitOnFirstFatalError(bool newState);
/**
* This method returns the location for an external schema document
* for parsing.
*
* @return A string representing the location of the external schema document
*/
virtual const XalanDOMChar*
getExternalSchemaLocation() const;
/**
* This method sets the location for an external schema document
* for parsing.
*
* @param location A string representing the location of the external schema document
*/
virtual void
setExternalSchemaLocation(const XalanDOMChar* location);
/**
* This method returns the location for an external schema document
* for parsing.
*
* @return A string representing the location of the external schema document
*/
virtual const XalanDOMChar*
getExternalNoNamespaceSchemaLocation() const;
/**
* This method sets the location for an external schema document
* for parsing.
*
* @param location A string representing the location of the external schema document
*/
virtual void
setExternalNoNamespaceSchemaLocation(const XalanDOMChar* location);
/**
* Map a pointer to a XalanDocument instance to its implementation
* class pointer. Normally, you should have no reason for doing
* this. The liaison will return a null pointer if it did not
* create the instance passed.
*
* @param theDocument A pointer to a XalanDocument instance.
* @return A pointer to the XalanSourceTreeDocument instance.
*/
XalanSourceTreeDocument*
mapDocument(const XalanDocument* theDocument) const;
/**
* Create a XalanSourceTreeDocument instance.
*
* @return A pointer to the XalanSourceTreeDocument instance.
*/
XalanSourceTreeDocument*
createXalanSourceTreeDocument();
typedef XalanMap<const XalanDocument*,
XalanSourceTreeDocument*> DocumentMapType;
protected:
virtual SAX2XMLReaderType*
createReader();
private:
// Not implemented...
XalanSourceTreeParserLiaison(const XalanSourceTreeParserLiaison&);
XalanSourceTreeParserLiaison&
operator=(const XalanSourceTreeParserLiaison&);
// Data members...
XercesParserLiaison m_xercesParserLiaison;
DocumentMapType m_documentMap;
bool m_poolAllText;
static const XalanDOMChar s_validationString[];
static const XalanDOMChar s_dynamicValidationString[];
static const XalanDOMChar s_namespacesString[];
static const XalanDOMChar s_namespacePrefixesString[];
static const XalanDOMChar s_schemaString[];
static const XalanDOMChar s_externalSchemaLocationString[];
static const XalanDOMChar s_externalNoNamespaceSchemaLocationString[];
};
XALAN_CPP_NAMESPACE_END
#endif // XALANSOURCETREEPARSERLIAISON_HEADER_GUARD_1357924680