230 lines
6.0 KiB
C++
230 lines
6.0 KiB
C++
/*
|
|
* The contents of this file are subject to the Mozilla Public
|
|
* License Version 1.1 (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.mozilla.org/MPL/
|
|
*
|
|
* Software distributed under the License is distributed on an "AS
|
|
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
|
* implied. See the License for the specific language governing
|
|
* rights and limitations under the License.
|
|
*
|
|
* The Original Code is TransforMiiX XSLT processor.
|
|
*
|
|
* The Initial Developer of the Original Code is Keith Visco.
|
|
* Portions created by Keith Visco
|
|
* (C) 1999-2000 Keith Visco. All Rights Reserved.
|
|
*
|
|
* Contributor(s):
|
|
* Keith Visco, kvisco@ziplink.net
|
|
* -- original author.
|
|
*
|
|
*/
|
|
|
|
|
|
#ifndef TRANSFRMX_XML_EVENT_HANDLER_H
|
|
#define TRANSFRMX_XML_EVENT_HANDLER_H
|
|
|
|
|
|
#include "TxString.h"
|
|
|
|
|
|
#ifndef UNICODE_CHAR
|
|
typedef unsigned short UNICODE_CHAR
|
|
#endif
|
|
|
|
//-- prototypes
|
|
class ErrorHandler;
|
|
class AttributeList;
|
|
|
|
/**
|
|
* A interface for handling XML documents, modeled
|
|
* after Dave Megginson's SAX 1.0 API. This also has methods
|
|
* that allow handling CDATA characters, comments, etc.
|
|
* I apologize for not throwing Exceptions, I am trying
|
|
* to follow Mozilla.org's guidelines for writing portable C++.
|
|
**/
|
|
class XMLEventHandler {
|
|
|
|
public:
|
|
|
|
|
|
/**
|
|
* Default Destructor
|
|
**/
|
|
virtual ~XMLEventHandler();
|
|
|
|
/**
|
|
* Signals to recieve CDATA characters
|
|
* This is useful when building a DOM tree, and the user
|
|
* explicitly wants a CDATA section created in the tree.
|
|
* @param chars the characters to receive
|
|
**/
|
|
virtual void cdata(UNICODE_CHAR* chars, int length) = 0;
|
|
|
|
/**
|
|
* Signals to recieve characters
|
|
* @param chars the characters to recieve
|
|
* @param length the number of characters to receive
|
|
**/
|
|
virtual void characters(UNICODE_CHAR* chars, int length) = 0;
|
|
|
|
|
|
/**
|
|
* Signals to recieve data that should be treated as a comment
|
|
* @param data the comment data to recieve
|
|
**/
|
|
virtual void comment(String& data) = 0;
|
|
|
|
/**
|
|
* Signals the end of a document. It is an error to call this method more than once.
|
|
**/
|
|
virtual void endDocument() = 0;
|
|
|
|
/**
|
|
* Signals to recieve the end of an element
|
|
* @param name the name of the element
|
|
* @param nsURI the namespace URI of the element, a null
|
|
* pointer indicates the default namespace
|
|
**/
|
|
virtual void endElement(const String& name, String* nsURI) = 0;
|
|
|
|
|
|
/**
|
|
* Signals to receive an entity reference
|
|
* @param name the name of the entity reference
|
|
**/
|
|
virtual void entityReference(String& name) = 0;
|
|
|
|
/**
|
|
* Appends the current error message, if any, to the given String.
|
|
* @param errMsg, the String in which to append the current error message
|
|
**/
|
|
virtual void getErrorMessage(String& errMsg) = 0;
|
|
|
|
/**
|
|
* Returns true if an error has occured
|
|
* @return true if an error has occured
|
|
**/
|
|
virtual MBool hasError() = 0;
|
|
|
|
/**
|
|
* Signals to receive a processing instruction
|
|
* @param target the target of the processing instruction
|
|
* @param data the data of the processing instruction
|
|
**/
|
|
virtual void processingInstruction(const String& target, const String& data) = 0;
|
|
|
|
|
|
/**
|
|
* Sets the error handler for this XMLHandler
|
|
* @param errorHandler a pointer to the ErrorHandler to use when
|
|
* errors are encountered
|
|
**/
|
|
virtual void setErrorHandler(ErrorHandler* errorHandler) = 0;
|
|
|
|
/**
|
|
* Signals the start of a document.
|
|
**/
|
|
virtual void startDocument() = 0;
|
|
|
|
/**
|
|
* Signals to receive the start of an element.
|
|
* @param name the name of the element
|
|
* @param nsURI the namespace URI of the element, or 0 if the default namespace is to be used.
|
|
* @param atts the AttributeList contain attribute name
|
|
* value pairs
|
|
**/
|
|
virtual void startElement(const String& name, String* nsURI, AttributeList* atts) = 0;
|
|
|
|
/**
|
|
* Signals to receive the start of an element.
|
|
* @param name the name of the element
|
|
* @param nsPrefix, the desired namespace prefix for the element.
|
|
* @param nsURI the namespace URI of the element
|
|
* @param atts the AttributeList contain attribute name
|
|
* value pairs
|
|
**/
|
|
virtual void startElement(const String& name, const String& nsPrefix, const String& nsURI, AttributeList* atts) = 0;
|
|
|
|
|
|
}; //-- XMLEventHandler
|
|
|
|
|
|
/**
|
|
* An interface (abstract class) for dealing with a list of
|
|
* Attributes. This is based off of SAX 1.0.
|
|
**/
|
|
class AttributeList {
|
|
|
|
public:
|
|
|
|
/**
|
|
* Default destructor
|
|
**/
|
|
virtual ~AttributeList();
|
|
|
|
/**
|
|
* @return the number of attributes in the list
|
|
**/
|
|
virtual int getLength() = 0;
|
|
|
|
/**
|
|
* @return the name of the attribute located at the given index
|
|
**/
|
|
virtual String& getName(int index) = 0;
|
|
|
|
/**
|
|
* Returns the namespace of the attribute located at the given index.
|
|
* If there is no namespace defined for the attribute, 0 will be returned.
|
|
* @return the namespace of the attribute located at the given index, or
|
|
* 0 if no namespace has been defined.
|
|
**/
|
|
virtual String* getNamespace(int index) = 0;
|
|
|
|
/**
|
|
* @return the value of the attribute located at the given index
|
|
**/
|
|
virtual const String& getValue(int index) = 0;
|
|
|
|
/**
|
|
* @return the value of the attribute with the given name
|
|
**/
|
|
virtual const String& getValue(const String& name) = 0;
|
|
|
|
/**
|
|
* @return the value of the attribute with the given name
|
|
**/
|
|
virtual const String& getValue(const String& name, String* nsURI) = 0;
|
|
|
|
|
|
}; //-- AttributeList
|
|
|
|
|
|
/**
|
|
* The ErrorHandler to use for dealing with errors
|
|
**/
|
|
class ErrorHandler {
|
|
|
|
public:
|
|
|
|
/**
|
|
* Signals a non fatal error
|
|
**/
|
|
virtual void error(String& message) = 0;
|
|
|
|
/**
|
|
* Signals a fatal error
|
|
**/
|
|
virtual void fatal(String& message) = 0;
|
|
|
|
/**
|
|
* Signals a warning message
|
|
**/
|
|
virtual void warning(String& message) = 0;
|
|
|
|
|
|
}; //-- ErrorHandler
|
|
|
|
#endif
|