1 /*
   2  * reserved comment block
   3  * DO NOT REMOVE OR ALTER!
   4  */
   5 /*
   6  * Copyright 2000-2002,2004 The Apache Software Foundation.
   7  *
   8  * Licensed under the Apache License, Version 2.0 (the "License");
   9  * you may not use this file except in compliance with the License.
  10  * You may obtain a copy of the License at
  11  *
  12  *      http://www.apache.org/licenses/LICENSE-2.0
  13  *
  14  * Unless required by applicable law or agreed to in writing, software
  15  * distributed under the License is distributed on an "AS IS" BASIS,
  16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  17  * See the License for the specific language governing permissions and
  18  * limitations under the License.
  19  */
  20 
  21 package com.sun.org.apache.xerces.internal.xni;
  22 
  23 import com.sun.org.apache.xerces.internal.xni.parser.XMLDocumentSource;
  24 
  25 /**
  26  * The document handler interface defines callback methods to report
  27  * information items in XML documents. Parser components interested in
  28  * document information implement this interface and are registered
  29  * as the document handler on the document source.
  30  *
  31  * @author Andy Clark, IBM
  32  *
  33  */
  34 public interface XMLDocumentHandler {
  35 
  36     //
  37     // XMLDocumentHandler methods
  38     //
  39 
  40     /**
  41      * The start of the document.
  42      *
  43      * @param locator  The document locator, or null if the document
  44      *                 location cannot be reported during the parsing
  45      *                 of this document. However, it is <em>strongly</em>
  46      *                 recommended that a locator be supplied that can
  47      *                 at least report the system identifier of the
  48      *                 document.
  49      * @param encoding The auto-detected IANA encoding name of the entity
  50      *                 stream. This value will be null in those situations
  51      *                 where the entity encoding is not auto-detected (e.g.
  52      *                 internal entities or a document entity that is
  53      *                 parsed from a java.io.Reader).
  54      * @param namespaceContext
  55      *                 The namespace context in effect at the
  56      *                 start of this document.
  57      *                 This object represents the current context.
  58      *                 Implementors of this class are responsible
  59      *                 for copying the namespace bindings from the
  60      *                 the current context (and its parent contexts)
  61      *                 if that information is important.
  62      *
  63      * @param augs     Additional information that may include infoset augmentations
  64      * @exception XNIException
  65      *                   Thrown by handler to signal an error.
  66      */
  67     public void startDocument(XMLLocator locator, String encoding,
  68                               NamespaceContext namespaceContext,
  69                               Augmentations augs)
  70         throws XNIException;
  71 
  72     /**
  73      * Notifies of the presence of an XMLDecl line in the document. If
  74      * present, this method will be called immediately following the
  75      * startDocument call.
  76      *
  77      * @param version    The XML version.
  78      * @param encoding   The IANA encoding name of the document, or null if
  79      *                   not specified.
  80      * @param standalone The standalone value, or null if not specified.
  81      * @param augs       Additional information that may include infoset augmentations
  82      *
  83      * @exception XNIException
  84      *                   Thrown by handler to signal an error.
  85      */
  86     public void xmlDecl(String version, String encoding, String standalone, Augmentations augs)
  87         throws XNIException;
  88 
  89     /**
  90      * Notifies of the presence of the DOCTYPE line in the document.
  91      *
  92      * @param rootElement
  93      *                 The name of the root element.
  94      * @param publicId The public identifier if an external DTD or null
  95      *                 if the external DTD is specified using SYSTEM.
  96      * @param systemId The system identifier if an external DTD, null
  97      *                 otherwise.
  98      * @param augs     Additional information that may include infoset augmentations
  99      *
 100      * @exception XNIException
 101      *                   Thrown by handler to signal an error.
 102      */
 103     public void doctypeDecl(String rootElement, String publicId, String systemId, Augmentations augs)
 104         throws XNIException;
 105 
 106     /**
 107      * A comment.
 108      *
 109      * @param text   The text in the comment.
 110      * @param augs   Additional information that may include infoset augmentations
 111      *
 112      * @exception XNIException
 113      *                   Thrown by application to signal an error.
 114      */
 115     public void comment(XMLString text, Augmentations augs) throws XNIException;
 116 
 117     /**
 118      * A processing instruction. Processing instructions consist of a
 119      * target name and, optionally, text data. The data is only meaningful
 120      * to the application.
 121      * <p>
 122      * Typically, a processing instruction's data will contain a series
 123      * of pseudo-attributes. These pseudo-attributes follow the form of
 124      * element attributes but are <strong>not</strong> parsed or presented
 125      * to the application as anything other than text. The application is
 126      * responsible for parsing the data.
 127      *
 128      * @param target The target.
 129      * @param data   The data or null if none specified.
 130      * @param augs   Additional information that may include infoset augmentations
 131      *
 132      * @exception XNIException
 133      *                   Thrown by handler to signal an error.
 134      */
 135     public void processingInstruction(String target, XMLString data, Augmentations augs)
 136         throws XNIException;
 137 
 138     /**
 139      * The start of an element.
 140      *
 141      * @param element    The name of the element.
 142      * @param attributes The element attributes.
 143      * @param augs       Additional information that may include infoset augmentations
 144      *
 145      * @exception XNIException
 146      *                   Thrown by handler to signal an error.
 147      */
 148     public void startElement(QName element, XMLAttributes attributes, Augmentations augs)
 149         throws XNIException;
 150 
 151     /**
 152      * An empty element.
 153      *
 154      * @param element    The name of the element.
 155      * @param attributes The element attributes.
 156      * @param augs       Additional information that may include infoset augmentations
 157      *
 158      * @exception XNIException
 159      *                   Thrown by handler to signal an error.
 160      */
 161     public void emptyElement(QName element, XMLAttributes attributes, Augmentations augs)
 162         throws XNIException;
 163 
 164     /**
 165      * This method notifies the start of a general entity.
 166      * <p>
 167      * <strong>Note:</strong> This method is not called for entity references
 168      * appearing as part of attribute values.
 169      *
 170      * @param name     The name of the general entity.
 171      * @param identifier The resource identifier.
 172      * @param encoding The auto-detected IANA encoding name of the entity
 173      *                 stream. This value will be null in those situations
 174      *                 where the entity encoding is not auto-detected (e.g.
 175      *                 internal entities or a document entity that is
 176      *                 parsed from a java.io.Reader).
 177      * @param augs     Additional information that may include infoset augmentations
 178      *
 179      * @exception XNIException Thrown by handler to signal an error.
 180      */
 181     public void startGeneralEntity(String name,
 182                                    XMLResourceIdentifier identifier,
 183                                    String encoding,
 184                                    Augmentations augs) throws XNIException;
 185 
 186     /**
 187      * Notifies of the presence of a TextDecl line in an entity. If present,
 188      * this method will be called immediately following the startEntity call.
 189      * <p>
 190      * <strong>Note:</strong> This method will never be called for the
 191      * document entity; it is only called for external general entities
 192      * referenced in document content.
 193      * <p>
 194      * <strong>Note:</strong> This method is not called for entity references
 195      * appearing as part of attribute values.
 196      *
 197      * @param version  The XML version, or null if not specified.
 198      * @param encoding The IANA encoding name of the entity.
 199      * @param augs     Additional information that may include infoset augmentations
 200      *
 201      * @exception XNIException
 202      *                   Thrown by handler to signal an error.
 203      */
 204     public void textDecl(String version, String encoding, Augmentations augs) throws XNIException;
 205 
 206     /**
 207      * This method notifies the end of a general entity.
 208      * <p>
 209      * <strong>Note:</strong> This method is not called for entity references
 210      * appearing as part of attribute values.
 211      *
 212      * @param name   The name of the entity.
 213      * @param augs   Additional information that may include infoset augmentations
 214      *
 215      * @exception XNIException
 216      *                   Thrown by handler to signal an error.
 217      */
 218     public void endGeneralEntity(String name, Augmentations augs) throws XNIException;
 219 
 220     /**
 221      * Character content.
 222      *
 223      * @param text   The content.
 224      * @param augs   Additional information that may include infoset augmentations
 225      *
 226      * @exception XNIException
 227      *                   Thrown by handler to signal an error.
 228      */
 229     public void characters(XMLString text, Augmentations augs) throws XNIException;
 230 
 231     /**
 232      * Ignorable whitespace. For this method to be called, the document
 233      * source must have some way of determining that the text containing
 234      * only whitespace characters should be considered ignorable. For
 235      * example, the validator can determine if a length of whitespace
 236      * characters in the document are ignorable based on the element
 237      * content model.
 238      *
 239      * @param text   The ignorable whitespace.
 240      * @param augs   Additional information that may include infoset augmentations
 241      *
 242      * @exception XNIException
 243      *                   Thrown by handler to signal an error.
 244      */
 245     public void ignorableWhitespace(XMLString text, Augmentations augs) throws XNIException;
 246 
 247     /**
 248      * The end of an element.
 249      *
 250      * @param element The name of the element.
 251      * @param augs    Additional information that may include infoset augmentations
 252      *
 253      * @exception XNIException
 254      *                   Thrown by handler to signal an error.
 255      */
 256     public void endElement(QName element, Augmentations augs) throws XNIException;
 257 
 258     /**
 259      * The start of a CDATA section.
 260      *
 261      * @param augs   Additional information that may include infoset augmentations
 262      *
 263      * @exception XNIException
 264      *                   Thrown by handler to signal an error.
 265      */
 266     public void startCDATA(Augmentations augs) throws XNIException;
 267 
 268     /**
 269      * The end of a CDATA section.
 270      *
 271      * @param augs   Additional information that may include infoset augmentations
 272      *
 273      * @exception XNIException
 274      *                   Thrown by handler to signal an error.
 275      */
 276     public void endCDATA(Augmentations augs) throws XNIException;
 277 
 278     /**
 279      * The end of the document.
 280      *
 281      * @param augs   Additional information that may include infoset augmentations
 282      *
 283      * @exception XNIException
 284      *                   Thrown by handler to signal an error.
 285      */
 286     public void endDocument(Augmentations augs) throws XNIException;
 287 
 288 
 289     /** Sets the document source. */
 290     public void setDocumentSource(XMLDocumentSource source);
 291 
 292 
 293     /** Returns the document source. */
 294     public XMLDocumentSource getDocumentSource();
 295 
 296 } // interface XMLDocumentHandler