// SAX document handler. // http://www.saxproject.org // No warranty; no copyright -- use this as you will. // $Id: DocumentHandler.java,v 1.10 2004/12/11 15:41:09 dog Exp $ package org.xml.sax; /** * Receive notification of general document events. * * * This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. * * * This was the main event-handling interface for SAX1; in * SAX2, it has been replaced by {@link org.xml.sax.ContentHandler * ContentHandler}, which provides Namespace support and reporting * of skipped entities. This interface is included in SAX2 only * to support legacy SAX1 applications. * * 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. * * Application writers who do not want to implement the entire * interface can derive a class from HandlerBase, which implements * the default functionality; parser writers can instantiate * HandlerBase 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. * * @deprecated This interface has been replaced by the SAX2 * {@link org.xml.sax.ContentHandler ContentHandler} * interface, which includes Namespace support. * @since SAX 1.0 * @author David Megginson * @version 2.0.1 (sax2r2) * @see org.xml.sax.Parser#setDocumentHandler * @see org.xml.sax.Locator * @see org.xml.sax.HandlerBase */ public interface DocumentHandler { /** * 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. * @see org.xml.sax.Locator */ public abstract void setDocumentLocator (Locator locator); /** * Receive notification of the beginning of a document. * * The SAX parser will invoke this method only once, before any * other methods in this interface or in DTDHandler (except for * setDocumentLocator). * * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. */ public abstract void startDocument () throws SAXException; /** * Receive notification of the end of a document. * * 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. * * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. */ public abstract void endDocument () throws SAXException; /** * Receive notification of the beginning of an element. * * 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. * * If the element name has a namespace prefix, the prefix will * still be attached. Note that the attribute list provided will * contain only attributes with explicit values (specified or * defaulted): #IMPLIED attributes will be omitted. * * @param name The element type name. * @param atts The attributes attached to the element, if any. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see #endElement * @see org.xml.sax.AttributeList */ public abstract void startElement (String name, AttributeList atts) throws SAXException; /** * Receive notification of the end of an element. * * 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). * * If the element name has a namespace prefix, the prefix will * still be attached to the name. * * @param name The element type name * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. */ public abstract void endElement (String name) throws SAXException; /** * Receive notification of character data. * * 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. * * The application must not attempt to read from the array * outside of the specified range. * * Note that some parsers will report whitespace using the * ignorableWhitespace() method rather than this one (validating * parsers must do so). * * @param ch The characters from the XML document. * @param start The start position in the array. * @param length The number of characters to read from the array. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see #ignorableWhitespace * @see org.xml.sax.Locator */ public abstract void characters (char ch[], int start, int length) throws SAXException; /** * Receive notification of ignorable whitespace in element content. * * 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. * * 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. * * The application must not attempt to read from the array * outside of the specified range. * * @param ch The characters from the XML document. * @param start The start position in the array. * @param length The number of characters to read from the array. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see #characters */ public abstract void ignorableWhitespace (char ch[], int start, int length) throws SAXException; /** * Receive notification of a processing instruction. * * 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. * * 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. * * @param target The processing instruction target. * @param data The processing instruction data, or null if * none was supplied. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. */ public abstract void processingInstruction (String target, String data) throws SAXException; } // end of DocumentHandler.java