2003-09-11 12:26:53 +02:00
|
|
|
#ifndef ARABICA_XML_FILTER_H
|
|
|
|
#define ARABICA_XML_FILTER_H
|
2002-06-21 13:16:28 +02:00
|
|
|
|
|
|
|
// XMLFilter.h
|
|
|
|
|
|
|
|
#include <string>
|
2007-09-05 00:55:47 +02:00
|
|
|
#include <SAX/ArabicaConfig.hpp>
|
2003-09-09 13:14:48 +02:00
|
|
|
|
2007-09-05 00:55:47 +02:00
|
|
|
#include <SAX/XMLReader.hpp>
|
2002-06-21 13:16:28 +02:00
|
|
|
|
2007-09-05 11:49:18 +02:00
|
|
|
namespace Arabica
|
|
|
|
{
|
2002-06-21 13:16:28 +02:00
|
|
|
namespace SAX
|
|
|
|
{
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Interface for an XML filter.
|
|
|
|
*
|
|
|
|
* <p>An XML filter is like an XML reader, except that it obtains its
|
|
|
|
* events from another XML reader rather than a primary source like
|
|
|
|
* an XML document or database. Filters can modify a stream of
|
|
|
|
* events as they pass on to the final application.</p>
|
|
|
|
*
|
|
|
|
* <p>The XMLFilterImpl helper class provides a convenient base
|
2007-09-05 14:57:07 +02:00
|
|
|
* for creating SAX2 filters, by passing on all {@link EntityResolver
|
|
|
|
* EntityResolver}, {@link DTDHandler DTDHandler},
|
|
|
|
* {@link ContentHandler ContentHandler} and {@link ErrorHandler
|
2002-06-21 13:16:28 +02:00
|
|
|
* ErrorHandler} events automatically.</p>
|
|
|
|
*
|
|
|
|
* @since SAX 2.0
|
|
|
|
* @author Jez Higgins,
|
|
|
|
* <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a>
|
|
|
|
* @version 2.0
|
2007-09-05 14:57:07 +02:00
|
|
|
* @see XMLFilterImpl
|
2002-06-21 13:16:28 +02:00
|
|
|
*/
|
2008-07-16 11:01:08 +02:00
|
|
|
template<class string_type, class string_adaptor_type>
|
|
|
|
class XMLFilter : public XMLReaderInterface<string_type, string_adaptor_type>
|
2002-06-21 13:16:28 +02:00
|
|
|
{
|
|
|
|
public:
|
2008-07-16 11:01:08 +02:00
|
|
|
typedef XMLReaderInterface<string_type, string_adaptor_type> XMLReaderT;
|
2008-07-15 19:59:03 +02:00
|
|
|
typedef typename XMLReaderT::string_adaptor string_adaptor;
|
2002-06-21 13:16:28 +02:00
|
|
|
|
2007-09-05 14:57:07 +02:00
|
|
|
virtual ~XMLFilter() { }
|
2002-06-21 13:16:28 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Set the parent reader.
|
|
|
|
*
|
|
|
|
* <p>This method allows the application to link the filter to
|
|
|
|
* a parent reader (which may be another filter).</p>
|
|
|
|
*
|
|
|
|
* @param parent The parent reader.
|
|
|
|
*/
|
|
|
|
virtual void setParent(XMLReaderT& parent) = 0;
|
|
|
|
/**
|
|
|
|
* Get the parent reader.
|
|
|
|
*
|
|
|
|
* <p>This method allows the application to query the parent
|
|
|
|
* reader (which may be another filter). It is generally a
|
|
|
|
* bad idea to perform any operations on the parent reader
|
|
|
|
* directly: they should all pass through this filter.</p>
|
|
|
|
*
|
|
|
|
* @return The parent filter, or 0 if none has been set.
|
|
|
|
*/
|
|
|
|
virtual XMLReaderT* getParent() const = 0;
|
2007-09-05 14:57:07 +02:00
|
|
|
}; // class XMLFilter
|
2002-06-21 13:16:28 +02:00
|
|
|
|
2007-09-05 11:49:18 +02:00
|
|
|
} // namespace SAX
|
|
|
|
} // namespace Arabica
|
2002-06-21 13:16:28 +02:00
|
|
|
|
|
|
|
#endif
|
|
|
|
// end of file
|