Reordered files in all libs - now all includes are in "libname/include" dir - logical, isn't it? This should break compilation however.

This commit is contained in:
pelya
2010-10-26 14:43:54 +03:00
parent fc58bc53c0
commit 6b9b163689
520 changed files with 41 additions and 43205 deletions

View File

@@ -0,0 +1,313 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
*/
/*
* $Id: Attributes.hpp 932887 2010-04-11 13:04:59Z borisk $
*/
#if !defined(XERCESC_INCLUDE_GUARD_ATTRIBUTES_HPP)
#define XERCESC_INCLUDE_GUARD_ATTRIBUTES_HPP
#include <xercesc/util/XercesDefs.hpp>
XERCES_CPP_NAMESPACE_BEGIN
/**
* Interface for an element's attribute specifications.
*
* The SAX2 parser implements this interface and passes an instance
* to the SAX2 application as the last argument of each startElement
* event.
*
* The instance provided will return valid results only during the
* scope of the startElement invocation (to save it for future
* use, the application must make a copy: the AttributesImpl
* helper class provides a convenient constructor for doing so).
*
* An Attributes includes only attributes that have been
* specified or defaulted: \#IMPLIED attributes will not be included.
*
* There are two ways for the SAX application to obtain information
* from the Attributes. First, it can iterate through the entire
* list:
*
* <code>
* public void startElement (String uri, String localpart, String qName, Attributes atts) {<br>
* &nbsp;for (XMLSize_t i = 0; i < atts.getLength(); i++) {<br>
* &nbsp;&nbsp;String Qname = atts.getQName(i);<br>
* &nbsp;&nbsp;String URI = atts.getURI(i)<br>
* &nbsp;&nbsp;String local = atts.GetLocalName(i)<br>
* &nbsp;&nbsp;String type = atts.getType(i);<br>
* &nbsp;&nbsp;String value = atts.getValue(i);<br>
* &nbsp;&nbsp;[...]<br>
* &nbsp;}<br>
* }
* </code>
*
* (Note that the result of getLength() will be zero if there
* are no attributes.)
*
* As an alternative, the application can request the value or
* type of specific attributes:
*
* <code>
* public void startElement (String uri, String localpart, String qName, Attributes atts) {<br>
* &nbsp;String identifier = atts.getValue("id");<br>
* &nbsp;String label = atts.getValue("label");<br>
* &nbsp;[...]<br>
* }
* </code>
*
* The AttributesImpl helper class provides a convenience
* implementation for use by parser or application writers.
*
* @see Sax2DocumentHandler#startElement
* @see AttributesImpl#AttributesImpl
*/
class SAX2_EXPORT Attributes
{
public:
// -----------------------------------------------------------------------
// Constructors and Destructor
// -----------------------------------------------------------------------
/** @name Constructors and Destructor */
//@{
/** Default constructor */
Attributes()
{
}
/** Destructor */
virtual ~Attributes()
{
}
//@}
/** @name The virtual attribute list interface */
//@{
/**
* Return the number of attributes in this list.
*
* The SAX parser may provide attributes in any
* arbitrary order, regardless of the order in which they were
* declared or specified. The number of attributes may be
* zero.
*
* @return The number of attributes in the list.
*/
virtual XMLSize_t getLength() const = 0;
/**
* Return the namespace URI of an attribute in this list (by position).
*
* The QNames must be unique: the SAX parser shall not include the
* same attribute twice. Attributes without values (those declared
* \#IMPLIED without a value specified in the start tag) will be
* omitted from the list.
*
* @param index The index of the attribute in the list (starting at 0).
* @return The URI of the indexed attribute, or null
* if the index is out of range.
* @see #getLength
*/
virtual const XMLCh* getURI(const XMLSize_t index) const = 0;
/**
* Return the local name of an attribute in this list (by position).
*
* The QNames must be unique: the SAX parser shall not include the
* same attribute twice. Attributes without values (those declared
* \#IMPLIED without a value specified in the start tag) will be
* omitted from the list.
*
* @param index The index of the attribute in the list (starting at 0).
* @return The local name of the indexed attribute, or null
* if the index is out of range.
* @see #getLength
*/
virtual const XMLCh* getLocalName(const XMLSize_t index) const = 0;
/**
* Return the qName of an attribute in this list (by position).
*
* The QNames must be unique: the SAX parser shall not include the
* same attribute twice. Attributes without values (those declared
* \#IMPLIED without a value specified in the start tag) will be
* omitted from the list.
*
* @param index The index of the attribute in the list (starting at 0).
* @return The qName of the indexed attribute, or null
* if the index is out of range.
* @see #getLength
*/
virtual const XMLCh* getQName(const XMLSize_t index) const = 0;
/**
* Return the type of an attribute in the list (by position).
*
* The attribute type is one of the strings "CDATA", "ID",
* "IDREF", "IDREFS", "NMTOKEN", "NMTOKENS", "ENTITY", "ENTITIES",
* or "NOTATION" (always in upper case).
*
* If the parser has not read a declaration for the attribute,
* or if the parser does not report attribute types, then it must
* return the value "CDATA" as stated in the XML 1.0 Recommendation
* (clause 3.3.3, "Attribute-Value Normalization").
*
* For an enumerated attribute that is not a notation, the
* parser will report the type as "NMTOKEN".
*
* @param index The index of the attribute in the list (starting at 0).
* @return The attribute type as a string, or
* null if the index is out of range.
* @see #getLength
* @see #getType
*/
virtual const XMLCh* getType(const XMLSize_t index) const = 0;
/**
* Return the value of an attribute in the list (by position).
*
* If the attribute value is a list of tokens (IDREFS,
* ENTITIES, or NMTOKENS), the tokens will be concatenated
* into a single string separated by whitespace.
*
* @param index The index of the attribute in the list (starting at 0).
* @return The attribute value as a string, or
* null if the index is out of range.
* @see #getLength
* @see #getValue
*/
virtual const XMLCh* getValue(const XMLSize_t index) const = 0;
////////////////////////////////////////////////////////////////////
// Name-based query.
////////////////////////////////////////////////////////////////////
/**
* Look up the index of an attribute by Namespace name. Non-standard
* extension.
*
* @param uri The Namespace URI, or the empty string if
* the name has no Namespace URI.
* @param localPart The attribute's local name.
* @param index Reference to the variable where the index will be stored.
* @return true if the attribute is found and false otherwise.
*/
virtual bool getIndex(const XMLCh* const uri,
const XMLCh* const localPart,
XMLSize_t& index) const = 0 ;
/**
* Look up the index of an attribute by Namespace name.
*
* @param uri The Namespace URI, or the empty string if
* the name has no Namespace URI.
* @param localPart The attribute's local name.
* @return The index of the attribute, or -1 if it does not
* appear in the list.
*/
virtual int getIndex(const XMLCh* const uri,
const XMLCh* const localPart ) const = 0 ;
/**
* Look up the index of an attribute by XML 1.0 qualified name.
* Non-standard extension.
*
* @param qName The qualified (prefixed) name.
* @param index Reference to the variable where the index will be stored.
* @return true if the attribute is found and false otherwise.
*/
virtual bool getIndex(const XMLCh* const qName,
XMLSize_t& index) const = 0 ;
/**
* Look up the index of an attribute by XML 1.0 qualified name.
*
* @param qName The qualified (prefixed) name.
* @return The index of the attribute, or -1 if it does not
* appear in the list.
*/
virtual int getIndex(const XMLCh* const qName ) const = 0 ;
/**
* Look up an attribute's type by Namespace name.
*
* <p>See #getType for a description of the possible types.</p>
*
* @param uri The Namespace URI, or the empty String if the
* name has no Namespace URI.
* @param localPart The local name of the attribute.
* @return The attribute type as a string, or null if the
* attribute is not in the list or if Namespace
* processing is not being performed.
*/
virtual const XMLCh* getType(const XMLCh* const uri,
const XMLCh* const localPart ) const = 0 ;
/**
* Look up an attribute's type by XML 1.0 qualified name.
*
* <p>See #getType for a description of the possible types.</p>
*
* @param qName The XML 1.0 qualified name.
* @return The attribute type as a string, or null if the
* attribute is not in the list or if qualified names
* are not available.
*/
virtual const XMLCh* getType(const XMLCh* const qName) const = 0;
/**
* Look up an attribute's value by Namespace name.
*
* <p>See #getValue for a description of the possible values.</p>
*
* @param uri The Namespace URI, or the empty String if the
* name has no Namespace URI.
* @param localPart The local name of the attribute.
* @return The attribute value as a string, or null if the
* attribute is not in the list.
*/
virtual const XMLCh* getValue(const XMLCh* const uri, const XMLCh* const localPart ) const = 0 ;
/**
* Look up an attribute's value by XML 1.0 qualified name.
*
* <p>See #getValue for a description of the possible values.</p>
*
* @param qName The XML 1.0 qualified name.
* @return The attribute value as a string, or null if the
* attribute is not in the list or if qualified names
* are not available.
*/
virtual const XMLCh* getValue(const XMLCh* const qName) const = 0;
//@}
private :
/* Constructors and operators */
/* Copy constructor */
Attributes(const Attributes&);
/* Assignment operator */
Attributes& operator=(const Attributes&);
};
XERCES_CPP_NAMESPACE_END
#endif

View File

@@ -0,0 +1,340 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
*/
/*
* $Id: ContentHandler.hpp 932887 2010-04-11 13:04:59Z borisk $
*/
#if !defined(XERCESC_INCLUDE_GUARD_CONTENTHANDLER_HPP)
#define XERCESC_INCLUDE_GUARD_CONTENTHANDLER_HPP
#include <xercesc/util/XercesDefs.hpp>
XERCES_CPP_NAMESPACE_BEGIN
class Attributes;
class Locator;
/**
* Receive notification of general document events.
*
* <p>This is the main interface that most SAX2 applications
* implement: if the application needs to be informed of basic parsing
* events, it implements this interface and registers an instance with
* the SAX2 parser using the setDocumentHandler method. The parser
* uses the instance to report basic document-related events like
* the start and end of elements and character data.</p>
*
* <p>The order of events in this interface is very important, and
* mirrors the order of information in the document itself. For
* example, all of an element's content (character data, processing
* instructions, and/or subelements) will appear, in order, between
* the startElement event and the corresponding endElement event.</p>
*
* <p>Application writers who do not want to implement the entire
* interface while can derive a class from Sax2HandlerBase, which implements
* the default functionality; parser writers can instantiate
* Sax2HandlerBase to obtain a default handler. The application can find
* the location of any document event using the Locator interface
* supplied by the Parser through the setDocumentLocator method.</p>
*
* @see Parser#setDocumentHandler
* @see Locator#Locator
* @see Sax2HandlerBase#Sax2HandlerBase
*/
class SAX2_EXPORT ContentHandler
{
public:
/** @name Constructors and Destructor */
//@{
/** Default constructor */
ContentHandler()
{
}
/** Destructor */
virtual ~ContentHandler()
{
}
//@}
/** @name The virtual document handler interface */
//@{
/**
* Receive notification of character data.
*
* <p>The Parser will call this method to report each chunk of
* character data. SAX parsers may return all contiguous character
* data in a single chunk, or they may split it into several
* chunks; however, all of the characters in any single event
* must come from the same external entity, so that the Locator
* provides useful information.</p>
*
* <p>The application must not attempt to read from the array
* outside of the specified range.</p>
*
* <p>Note that some parsers will report whitespace using the
* ignorableWhitespace() method rather than this one (validating
* parsers must do so).</p>
*
* @param chars The characters from the XML document.
* @param length The number of characters to read from the array.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
* @see #ignorableWhitespace
* @see Locator#Locator
*/
virtual void characters
(
const XMLCh* const chars
, const XMLSize_t length
) = 0;
/**
* Receive notification of the end of a document.
*
* <p>The SAX parser will invoke this method only once, and it will
* be the last method invoked during the parse. The parser shall
* not invoke this method until it has either abandoned parsing
* (because of an unrecoverable error) or reached the end of
* input.</p>
*
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
*/
virtual void endDocument () = 0;
/**
* Receive notification of the end of an element.
*
* <p>The SAX parser will invoke this method at the end of every
* element in the XML document; there will be a corresponding
* startElement() event for every endElement() event (even when the
* element is empty).</p>
*
* @param uri The URI of the associated namespace for this element
* @param localname The local part of the element name
* @param qname The QName of this element
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
*/
virtual void endElement
(
const XMLCh* const uri,
const XMLCh* const localname,
const XMLCh* const qname
) = 0;
/**
* Receive notification of ignorable whitespace in element content.
*
* <p>Validating Parsers must use this method to report each chunk
* of ignorable whitespace (see the W3C XML 1.0 recommendation,
* section 2.10): non-validating parsers may also use this method
* if they are capable of parsing and using content models.</p>
*
* <p>SAX parsers may return all contiguous whitespace in a single
* chunk, or they may split it into several chunks; however, all of
* the characters in any single event must come from the same
* external entity, so that the Locator provides useful
* information.</p>
*
* <p>The application must not attempt to read from the array
* outside of the specified range.</p>
*
* @param chars The characters from the XML document.
* @param length The number of characters to read from the array.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
* @see #characters
*/
virtual void ignorableWhitespace
(
const XMLCh* const chars
, const XMLSize_t length
) = 0;
/**
* Receive notification of a processing instruction.
*
* <p>The Parser will invoke this method once for each processing
* instruction found: note that processing instructions may occur
* before or after the main document element.</p>
*
* <p>A SAX parser should never report an XML declaration (XML 1.0,
* section 2.8) or a text declaration (XML 1.0, section 4.3.1)
* using this method.</p>
*
* @param target The processing instruction target.
* @param data The processing instruction data, or null if
* none was supplied.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
*/
virtual void processingInstruction
(
const XMLCh* const target
, const XMLCh* const data
) = 0;
/**
* Receive an object for locating the origin of SAX document events.
*
* SAX parsers are strongly encouraged (though not absolutely
* required) to supply a locator: if it does so, it must supply
* the locator to the application by invoking this method before
* invoking any of the other methods in the DocumentHandler
* interface.
*
* The locator allows the application to determine the end
* position of any document-related event, even if the parser is
* not reporting an error. Typically, the application will
* use this information for reporting its own errors (such as
* character content that does not match an application's
* business rules). The information returned by the locator
* is probably not sufficient for use with a search engine.
*
* Note that the locator will return correct information only
* during the invocation of the events in this interface. The
* application should not attempt to use it at any other time.
*
* @param locator An object that can return the location of
* any SAX document event. The object is only
* 'on loan' to the client code and they are not
* to attempt to delete or modify it in any way!
*
* @see Locator#Locator
*/
virtual void setDocumentLocator(const Locator* const locator) = 0;
/**
* Receive notification of the beginning of a document.
*
* <p>The SAX parser will invoke this method only once, before any
* other methods in this interface or in DTDHandler (except for
* setDocumentLocator).</p>
*
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
*/
virtual void startDocument() = 0;
/**
* Receive notification of the beginning of an element.
*
* <p>The Parser will invoke this method at the beginning of every
* element in the XML document; there will be a corresponding
* endElement() event for every startElement() event (even when the
* element is empty). All of the element's content will be
* reported, in order, before the corresponding endElement()
* event.</p>
*
* <p>Note that the attribute list provided will
* contain only attributes with explicit values (specified or
* defaulted): \#IMPLIED attributes will be omitted.</p>
*
* @param uri The URI of the associated namespace for this element
* @param localname The local part of the element name
* @param qname The QName of this element
* @param attrs The attributes attached to the element, if any.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
* @see #endElement
* @see Attributes#Attributes
*/
virtual void startElement
(
const XMLCh* const uri,
const XMLCh* const localname,
const XMLCh* const qname,
const Attributes& attrs
) = 0;
/**
* Receive notification of the start of an namespace prefix mapping.
*
* <p>By default, do nothing. Application writers may override this
* method in a subclass to take specific actions at the start of
* each namespace prefix mapping.</p>
*
* @param prefix The namespace prefix used
* @param uri The namespace URI used.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
*/
virtual void startPrefixMapping
(
const XMLCh* const prefix,
const XMLCh* const uri
) = 0 ;
/**
* Receive notification of the end of an namespace prefix mapping.
*
* <p>By default, do nothing. Application writers may override this
* method in a subclass to take specific actions at the end of
* each namespace prefix mapping.</p>
*
* @param prefix The namespace prefix used
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
*/
virtual void endPrefixMapping
(
const XMLCh* const prefix
) = 0 ;
/**
* Receive notification of a skipped entity
*
* <p>The parser will invoke this method once for each entity
* skipped. All processors may skip external entities,
* depending on the values of the features:<br>
* http://xml.org/sax/features/external-general-entities<br>
* http://xml.org/sax/features/external-parameter-entities</p>
*
* <p>Note: Xerces (specifically) never skips any entities, regardless
* of the above features. This function is never called in the
* Xerces implementation of SAX2.</p>
*
* <p>Introduced with SAX2</p>
*
* @param name The name of the skipped entity. If it is a parameter entity,
* the name will begin with %, and if it is the external DTD subset,
* it will be the string [dtd].
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
*/
virtual void skippedEntity
(
const XMLCh* const name
) = 0 ;
//@}
private :
/* Unimplemented Constructors and operators */
/* Copy constructor */
ContentHandler(const ContentHandler&);
/** Assignment operator */
ContentHandler& operator=(const ContentHandler&);
};
XERCES_CPP_NAMESPACE_END
#endif

View File

@@ -0,0 +1,163 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
*/
/*
* $Id: DeclHandler.hpp 932887 2010-04-11 13:04:59Z borisk $
*/
#if !defined(XERCESC_INCLUDE_GUARD_DECLHANDLER_HPP)
#define XERCESC_INCLUDE_GUARD_DECLHANDLER_HPP
#include <xercesc/util/XercesDefs.hpp>
XERCES_CPP_NAMESPACE_BEGIN
/**
* Receive notification of DTD declaration events.
*
* <p>This is an optional extension handler for SAX2 to provide more
* complete information about DTD declarations in an XML document.
* XML readers are not required to recognize this handler, and it is not
* part of core-only SAX2 distributions.</p>
*
* <p>Note that data-related DTD declarations (unparsed entities and
* notations) are already reported through the DTDHandler interface.</p>
*
* <p>If you are using the declaration handler together with a lexical
* handler, all of the events will occur between the startDTD and the endDTD
* events.</p>
*
* @see SAX2XMLReader#setLexicalHandler
* @see SAX2XMLReader#setDeclarationHandler
*/
class SAX2_EXPORT DeclHandler
{
public:
/** @name Constructors and Destructor */
//@{
/** Default constructor */
DeclHandler()
{
}
/** Destructor */
virtual ~DeclHandler()
{
}
//@}
/** @name The virtual declaration handler interface */
//@{
/**
* Report an element type declaration.
*
* <p>The content model will consist of the string "EMPTY", the string
* "ANY", or a parenthesised group, optionally followed by an occurrence
* indicator. The model will be normalized so that all parameter entities
* are fully resolved and all whitespace is removed,and will include the
* enclosing parentheses. Other normalization (such as removing redundant
* parentheses or simplifying occurrence indicators) is at the discretion
* of the parser.</p>
*
* @param name The element type name.
* @param model The content model as a normalized string.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
*/
virtual void elementDecl
(
const XMLCh* const name
, const XMLCh* const model
) = 0;
/**
* Report an attribute type declaration.
*
* <p>The Parser will call this method to report each occurrence of
* a comment in the XML document.</p>
*
* <p>The application must not attempt to read from the array
* outside of the specified range.</p>
*
* @param eName The name of the associated element.
* @param aName The name of the attribute.
* @param type A string representing the attribute type.
* @param mode A string representing the attribute defaulting mode ("#IMPLIED", "#REQUIRED", or "#FIXED") or null if none of these applies.
* @param value A string representing the attribute's default value, or null if there is none.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
*/
virtual void attributeDecl
(
const XMLCh* const eName
, const XMLCh* const aName
, const XMLCh* const type
, const XMLCh* const mode
, const XMLCh* const value
) = 0;
/**
* Report an internal entity declaration.
*
* <p>Only the effective (first) declaration for each entity will be
* reported. All parameter entities in the value will be expanded, but
* general entities will not.</p>
*
* @param name The name of the entity. If it is a parameter entity, the name will begin with '%'.
* @param value The replacement text of the entity.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
*/
virtual void internalEntityDecl
(
const XMLCh* const name
, const XMLCh* const value
) = 0;
/**
* Report a parsed external entity declaration.
*
* <p>Only the effective (first) declaration for each entity will
* be reported.</p>
*
* @param name The name of the entity. If it is a parameter entity, the name will begin with '%'.
* @param publicId The The declared public identifier of the entity, or null if none was declared.
* @param systemId The declared system identifier of the entity.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
*/
virtual void externalEntityDecl
(
const XMLCh* const name
, const XMLCh* const publicId
, const XMLCh* const systemId
) = 0;
//@}
private :
/* Unimplemented Constructors and operators */
/* Copy constructor */
DeclHandler(const DeclHandler&);
/** Assignment operator */
DeclHandler& operator=(const DeclHandler&);
};
XERCES_CPP_NAMESPACE_END
#endif

View File

@@ -0,0 +1,806 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
*/
/*
* $Id: DefaultHandler.hpp 932887 2010-04-11 13:04:59Z borisk $
*/
#if !defined(XERCESC_INCLUDE_GUARD_DEFAULTHANDLER_HPP)
#define XERCESC_INCLUDE_GUARD_DEFAULTHANDLER_HPP
#include <xercesc/sax2/ContentHandler.hpp>
#include <xercesc/sax2/LexicalHandler.hpp>
#include <xercesc/sax2/DeclHandler.hpp>
#include <xercesc/sax/DTDHandler.hpp>
#include <xercesc/sax/EntityResolver.hpp>
#include <xercesc/sax/ErrorHandler.hpp>
#include <xercesc/sax/SAXParseException.hpp>
XERCES_CPP_NAMESPACE_BEGIN
class Locator;
class Attributes;
/**
* Default base class for SAX2 handlers.
*
* <p>This class implements the default behaviour for SAX2
* interfaces: EntityResolver, DTDHandler, ContentHandler,
* ErrorHandler, LexicalHandler, and DeclHandler.</p>
*
* <p>Application writers can extend this class when they need to
* implement only part of an interface; parser writers can
* instantiate this class to provide default handlers when the
* application has not supplied its own.</p>
*
* <p>Note that the use of this class is optional.</p>
*
* @see EntityResolver#EntityResolver
* @see DTDHandler#DTDHandler
* @see ContentHandler#ContentHandler
* @see ErrorHandler#ErrorHandler
* @see LexicalHandler#LexicalHandler
* @see DeclHandler#DeclHandler
*/
class SAX2_EXPORT DefaultHandler :
public EntityResolver,
public DTDHandler,
public ContentHandler,
public ErrorHandler,
public LexicalHandler,
public DeclHandler
{
public:
/** @name Default handlers for the DocumentHandler interface */
//@{
/**
* Receive notification of character data inside an element.
*
* <p>By default, do nothing. Application writers may override this
* method to take specific actions for each chunk of character data
* (such as adding the data to a node or buffer, or printing it to
* a file).</p>
*
* @param chars The characters.
* @param length The number of characters to use from the
* character array.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
* @see DocumentHandler#characters
*/
virtual void characters
(
const XMLCh* const chars
, const XMLSize_t length
);
/**
* Receive notification of the end of the document.
*
* <p>By default, do nothing. Application writers may override this
* method in a subclass to take specific actions at the beginning
* of a document (such as finalising a tree or closing an output
* file).</p>
*
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
* @see DocumentHandler#endDocument
*/
virtual void endDocument();
/**
* Receive notification of the end of an element.
*
* <p>By default, do nothing. Application writers may override this
* method in a subclass to take specific actions at the end of
* each element (such as finalising a tree node or writing
* output to a file).</p>
*
* @param uri The URI of the associated namespace for this element
* @param localname The local part of the element name
* @param qname The QName of this element
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
* @see DocumentHandler#endElement
*/
virtual void endElement
(
const XMLCh* const uri,
const XMLCh* const localname,
const XMLCh* const qname
);
/**
* Receive notification of ignorable whitespace in element content.
*
* <p>By default, do nothing. Application writers may override this
* method to take specific actions for each chunk of ignorable
* whitespace (such as adding data to a node or buffer, or printing
* it to a file).</p>
*
* @param chars The whitespace characters.
* @param length The number of characters to use from the
* character array.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
* @see DocumentHandler#ignorableWhitespace
*/
virtual void ignorableWhitespace
(
const XMLCh* const chars
, const XMLSize_t length
);
/**
* Receive notification of a processing instruction.
*
* <p>By default, do nothing. Application writers may override this
* method in a subclass to take specific actions for each
* processing instruction, such as setting status variables or
* invoking other methods.</p>
*
* @param target The processing instruction target.
* @param data The processing instruction data, or null if
* none is supplied.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
* @see DocumentHandler#processingInstruction
*/
virtual void processingInstruction
(
const XMLCh* const target
, const XMLCh* const data
);
/**
* Reset the Document object on its reuse
*
* @see DocumentHandler#resetDocument
*/
virtual void resetDocument();
//@}
/** @name Default implementation of DocumentHandler interface */
//@{
/**
* Receive a Locator object for document events.
*
* <p>By default, do nothing. Application writers may override this
* method in a subclass if they wish to store the locator for use
* with other document events.</p>
*
* @param locator A locator for all SAX document events.
* @see DocumentHandler#setDocumentLocator
* @see Locator
*/
virtual void setDocumentLocator(const Locator* const locator);
/**
* Receive notification of the beginning of the document.
*
* <p>By default, do nothing. Application writers may override this
* method in a subclass to take specific actions at the beginning
* of a document (such as allocating the root node of a tree or
* creating an output file).</p>
*
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
* @see DocumentHandler#startDocument
*/
virtual void startDocument();
/**
* Receive notification of the start of an element.
*
* <p>By default, do nothing. Application writers may override this
* method in a subclass to take specific actions at the start of
* each element (such as allocating a new tree node or writing
* output to a file).</p>
*
* @param uri The URI of the associated namespace for this element
* @param localname the local part of the element name
* @param qname the QName of this element
* @param attrs The specified or defaulted attributes.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
* @see DocumentHandler#startElement
*/
virtual void startElement
(
const XMLCh* const uri,
const XMLCh* const localname,
const XMLCh* const qname
, const Attributes& attrs
);
/**
* Receive notification of the start of an namespace prefix mapping.
*
* <p>By default, do nothing. Application writers may override this
* method in a subclass to take specific actions at the start of
* each namespace prefix mapping.</p>
*
* @param prefix The namespace prefix used
* @param uri The namespace URI used.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
* @see DocumentHandler#startPrefixMapping
*/
virtual void startPrefixMapping
(
const XMLCh* const prefix,
const XMLCh* const uri
) ;
/**
* Receive notification of the end of an namespace prefix mapping.
*
* <p>By default, do nothing. Application writers may override this
* method in a subclass to take specific actions at the end of
* each namespace prefix mapping.</p>
*
* @param prefix The namespace prefix used
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
* @see DocumentHandler#endPrefixMapping
*/
virtual void endPrefixMapping
(
const XMLCh* const prefix
) ;
/**
* Receive notification of a skipped entity
*
* <p>The parser will invoke this method once for each entity
* skipped. All processors may skip external entities,
* depending on the values of the features:<br>
* http://xml.org/sax/features/external-general-entities<br>
* http://xml.org/sax/features/external-parameter-entities</p>
*
* <p>Introduced with SAX2</p>
*
* @param name The name of the skipped entity. If it is a parameter entity,
* the name will begin with %, and if it is the external DTD subset,
* it will be the string [dtd].
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
*/
virtual void skippedEntity
(
const XMLCh* const name
) ;
//@}
/** @name Default implementation of the EntityResolver interface. */
//@{
/**
* Resolve an external entity.
*
* <p>Always return null, so that the parser will use the system
* identifier provided in the XML document. This method implements
* the SAX default behaviour: application writers can override it
* in a subclass to do special translations such as catalog lookups
* or URI redirection.</p>
*
* @param publicId The public identifier, or null if none is
* available.
* @param systemId The system identifier provided in the XML
* document.
* @return The new input source, or null to require the
* default behaviour.
* The returned InputSource is owned by the parser which is
* responsible to clean up the memory.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
* @see EntityResolver#resolveEntity
*/
virtual InputSource* resolveEntity
(
const XMLCh* const publicId
, const XMLCh* const systemId
);
//@}
/** @name Default implementation of the ErrorHandler interface */
//@{
/**
* Receive notification of a recoverable parser error.
*
* <p>The default implementation does nothing. Application writers
* may override this method in a subclass to take specific actions
* for each error, such as inserting the message in a log file or
* printing it to the console.</p>
*
* @param exc The warning information encoded as an exception.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
* @see ErrorHandler#warning
* @see SAXParseException#SAXParseException
*/
virtual void error(const SAXParseException& exc);
/**
* Report a fatal XML parsing error.
*
* <p>The default implementation throws a SAXParseException.
* Application writers may override this method in a subclass if
* they need to take specific actions for each fatal error (such as
* collecting all of the errors into a single report): in any case,
* the application must stop all regular processing when this
* method is invoked, since the document is no longer reliable, and
* the parser may no longer report parsing events.</p>
*
* @param exc The error information encoded as an exception.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
* @see ErrorHandler#fatalError
* @see SAXParseException#SAXParseException
*/
virtual void fatalError(const SAXParseException& exc);
/**
* Receive notification of a parser warning.
*
* <p>The default implementation does nothing. Application writers
* may override this method in a subclass to take specific actions
* for each warning, such as inserting the message in a log file or
* printing it to the console.</p>
*
* @param exc The warning information encoded as an exception.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
* @see ErrorHandler#warning
* @see SAXParseException#SAXParseException
*/
virtual void warning(const SAXParseException& exc);
/**
* Reset the Error handler object on its reuse
*
* @see ErrorHandler#resetErrors
*/
virtual void resetErrors();
//@}
/** @name Default implementation of DTDHandler interface. */
//@{
/**
* Receive notification of a notation declaration.
*
* <p>By default, do nothing. Application writers may override this
* method in a subclass if they wish to keep track of the notations
* declared in a document.</p>
*
* @param name The notation name.
* @param publicId The notation public identifier, or null if not
* available.
* @param systemId The notation system identifier.
* @see DTDHandler#notationDecl
*/
virtual void notationDecl
(
const XMLCh* const name
, const XMLCh* const publicId
, const XMLCh* const systemId
);
/**
* Reset the DTD object on its reuse
*
* @see DTDHandler#resetDocType
*/
virtual void resetDocType();
/**
* Receive notification of an unparsed entity declaration.
*
* <p>By default, do nothing. Application writers may override this
* method in a subclass to keep track of the unparsed entities
* declared in a document.</p>
*
* @param name The entity name.
* @param publicId The entity public identifier, or null if not
* available.
* @param systemId The entity system identifier.
* @param notationName The name of the associated notation.
* @see DTDHandler#unparsedEntityDecl
*/
virtual void unparsedEntityDecl
(
const XMLCh* const name
, const XMLCh* const publicId
, const XMLCh* const systemId
, const XMLCh* const notationName
);
//@}
/** @name Default implementation of LexicalHandler interface. */
//@{
/**
* Receive notification of comments.
*
* <p>The Parser will call this method to report each occurrence of
* a comment in the XML document.</p>
*
* <p>The application must not attempt to read from the array
* outside of the specified range.</p>
*
* @param chars The characters from the XML document.
* @param length The number of characters to read from the array.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
*/
virtual void comment
(
const XMLCh* const chars
, const XMLSize_t length
);
/**
* Receive notification of the end of a CDATA section.
*
* <p>The SAX parser will invoke this method at the end of
* each CDATA parsed.</p>
*
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
*/
virtual void endCDATA ();
/**
* Receive notification of the end of the DTD declarations.
*
* <p>The SAX parser will invoke this method at the end of the
* DTD</p>
*
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
*/
virtual void endDTD ();
/**
* Receive notification of the end of an entity.
*
* <p>The SAX parser will invoke this method at the end of an
* entity</p>
*
* @param name The name of the entity that is ending.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
*/
virtual void endEntity (const XMLCh* const name);
/**
* Receive notification of the start of a CDATA section.
*
* <p>The SAX parser will invoke this method at the start of
* each CDATA parsed.</p>
*
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
*/
virtual void startCDATA ();
/**
* Receive notification of the start of the DTD declarations.
*
* <p>The SAX parser will invoke this method at the start of the
* DTD</p>
*
* @param name The document type name.
* @param publicId The declared public identifier for the external DTD subset, or null if none was declared.
* @param systemId The declared system identifier for the external DTD subset, or null if none was declared.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
*/
virtual void startDTD
(
const XMLCh* const name
, const XMLCh* const publicId
, const XMLCh* const systemId
);
/**
* Receive notification of the start of an entity.
*
* <p>The SAX parser will invoke this method at the start of an
* entity</p>
*
* @param name The name of the entity that is starting.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
*/
virtual void startEntity (const XMLCh* const name);
//@}
/** @name Default implementation of DeclHandler interface. */
//@{
/**
* Report an element type declaration.
*
* <p>The content model will consist of the string "EMPTY", the string
* "ANY", or a parenthesised group, optionally followed by an occurrence
* indicator. The model will be normalized so that all parameter entities
* are fully resolved and all whitespace is removed,and will include the
* enclosing parentheses. Other normalization (such as removing redundant
* parentheses or simplifying occurrence indicators) is at the discretion
* of the parser.</p>
*
* @param name The element type name.
* @param model The content model as a normalized string.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
*/
virtual void elementDecl
(
const XMLCh* const name
, const XMLCh* const model
);
/**
* Report an attribute type declaration.
*
* <p>Only the effective (first) declaration for an attribute will
* be reported.</p>
*
* @param eName The name of the associated element.
* @param aName The name of the attribute.
* @param type A string representing the attribute type.
* @param mode A string representing the attribute defaulting mode ("#IMPLIED", "#REQUIRED", or "#FIXED") or null if none of these applies.
* @param value A string representing the attribute's default value, or null if there is none.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
*/
virtual void attributeDecl
(
const XMLCh* const eName
, const XMLCh* const aName
, const XMLCh* const type
, const XMLCh* const mode
, const XMLCh* const value
);
/**
* Report an internal entity declaration.
*
* <p>Only the effective (first) declaration for each entity will be
* reported. All parameter entities in the value will be expanded, but
* general entities will not.</p>
*
* @param name The name of the entity. If it is a parameter entity, the name will begin with '%'.
* @param value The replacement text of the entity.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
*/
virtual void internalEntityDecl
(
const XMLCh* const name
, const XMLCh* const value
);
/**
* Report a parsed external entity declaration.
*
* <p>Only the effective (first) declaration for each entity will
* be reported.</p>
*
* @param name The name of the entity. If it is a parameter entity, the name will begin with '%'.
* @param publicId The The declared public identifier of the entity, or null if none was declared.
* @param systemId The declared system identifier of the entity.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
*/
virtual void externalEntityDecl
(
const XMLCh* const name
, const XMLCh* const publicId
, const XMLCh* const systemId
);
//@}
DefaultHandler() {};
virtual ~DefaultHandler() {};
private:
// -----------------------------------------------------------------------
// Unimplemented constructors and operators
// -----------------------------------------------------------------------
DefaultHandler(const DefaultHandler&);
DefaultHandler& operator=(const DefaultHandler&);
};
// ---------------------------------------------------------------------------
// HandlerBase: Inline default implementations
// ---------------------------------------------------------------------------
inline void DefaultHandler::characters(const XMLCh* const
,const XMLSize_t)
{
}
inline void DefaultHandler::endDocument()
{
}
inline void DefaultHandler::endElement(const XMLCh* const
, const XMLCh* const
, const XMLCh* const)
{
}
inline void DefaultHandler::error(const SAXParseException&)
{
}
inline void DefaultHandler::fatalError(const SAXParseException& exc)
{
throw exc;
}
inline void
DefaultHandler::ignorableWhitespace( const XMLCh* const
, const XMLSize_t)
{
}
inline void DefaultHandler::notationDecl( const XMLCh* const
, const XMLCh* const
, const XMLCh* const)
{
}
inline void
DefaultHandler::processingInstruction( const XMLCh* const
, const XMLCh* const)
{
}
inline void DefaultHandler::resetErrors()
{
}
inline void DefaultHandler::resetDocument()
{
}
inline void DefaultHandler::resetDocType()
{
}
inline InputSource*
DefaultHandler::resolveEntity( const XMLCh* const
, const XMLCh* const)
{
return 0;
}
inline void
DefaultHandler::unparsedEntityDecl(const XMLCh* const
, const XMLCh* const
, const XMLCh* const
, const XMLCh* const)
{
}
inline void DefaultHandler::setDocumentLocator(const Locator* const)
{
}
inline void DefaultHandler::startDocument()
{
}
inline void
DefaultHandler::startElement( const XMLCh* const
, const XMLCh* const
, const XMLCh* const
, const Attributes&
)
{
}
inline void DefaultHandler::warning(const SAXParseException&)
{
}
inline void DefaultHandler::startPrefixMapping ( const XMLCh* const
,const XMLCh* const)
{
}
inline void DefaultHandler::endPrefixMapping ( const XMLCh* const)
{
}
inline void DefaultHandler::skippedEntity ( const XMLCh* const)
{
}
inline void DefaultHandler::comment( const XMLCh* const
, const XMLSize_t)
{
}
inline void DefaultHandler::endCDATA ()
{
}
inline void DefaultHandler::endDTD ()
{
}
inline void DefaultHandler::endEntity (const XMLCh* const)
{
}
inline void DefaultHandler::startCDATA ()
{
}
inline void DefaultHandler::startDTD( const XMLCh* const
, const XMLCh* const
, const XMLCh* const)
{
}
inline void DefaultHandler::startEntity (const XMLCh* const)
{
}
inline void DefaultHandler::attributeDecl(const XMLCh* const,
const XMLCh* const,
const XMLCh* const,
const XMLCh* const,
const XMLCh* const)
{
}
inline void DefaultHandler::elementDecl(const XMLCh* const,
const XMLCh* const)
{
}
inline void DefaultHandler::externalEntityDecl(const XMLCh* const,
const XMLCh* const,
const XMLCh* const)
{
}
inline void DefaultHandler::internalEntityDecl(const XMLCh* const,
const XMLCh* const)
{
}
XERCES_CPP_NAMESPACE_END
#endif // ! DEFAULTHANDLER_HPP

View File

@@ -0,0 +1,172 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
*/
/*
* $Id: LexicalHandler.hpp 932887 2010-04-11 13:04:59Z borisk $
*/
#if !defined(XERCESC_INCLUDE_GUARD_LEXICALHANDLER_HPP)
#define XERCESC_INCLUDE_GUARD_LEXICALHANDLER_HPP
#include <xercesc/util/XercesDefs.hpp>
XERCES_CPP_NAMESPACE_BEGIN
/**
* Receive notification of lexical events.
*
* <p>This is an extension handler for that provides lexical information
* about an XML document. It does not provide information about document
* content. For those events, an application must register an instance of
* a ContentHandler.</p>
*
* <p>The order of events in this interface is very important, and
* mirrors the order of information in the document itself. For
* example, startDTD() and endDTD() events will occur before the
* first element in the document.</p>
*
* @see SAX2XMLReader#setLexicalHandler
* @see SAX2XMLReader#setContentHandler
*/
class SAX2_EXPORT LexicalHandler
{
public:
/** @name Constructors and Destructor */
//@{
/** Default constructor */
LexicalHandler()
{
}
/** Destructor */
virtual ~LexicalHandler()
{
}
//@}
/** @name The virtual document handler interface */
//@{
/**
* Receive notification of comments.
*
* <p>The Parser will call this method to report each occurrence of
* a comment in the XML document.</p>
*
* <p>The application must not attempt to read from the array
* outside of the specified range.</p>
*
* @param chars The characters from the XML document.
* @param length The number of characters to read from the array.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
*/
virtual void comment
(
const XMLCh* const chars
, const XMLSize_t length
) = 0;
/**
* Receive notification of the end of a CDATA section.
*
* <p>The SAX parser will invoke this method at the end of
* each CDATA parsed.</p>
*
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
*/
virtual void endCDATA () = 0;
/**
* Receive notification of the end of the DTD declarations.
*
* <p>The SAX parser will invoke this method at the end of the
* DTD</p>
*
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
*/
virtual void endDTD () = 0;
/**
* Receive notification of the end of an entity.
*
* <p>The SAX parser will invoke this method at the end of an
* entity</p>
*
* @param name The name of the entity that is ending.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
*/
virtual void endEntity (const XMLCh* const name) = 0;
/**
* Receive notification of the start of a CDATA section.
*
* <p>The SAX parser will invoke this method at the start of
* each CDATA parsed.</p>
*
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
*/
virtual void startCDATA () = 0;
/**
* Receive notification of the start of the DTD declarations.
*
* <p>The SAX parser will invoke this method at the start of the
* DTD</p>
*
* @param name The document type name.
* @param publicId The declared public identifier for the external DTD subset, or null if none was declared.
* @param systemId The declared system identifier for the external DTD subset, or null if none was declared.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
*/
virtual void startDTD
(
const XMLCh* const name
, const XMLCh* const publicId
, const XMLCh* const systemId
) = 0;
/**
* Receive notification of the start of an entity.
*
* <p>The SAX parser will invoke this method at the start of an
* entity</p>
*
* @param name The name of the entity that is starting.
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
*/
virtual void startEntity (const XMLCh* const name) = 0;
//@}
private :
/* Unimplemented Constructors and operators */
/* Copy constructor */
LexicalHandler(const LexicalHandler&);
/** Assignment operator */
LexicalHandler& operator=(const LexicalHandler&);
};
XERCES_CPP_NAMESPACE_END
#endif

View File

@@ -0,0 +1,82 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
*/
/*
* $Id: SAX2XMLFilter.hpp 527149 2007-04-10 14:56:39Z amassari $
*/
#if !defined(XERCESC_INCLUDE_GUARD_SAX2XMLFILTER_HPP)
#define XERCESC_INCLUDE_GUARD_SAX2XMLFILTER_HPP
#include <xercesc/sax2/SAX2XMLReader.hpp>
XERCES_CPP_NAMESPACE_BEGIN
class SAX2_EXPORT SAX2XMLFilter : public SAX2XMLReader
{
public:
// -----------------------------------------------------------------------
// Constructors and Destructor
// -----------------------------------------------------------------------
/** @name Constructors and Destructor */
//@{
/** The default constructor */
SAX2XMLFilter()
{
}
/** The destructor */
virtual ~SAX2XMLFilter()
{
}
//@}
//-----------------------------------------------------------------------
// The XMLFilter interface
//-----------------------------------------------------------------------
/** @name Implementation of SAX 2.0 XMLFilter interface's. */
//@{
/**
* This method returns the parent XMLReader object.
*
* @return A pointer to the parent XMLReader object.
*/
virtual SAX2XMLReader* getParent() const = 0 ;
/**
* Sets the parent XMLReader object; parse requests will be forwarded to this
* object, and callback notifications coming from it will be postprocessed
*
* @param parent The new XMLReader parent.
* @see SAX2XMLReader#SAX2XMLReader
*/
virtual void setParent(SAX2XMLReader* parent) = 0;
//@}
private :
/* The copy constructor, you cannot call this directly */
SAX2XMLFilter(const SAX2XMLFilter&);
/* The assignment operator, you cannot call this directly */
SAX2XMLFilter& operator=(const SAX2XMLFilter&);
};
XERCES_CPP_NAMESPACE_END
#endif

View File

@@ -0,0 +1,893 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
*/
/*
* $Id: SAX2XMLReader.hpp 932887 2010-04-11 13:04:59Z borisk $
*/
#if !defined(XERCESC_INCLUDE_GUARD_SAX2XMLREADER_HPP)
#define XERCESC_INCLUDE_GUARD_SAX2XMLREADER_HPP
#include <xercesc/util/XercesDefs.hpp>
#include <xercesc/util/XMLUniDefs.hpp>
#include <xercesc/framework/XMLValidator.hpp>
#include <xercesc/framework/XMLPScanToken.hpp>
#include <xercesc/validators/common/Grammar.hpp>
XERCES_CPP_NAMESPACE_BEGIN
class ContentHandler ;
class DTDHandler;
class EntityResolver;
class ErrorHandler;
class InputSource;
class LexicalHandler;
class DeclHandler;
class XMLDocumentHandler;
class SAX2_EXPORT SAX2XMLReader
{
public:
// -----------------------------------------------------------------------
// Class types
// -----------------------------------------------------------------------
/** @name Public constants */
//@{
/** ValScheme enum used in setValidationScheme
* Val_Never: Do not report validation errors.
* Val_Always: The parser will always report validation errors.
* Val_Auto: The parser will report validation errors only if a grammar is specified.
*
* The schemes map to these feature values:
* Val_Never:
* parser->setFeature(XMLUni::fgSAX2CoreValidation, false);
*
* Val_Always:
* parser->setFeature(XMLUni::fgSAX2CoreValidation, true);
* parser->setFeature(XMLUni::fgXercesDynamic, false);
*
* Val_Auto:
* parser->setFeature(XMLUni::fgSAX2CoreValidation, true);
* parser->setFeature(XMLUni::fgXercesDynamic, true);
*
* @see #setFeature
*/
enum ValSchemes
{
Val_Never
, Val_Always
, Val_Auto
};
//@}
// -----------------------------------------------------------------------
// Constructors and Destructor
// -----------------------------------------------------------------------
/** @name Constructors and Destructor */
//@{
/** The default constructor */
SAX2XMLReader()
{
}
/** The destructor */
virtual ~SAX2XMLReader()
{
}
//@}
//-----------------------------------------------------------------------
// The XMLReader interface
//-----------------------------------------------------------------------
/** @name Implementation of SAX 2.0 XMLReader interface's. */
//@{
/**
* This method returns the installed content handler.
*
* @return A pointer to the installed content handler object.
*/
virtual ContentHandler* getContentHandler() const = 0 ;
/**
* This method returns the installed DTD handler.
*
* @return A pointer to the installed DTD handler object.
*/
virtual DTDHandler* getDTDHandler() const = 0;
/**
* This method returns the installed entity resolver.
*
* @return A pointer to the installed entity resolver object.
*/
virtual EntityResolver* getEntityResolver() const = 0 ;
/**
* This method returns the installed error handler.
*
* @return A pointer to the installed error handler object.
*/
virtual ErrorHandler* getErrorHandler() const = 0 ;
/**
* Query the current state of any feature in a SAX2 XMLReader.
*
* @param name The unique identifier (URI) of the feature being set.
* @return The current state of the feature.
* @exception SAXNotRecognizedException If the requested feature is not known.
*/
virtual bool getFeature(const XMLCh* const name) const = 0;
/**
* Query the current value of a property in a SAX2 XMLReader.
*
* The parser owns the returned pointer. The memory allocated for
* the returned pointer will be destroyed when the parser is deleted.
*
* To ensure accessibility of the returned information after the parser
* is deleted, callers need to copy and store the returned information
* somewhere else; otherwise you may get unexpected result. Since the returned
* pointer is a generic void pointer, see the SAX2 Programming Guide to learn
* exactly what type of property value each property returns for replication.
*
* @param name The unique identifier (URI) of the property being set.
* @return The current value of the property. The pointer spans the same
* life-time as the parser. A null pointer is returned if nothing
* was specified externally.
* @exception SAXNotRecognizedException If the requested property is not known.
*/
virtual void* getProperty(const XMLCh* const name) const = 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 ContentHandler#ContentHandler
* @see HandlerBase#HandlerBase
*/
virtual void setContentHandler(ContentHandler* const handler) = 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 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
* DefaultHandler).
*
* 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 DefaultHandler#DefaultHandler
*/
virtual void setEntityResolver(EntityResolver* const resolver) = 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;
/**
* Set the state of any feature in a SAX2 XMLReader.
* Supported features in SAX2 for xerces-c are:
* <br>(See the SAX2 Programming Guide for detail description).
*
* <br>http://xml.org/sax/features/validation (default: true)
* <br>http://xml.org/sax/features/namespaces (default: true)
* <br>http://xml.org/sax/features/namespace-prefixes (default: false)
* <br>http://apache.org/xml/features/validation/dynamic (default: false)
* <br>http://apache.org/xml/features/validation/reuse-grammar (default: false)
* <br>http://apache.org/xml/features/validation/schema (default: true)
* <br>http://apache.org/xml/features/validation/schema-full-checking (default: false)
* <br>http://apache.org/xml/features/validating/load-schema (default: true)
* <br>http://apache.org/xml/features/nonvalidating/load-external-dtd (default: true)
* <br>http://apache.org/xml/features/continue-after-fatal-error (default: false)
* <br>http://apache.org/xml/features/validation-error-as-fatal (default: false)
*
* @param name The unique identifier (URI) of the feature.
* @param value The requested state of the feature (true or false).
* @exception SAXNotRecognizedException If the requested feature is not known.
* @exception SAXNotSupportedException Feature modification is not supported during parse
*
*/
virtual void setFeature(const XMLCh* const name, const bool value) = 0;
/**
* Set the value of any property in a SAX2 XMLReader.
* Supported properties in SAX2 for xerces-c are:
* <br>(See the SAX2 Programming Guide for detail description).
*
* <br>http://apache.org/xml/properties/schema/external-schemaLocation
* <br>http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation.
*
* It takes a void pointer as the property value. Application is required to initialize this void
* pointer to a correct type. See the SAX2 Programming Guide
* to learn exactly what type of property value each property expects for processing.
* Passing a void pointer that was initialized with a wrong type will lead to unexpected result.
* If the same property is set more than once, the last one takes effect.
*
* @param name The unique identifier (URI) of the property being set.
* @param value The requested value for the property. See
* the SAX2 Programming Guide to learn
* exactly what type of property value each property expects for processing.
* Passing a void pointer that was initialized with a wrong type will lead
* to unexpected result.
* @exception SAXNotRecognizedException If the requested property is not known.
* @exception SAXNotSupportedException Property modification is not supported during parse
*/
virtual void setProperty(const XMLCh* const name, void* value) = 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.
* @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 #setContentHandler
* @see #setErrorHandler
*/
virtual void parse
(
const InputSource& source
) = 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).
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
* @exception XMLException An exception from the parser or client
* handler code.
* @see #parse(const InputSource&)
*/
virtual void parse
(
const XMLCh* const systemId
) = 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).
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
* @exception XMLException An exception from the parser or client
* handler code.
* @see #parse(const InputSource&)
*/
virtual void parse
(
const char* const systemId
) = 0;
//@}
// -----------------------------------------------------------------------
// SAX 2.0-ext
// -----------------------------------------------------------------------
/** @name SAX 2.0-ext */
//@{
/**
* This method returns the installed declaration handler.
*
* @return A pointer to the installed declaration handler object.
*/
virtual DeclHandler* getDeclarationHandler() const = 0 ;
/**
* This method returns the installed lexical handler.
*
* @return A pointer to the installed lexical handler object.
*/
virtual LexicalHandler* getLexicalHandler() const = 0 ;
/**
* Allow an application to register a declaration event handler.
*
* If the application does not register a declaration handler,
* all events reported by the SAX parser will be silently
* ignored. (this is the default behaviour implemented by DefaultHandler).
*
* 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 declaration handler.
* @see DeclHandler#DeclHandler
* @see SAXException#SAXException
* @see DefaultHandler#DefaultHandler
*/
virtual void setDeclarationHandler(DeclHandler* const handler) = 0;
/**
* Allow an application to register a lexical event handler.
*
* If the application does not register a lexical handler,
* all 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 error handler.
* @see LexicalHandler#LexicalHandler
* @see SAXException#SAXException
* @see HandlerBase#HandlerBase
*/
virtual void setLexicalHandler(LexicalHandler* const handler) = 0;
//@}
// -----------------------------------------------------------------------
// Getter Methods
// -----------------------------------------------------------------------
/** @name Getter Methods (Xerces-C specific) */
//@{
/**
* This method is used to get the current validator.
*
* <b>SAX2XMLReader assumes responsibility for the validator. It will be
* deleted when the XMLReader is destroyed.</b>
*
* @return A pointer to the validator. An application should not deleted
* the object returned.
*
*/
virtual XMLValidator* getValidator() const = 0;
/** Get error count from the last parse operation.
*
* This method returns the error count from the last parse
* operation. Note that this count is actually stored in the
* scanner, so this method simply returns what the
* scanner reports.
*
* @return number of errors encountered during the latest
* parse operation.
*/
virtual XMLSize_t getErrorCount() const = 0 ;
/**
* This method returns the state of the parser's
* exit-on-First-Fatal-Error flag.
*
* <p>Or you can query the feature "http://apache.org/xml/features/continue-after-fatal-error"
* which indicates the opposite state.</p>
*
* @return true, if the parser is currently configured to
* exit on the first fatal error, false otherwise.
*
* @see #setExitOnFirstFatalError
* @see #getFeature
*/
virtual bool getExitOnFirstFatalError() const = 0;
/**
* This method returns the state of the parser's
* validation-constraint-fatal flag.
*
* <p>Or you can query the feature "http://apache.org/xml/features/validation-error-as-fatal"
* which means the same thing.
*
* @return true, if the parser is currently configured to
* set validation constraint errors as fatal, false
* otherwise.
*
* @see #setValidationConstraintFatal
* @see #getFeature
*/
virtual bool getValidationConstraintFatal() const = 0;
/**
* Retrieve the grammar that is associated with the specified namespace key
*
* @param nameSpaceKey Namespace key
* @return Grammar associated with the Namespace key.
*/
virtual Grammar* getGrammar(const XMLCh* const nameSpaceKey) = 0;
/**
* Retrieve the grammar where the root element is declared.
*
* @return Grammar where root element declared
*/
virtual Grammar* getRootGrammar() = 0;
/**
* Returns the string corresponding to a URI id from the URI string pool.
*
* @param uriId id of the string in the URI string pool.
* @return URI string corresponding to the URI id.
*/
virtual const XMLCh* getURIText(unsigned int uriId) const = 0;
/**
* Returns the current src offset within the input source.
* To be used only while parsing is in progress.
*
* @return offset within the input source
*/
virtual XMLFilePos getSrcOffset() const = 0;
//@}
// -----------------------------------------------------------------------
// Setter Methods
// -----------------------------------------------------------------------
/** @name Setter Methods (Xerces-C specific) */
//@{
/**
* This method is used to set a validator.
*
* <b>SAX2XMLReader assumes responsibility for the validator. It will be
* deleted when the XMLReader is destroyed.</b>
*
* @param valueToAdopt A pointer to the validator that the reader should use.
*
*/
virtual void setValidator(XMLValidator* valueToAdopt) = 0;
/**
* 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>
*
* <p>Or you can set the feature "http://apache.org/xml/features/continue-after-fatal-error"
* which has the opposite behaviour.</p>
*
* <p>If both the feature above and this function are used, the latter takes effect.</p>
*
* @param newState The value specifying whether the parser should
* continue or exit when it encounters the first
* fatal error.
*
* @see #getExitOnFirstFatalError
* @see #setFeature
*/
virtual void setExitOnFirstFatalError(const bool newState) = 0;
/**
* This method allows users to set the parser's behaviour when it
* encounters a validation constraint error. If set to true, and the
* the parser will treat validation error as fatal and will exit depends on the
* state of "getExitOnFirstFatalError". If false, then it will
* report the error and continue processing.
*
* Note: setting this true does not mean the validation error will be printed with
* the word "Fatal Error". It is still printed as "Error", but the parser
* will exit if "setExitOnFirstFatalError" is set to true.
*
* <p>The default value is 'false'.</p>
*
* <p>Or you can set the feature "http://apache.org/xml/features/validation-error-as-fatal"
* which means the same thing.</p>
*
* <p>If both the feature above and this function are used, the latter takes effect.</p>
*
* @param newState If true, the parser will exit if "setExitOnFirstFatalError"
* is set to true.
*
* @see #getValidationConstraintFatal
* @see #setExitOnFirstFatalError
* @see #setFeature
*/
virtual void setValidationConstraintFatal(const bool newState) = 0;
//@}
// -----------------------------------------------------------------------
// Progressive scan methods
// -----------------------------------------------------------------------
/** @name Progressive scan methods */
//@{
/** Begin a progressive parse operation
*
* This method is used to start a progressive parse on a XML file.
* To continue parsing, subsequent calls must be to the parseNext
* method.
*
* It scans through the prolog and returns a token to be used on
* subsequent scanNext() calls. If the return value is true, then the
* token is legal and ready for further use. If it returns false, then
* the scan of the prolog failed and the token is not going to work on
* subsequent scanNext() calls.
*
* @param systemId A pointer to a Unicode string representing the path
* to the XML file to be parsed.
* @param toFill A token maintaing state information to maintain
* internal consistency between invocation of 'parseNext'
* calls.
*
* @return 'true', if successful in parsing the prolog. It indicates the
* user can go ahead with parsing the rest of the file. It
* returns 'false' to indicate that the parser could parse the
* prolog (which means the token will not be valid.)
*
* @see #parseNext
* @see #parseFirst(char*,...)
* @see #parseFirst(InputSource&,...)
*/
virtual bool parseFirst
(
const XMLCh* const systemId
, XMLPScanToken& toFill
) = 0;
/** Begin a progressive parse operation
*
* This method is used to start a progressive parse on a XML file.
* To continue parsing, subsequent calls must be to the parseNext
* method.
*
* It scans through the prolog and returns a token to be used on
* subsequent scanNext() calls. If the return value is true, then the
* token is legal and ready for further use. If it returns false, then
* the scan of the prolog failed and the token is not going to work on
* subsequent scanNext() calls.
*
* @param systemId A pointer to a regular native string representing
* the path to the XML file to be parsed.
* @param toFill A token maintaing state information to maintain
* internal consistency between invocation of 'parseNext'
* calls.
*
* @return 'true', if successful in parsing the prolog. It indicates the
* user can go ahead with parsing the rest of the file. It
* returns 'false' to indicate that the parser could not parse
* the prolog.
*
* @see #parseNext
* @see #parseFirst(XMLCh*,...)
* @see #parseFirst(InputSource&,...)
*/
virtual bool parseFirst
(
const char* const systemId
, XMLPScanToken& toFill
) = 0;
/** Begin a progressive parse operation
*
* This method is used to start a progressive parse on a XML file.
* To continue parsing, subsequent calls must be to the parseNext
* method.
*
* It scans through the prolog and returns a token to be used on
* subsequent scanNext() calls. If the return value is true, then the
* token is legal and ready for further use. If it returns false, then
* the scan of the prolog failed and the token is not going to work on
* subsequent scanNext() calls.
*
* @param source A const reference to the InputSource object which
* points to the XML file to be parsed.
* @param toFill A token maintaing state information to maintain
* internal consistency between invocation of 'parseNext'
* calls.
*
* @return 'true', if successful in parsing the prolog. It indicates the
* user can go ahead with parsing the rest of the file. It
* returns 'false' to indicate that the parser could not parse
* the prolog.
*
* @see #parseNext
* @see #parseFirst(XMLCh*,...)
* @see #parseFirst(char*,...)
*/
virtual bool parseFirst
(
const InputSource& source
, XMLPScanToken& toFill
) = 0;
/** Continue a progressive parse operation
*
* This method is used to continue with progressive parsing of
* XML files started by a call to 'parseFirst' method.
*
* It parses the XML file and stops as soon as it comes across
* a XML token (as defined in the XML specification). Relevant
* callback handlers are invoked as required by the SAX
* specification.
*
* @param token A token maintaing state information to maintain
* internal consistency between invocation of 'parseNext'
* calls.
*
* @return 'true', if successful in parsing the next XML token.
* It indicates the user can go ahead with parsing the rest
* of the file. It returns 'false' to indicate that the parser
* could not find next token as per the XML specification
* production rule.
*
* @see #parseFirst(XMLCh*,...)
* @see #parseFirst(char*,...)
* @see #parseFirst(InputSource&,...)
*/
virtual bool parseNext(XMLPScanToken& token) = 0;
/** Reset the parser after a progressive parse
*
* If a progressive parse loop exits before the end of the document
* is reached, the parser has no way of knowing this. So it will leave
* open any files or sockets or memory buffers that were in use at
* the time that the parse loop exited.
*
* The next parse operation will cause these open files and such to
* be closed, but the next parse operation might occur at some unknown
* future point. To avoid this problem, you should reset the parser if
* you exit the loop early.
*
* If you exited because of an error, then this cleanup will be done
* for you. Its only when you exit the file prematurely of your own
* accord, because you've found what you wanted in the file most
* likely.
*
* @param token A token maintaing state information to maintain
* internal consistency between invocation of 'parseNext'
* calls.
*/
virtual void parseReset(XMLPScanToken& token) = 0;
//@}
// -----------------------------------------------------------------------
// Grammar preparsing interface
// -----------------------------------------------------------------------
/** @name Grammar preparsing interface's. */
//@{
/**
* Preparse schema grammar (XML Schema, DTD, etc.) via an input source
* object.
*
* This method invokes the preparsing process on a schema grammar XML
* file specified by the SAX InputSource parameter. If the 'toCache' flag
* is enabled, the parser will cache the grammars for re-use. If a grammar
* key is found in the pool, no caching of any grammar will take place.
*
*
* @param source A const reference to the SAX InputSource object which
* points to the schema grammar file to be preparsed.
* @param grammarType The grammar type (Schema or DTD).
* @param toCache If <code>true</code>, we cache the preparsed grammar,
* otherwise, no caching. Default is <code>false</code>.
* @return The preparsed schema grammar object (SchemaGrammar or
* DTDGrammar). That grammar object is owned by the parser.
*
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
* @exception XMLException An exception from the parser or client
* handler code.
* @exception DOMException A DOM exception as per DOM spec.
*
* @see InputSource#InputSource
*/
virtual Grammar* loadGrammar(const InputSource& source,
const Grammar::GrammarType grammarType,
const bool toCache = false) = 0;
/**
* Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL
*
* This method invokes the preparsing process on a schema grammar XML
* file specified by the file path parameter. If the 'toCache' flag
* is enabled, the parser will cache the grammars for re-use. If a grammar
* key is found in the pool, no caching of any grammar will take place.
*
*
* @param systemId A const XMLCh pointer to the Unicode string which
* contains the path to the XML grammar file to be
* preparsed.
* @param grammarType The grammar type (Schema or DTD).
* @param toCache If <code>true</code>, we cache the preparsed grammar,
* otherwise, no caching. Default is <code>false</code>.
* @return The preparsed schema grammar object (SchemaGrammar or
* DTDGrammar). That grammar object is owned by the parser.
*
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
* @exception XMLException An exception from the parser or client
* handler code.
* @exception DOMException A DOM exception as per DOM spec.
*/
virtual Grammar* loadGrammar(const XMLCh* const systemId,
const Grammar::GrammarType grammarType,
const bool toCache = false) = 0;
/**
* Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL
*
* This method invokes the preparsing process on a schema grammar XML
* file specified by the file path parameter. If the 'toCache' flag
* is enabled, the parser will cache the grammars for re-use. If a grammar
* key is found in the pool, no caching of any grammar will take place.
*
*
* @param systemId A const char pointer to a native string which contains
* the path to the XML grammar file to be preparsed.
* @param grammarType The grammar type (Schema or DTD).
* @param toCache If <code>true</code>, we cache the preparsed grammar,
* otherwise, no caching. Default is <code>false</code>.
* @return The preparsed schema grammar object (SchemaGrammar or
* DTDGrammar). That grammar object is owned by the parser.
*
* @exception SAXException Any SAX exception, possibly
* wrapping another exception.
* @exception XMLException An exception from the parser or client
* handler code.
* @exception DOMException A DOM exception as per DOM spec.
*/
virtual Grammar* loadGrammar(const char* const systemId,
const Grammar::GrammarType grammarType,
const bool toCache = false) = 0;
/**
* Clear the cached grammar pool
*/
virtual void resetCachedGrammarPool() = 0;
/** Set maximum input buffer size
*
* This method allows users to limit the size of buffers used in parsing
* XML character data. The effect of setting this size is to limit the
* size of a ContentHandler::characters() call.
*
* The parser's default input buffer size is 1 megabyte.
*
* @param bufferSize The maximum input buffer size
*/
virtual void setInputBufferSize(const XMLSize_t bufferSize);
//@}
// -----------------------------------------------------------------------
// Advanced document handler list maintenance methods
// -----------------------------------------------------------------------
/** @name Advanced document handler list maintenance methods */
//@{
/**
* This method installs the specified 'advanced' document callback
* handler, thereby allowing the user to customize the processing,
* if they choose to do so. Any number of advanced callback handlers
* maybe installed.
*
* <p>The methods in the advanced callback interface represent
* Xerces-C extensions. There is no specification for this interface.</p>
*
* @param toInstall A pointer to the users advanced callback handler.
*
* @see #removeAdvDocHandler
*/
virtual void installAdvDocHandler(XMLDocumentHandler* const toInstall) = 0;
/**
* This method removes the 'advanced' document handler callback from
* the underlying parser scanner. If no handler is installed, advanced
* callbacks are not invoked by the scanner.
* @param toRemove A pointer to the advanced callback handler which
* should be removed.
*
* @see #installAdvDocHandler
*/
virtual bool removeAdvDocHandler(XMLDocumentHandler* const toRemove) = 0;
//@}
private :
/* The copy constructor, you cannot call this directly */
SAX2XMLReader(const SAX2XMLReader&);
/* The assignment operator, you cannot call this directly */
SAX2XMLReader& operator=(const SAX2XMLReader&);
};
inline void SAX2XMLReader::setInputBufferSize(const XMLSize_t /*bufferSize*/)
{
}
XERCES_CPP_NAMESPACE_END
#endif

View File

@@ -0,0 +1,71 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
*/
/*
* $Id: XMLReaderFactory.hpp 932887 2010-04-11 13:04:59Z borisk $
*/
#if !defined(XERCESC_INCLUDE_GUARD_XMLREADERFACTORY_HPP)
#define XERCESC_INCLUDE_GUARD_XMLREADERFACTORY_HPP
#include <xercesc/sax2/SAX2XMLReader.hpp>
#include <xercesc/sax/SAXException.hpp>
XERCES_CPP_NAMESPACE_BEGIN
class MemoryManager;
class XMLGrammarPool;
/**
* Creates a SAX2 parser (SAX2XMLReader).
*
* <p>Note: The parser object returned by XMLReaderFactory is owned by the
* calling users, and it's the responsibility of the users to delete that
* parser object, once they no longer need it.</p>
*
* @see SAX2XMLReader#SAX2XMLReader
*/
class SAX2_EXPORT XMLReaderFactory
{
protected: // really should be private, but that causes compiler warnings.
XMLReaderFactory() ;
~XMLReaderFactory() ;
public:
static SAX2XMLReader * createXMLReader( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
, XMLGrammarPool* const gramPool = 0
) ;
static SAX2XMLReader * createXMLReader(const XMLCh* className) ;
private:
// -----------------------------------------------------------------------
// Unimplemented constructors and operators
// -----------------------------------------------------------------------
XMLReaderFactory(const XMLReaderFactory&);
XMLReaderFactory& operator=(const XMLReaderFactory&);
};
inline SAX2XMLReader * XMLReaderFactory::createXMLReader(const XMLCh *)
{
throw SAXNotSupportedException();
// unimplemented
return 0;
}
XERCES_CPP_NAMESPACE_END
#endif