org.apache.xml.serialize

## Class BaseMarkupSerializer

- java.lang.Object
- - org.apache.xml.serialize.BaseMarkupSerializer

- All Implemented Interfaces:
    DOMSerializer, Serializer, org.xml.sax.ContentHandler, org.xml.sax.DocumentHandler, org.xml.sax.DTDHandler, org.xml.sax.ext.DeclHandler, org.xml.sax.ext.LexicalHandler
  Direct Known Subclasses:
    HTMLSerializer, TextSerializer, XMLSerializer

  Deprecated.
  This class was deprecated in Xerces 2.9.0. It is recommended that new applications use the DOM Level 3 LSSerializer or JAXP's Transformation API for XML (TrAX) for serializing XML. See the Xerces documentation for more information.

      public abstract class BaseMarkupSerializer
      extends java.lang.Object
      implements org.xml.sax.ContentHandler, org.xml.sax.DocumentHandler, org.xml.sax.ext.LexicalHandler, org.xml.sax.DTDHandler, org.xml.sax.ext.DeclHandler, DOMSerializer, Serializer

  Base class for a serializer supporting both DOM and SAX pretty serializing of XML/HTML/XHTML documents. Derives classes perform the method-specific serializing, this class provides the common serializing mechanisms.

  The serializer must be initialized with the proper writer and output format before it can be used by calling `setOutputCharStream(java.io.Writer)` or `setOutputByteStream(java.io.OutputStream)` for the writer and `setOutputFormat(org.apache.xml.serialize.OutputFormat)` for the output format.

  The serializer can be reused any number of times, but cannot be used concurrently by two threads.

  If an output stream is used, the encoding is taken from the output format (defaults to `UTF-8`). If a writer is used, make sure the writer uses the same encoding (if applies) as specified in the output format.

  The serializer supports both DOM and SAX. DOM serializing is done by calling `serialize(Document)` and SAX serializing is done by firing SAX events and using the serializer as a document handler. This also applies to derived class.

  If an I/O exception occurs while serializing, the serializer will not throw an exception directly, but only throw it at the end of serializing (either DOM or SAX's `DocumentHandler.endDocument()`.

  For elements that are not specified as whitespace preserving, the serializer will potentially break long text lines at space boundaries, indent lines, and serialize elements on separate lines. Line terminators will be regarded as spaces, and spaces at beginning of line will be stripped.

  When indenting, the serializer is capable of detecting seemingly element content, and serializing these elements indented on separate lines. An element is serialized indented when it is the first or last child of an element, or immediate following or preceding another element.

  Version:
    $Revision: 923974 $ $Date: 2010-03-17 02:17:04 +0530 (Wed, 17 Mar 2010) $
  Author:
    Assaf Arkin, Rahul Srivastava, Elena Litani, IBM
  See Also:
    `Serializer`, `LSSerializer`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected java.lang.String` | `_docTypePublicId` Deprecated. The system identifier of the document type, if known.
    `protected java.lang.String` | `_docTypeSystemId` Deprecated. The system identifier of the document type, if known.
    `protected EncodingInfo` | `_encodingInfo` Deprecated.
    `protected OutputFormat` | `_format` Deprecated. The output format associated with this serializer.
    `protected boolean` | `_indenting` Deprecated. True if indenting printer.
    `protected java.util.Hashtable` | `_prefixes` Deprecated. Association between namespace URIs (keys) and prefixes (values).
    `protected Printer` | `_printer` Deprecated. The printer used for printing text parts.
    `protected boolean` | `_started` Deprecated. If the document has been started (header serialized), this flag is set to true so it's not started twice.
    `protected org.w3c.dom.Node` | `fCurrentNode` Deprecated. Current node that is being processed
    `protected org.apache.xerces.dom.DOMErrorImpl` | `fDOMError` Deprecated.
    `protected org.w3c.dom.DOMErrorHandler` | `fDOMErrorHandler` Deprecated.
    `protected org.w3c.dom.ls.LSSerializerFilter` | `fDOMFilter` Deprecated.
    `protected short` | `features` Deprecated.
    `protected java.lang.StringBuffer` | `fStrBuffer` Deprecated. Temporary buffer to store character data

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `BaseMarkupSerializer(OutputFormat format)` Deprecated. Protected constructor can only be used by derived class.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `org.xml.sax.ContentHandler` | `asContentHandler()` Deprecated. Return a `ContentHandler` interface into this serializer.
    `org.xml.sax.DocumentHandler` | `asDocumentHandler()` Deprecated. Return a `DocumentHandler` interface into this serializer.
    `DOMSerializer` | `asDOMSerializer()` Deprecated. Return a `DOMSerializer` interface into this serializer.
    `void` | `attributeDecl(java.lang.String eName, java.lang.String aName, java.lang.String type, java.lang.String valueDefault, java.lang.String value)` Deprecated. Report an attribute type declaration.
    `void` | `characters(char[] chars, int start, int length)` Deprecated. Receive notification of character data.
    `protected void` | `characters(java.lang.String text)` Deprecated. Called to print the text contents in the prevailing element format.
    `protected void` | `checkUnboundNamespacePrefixedNode(org.w3c.dom.Node node)` Deprecated. DOM level 3: Check a node to determine if it contains unbound namespace prefixes.
    `protected void` | `cleanup()` Deprecated.
    `void` | `comment(char[] chars, int start, int length)` Deprecated. Report an XML comment anywhere in the document.
    `void` | `comment(java.lang.String text)` Deprecated.
    `protected ElementState` | `content()` Deprecated. Must be called by a method about to print any type of content.
    `void` | `elementDecl(java.lang.String name, java.lang.String model)` Deprecated. Report an element type declaration.
    `void` | `endCDATA()` Deprecated. Report the end of a CDATA section.
    `void` | `endDocument()` Deprecated. Called at the end of the document to wrap it up.
    `void` | `endDTD()` Deprecated. Report the end of DTD declarations.
    `void` | `endEntity(java.lang.String name)` Deprecated. Report the end of an entity.
    `void` | `endNonEscaping()` Deprecated.
    `void` | `endPrefixMapping(java.lang.String prefix)` Deprecated. End the scope of a prefix-URI mapping.
    `void` | `endPreserving()` Deprecated.
    `protected ElementState` | `enterElementState(java.lang.String namespaceURI, java.lang.String localName, java.lang.String rawName, boolean preserveSpace)` Deprecated. Enter a new element state for the specified element.
    `void` | `externalEntityDecl(java.lang.String name, java.lang.String publicId, java.lang.String systemId)` Deprecated. Report a parsed external entity declaration.
    `protected void` | `fatalError(java.lang.String message)` Deprecated.
    `protected ElementState` | `getElementState()` Deprecated. Return the state of the current element.
    `protected abstract java.lang.String` | `getEntityRef(int ch)` Deprecated. Returns the suitable entity reference for this character value, or null if no such entity exists.
    `protected java.lang.String` | `getPrefix(java.lang.String namespaceURI)` Deprecated. Returns the namespace prefix for the specified URI.
    `void` | `ignorableWhitespace(char[] chars, int start, int length)` Deprecated. Receive notification of ignorable whitespace in element content.
    `void` | `internalEntityDecl(java.lang.String name, java.lang.String value)` Deprecated. Report an internal entity declaration.
    `protected boolean` | `isDocumentState()` Deprecated. Returns true if in the state of the document.
    `protected ElementState` | `leaveElementState()` Deprecated. Leave the current element state and return to the state of the parent element.
    `protected org.w3c.dom.DOMError` | `modifyDOMError(java.lang.String message, short severity, java.lang.String type, org.w3c.dom.Node node)` Deprecated. The method modifies global DOM error object
    `void` | `notationDecl(java.lang.String name, java.lang.String publicId, java.lang.String systemId)` Deprecated. Receive notification of a notation declaration event.
    `protected void` | `prepare()` Deprecated.
    `protected void` | `printCDATAText(java.lang.String text)` Deprecated.
    `protected void` | `printDoctypeURL(java.lang.String url)` Deprecated. Print a document type public or system identifier URL.
    `protected void` | `printEscaped(int ch)` Deprecated.
    `protected void` | `printEscaped(java.lang.String source)` Deprecated. Escapes a string so it may be printed as text content or attribute value.
    `protected void` | `printText(char[] chars, int start, int length, boolean preserveSpace, boolean unescaped)` Deprecated. Called to print additional text with whitespace handling.
    `protected void` | `printText(java.lang.String text, boolean preserveSpace, boolean unescaped)` Deprecated.
    `void` | `processingInstruction(java.lang.String target, java.lang.String code)` Deprecated. Receive notification of a processing instruction.
    `void` | `processingInstructionIO(java.lang.String target, java.lang.String code)` Deprecated.
    `boolean` | `reset()` Deprecated.
    `void` | `serialize(org.w3c.dom.Document doc)` Deprecated. Serializes the DOM document using the previously specified writer and output format.
    `void` | `serialize(org.w3c.dom.DocumentFragment frag)` Deprecated. Serializes the DOM document fragmnt using the previously specified writer and output format.
    `void` | `serialize(org.w3c.dom.Element elem)` Deprecated. Serializes the DOM element using the previously specified writer and output format.
    `protected abstract void` | `serializeElement(org.w3c.dom.Element elem)` Deprecated. Called to serializee the DOM element.
    `protected void` | `serializeNode(org.w3c.dom.Node node)` Deprecated. Serialize the DOM node.
    `protected void` | `serializePreRoot()` Deprecated. Comments and PIs cannot be serialized before the root element, because the root element serializes the document type, which generally comes first.
    `void` | `setDocumentLocator(org.xml.sax.Locator locator)` Deprecated. Receive an object for locating the origin of SAX document events.
    `void` | `setOutputByteStream(java.io.OutputStream output)` Deprecated. Specifies an output stream to which the document should be serialized.
    `void` | `setOutputCharStream(java.io.Writer writer)` Deprecated. Specifies a writer to which the document should be serialized.
    `void` | `setOutputFormat(OutputFormat format)` Deprecated. Specifies an output format for this serializer.
    `void` | `skippedEntity(java.lang.String name)` Deprecated. Receive notification of a skipped entity.
    `void` | `startCDATA()` Deprecated. Report the start of a CDATA section.
    `void` | `startDocument()` Deprecated. Receive notification of the beginning of a document.
    `void` | `startDTD(java.lang.String name, java.lang.String publicId, java.lang.String systemId)` Deprecated. Report the start of DTD declarations, if any.
    `void` | `startEntity(java.lang.String name)` Deprecated. Report the beginning of some internal and external XML entities.
    `void` | `startNonEscaping()` Deprecated.
    `void` | `startPrefixMapping(java.lang.String prefix, java.lang.String uri)` Deprecated. Begin the scope of a prefix-URI Namespace mapping.
    `void` | `startPreserving()` Deprecated.
    `protected void` | `surrogates(int high, int low, boolean inContent)` Deprecated.
    `void` | `unparsedEntityDecl(java.lang.String name, java.lang.String publicId, java.lang.String systemId, java.lang.String notationName)` Deprecated. Receive notification of an unparsed entity declaration event.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.xml.sax.ContentHandler

      `endElement, startElement`

    - ### Methods inherited from interface org.xml.sax.DocumentHandler

      `endElement, startElement`

- - ### Field Detail

    - #### features

          protected short features

      Deprecated.

    - #### fDOMErrorHandler

          protected org.w3c.dom.DOMErrorHandler fDOMErrorHandler

      Deprecated.

    - #### fDOMError

          protected final org.apache.xerces.dom.DOMErrorImpl fDOMError

      Deprecated.

    - #### fDOMFilter

          protected org.w3c.dom.ls.LSSerializerFilter fDOMFilter

      Deprecated.

    - #### _encodingInfo

          protected EncodingInfo _encodingInfo

      Deprecated.

    - #### _started

          protected boolean _started

      Deprecated.
      If the document has been started (header serialized), this flag is set to true so it's not started twice.

    - #### _prefixes

          protected java.util.Hashtable _prefixes

      Deprecated.
      Association between namespace URIs (keys) and prefixes (values). Accumulated here prior to starting an element and placing this list in the element state.

    - #### _docTypePublicId

          protected java.lang.String _docTypePublicId

      Deprecated.
      The system identifier of the document type, if known.

    - #### _docTypeSystemId

          protected java.lang.String _docTypeSystemId

      Deprecated.
      The system identifier of the document type, if known.

    - #### _format

          protected OutputFormat _format

      Deprecated.
      The output format associated with this serializer. This will never be a null reference. If no format was passed to the constructor, the default one for this document type will be used. The format object is never changed by the serializer.

    - #### _printer

          protected Printer _printer

      Deprecated.
      The printer used for printing text parts.

    - #### _indenting

          protected boolean _indenting

      Deprecated.
      True if indenting printer.

    - #### fStrBuffer

          protected final java.lang.StringBuffer fStrBuffer

      Deprecated.
      Temporary buffer to store character data

    - #### fCurrentNode

          protected org.w3c.dom.Node fCurrentNode

      Deprecated.
      Current node that is being processed

  - ### Constructor Detail

    - #### BaseMarkupSerializer

          protected BaseMarkupSerializer(OutputFormat format)

      Deprecated.
      Protected constructor can only be used by derived class. Must initialize the serializer before serializing any document, by calling `setOutputCharStream(java.io.Writer)` or `setOutputByteStream(java.io.OutputStream)` first

  - ### Method Detail

    - #### asDocumentHandler

          public org.xml.sax.DocumentHandler asDocumentHandler()
                                                        throws java.io.IOException

      Deprecated.
      Description copied from interface: `Serializer`
      Return a `DocumentHandler` interface into this serializer. If the serializer does not support the `DocumentHandler` interface, it should return null.
      Specified by:
        `asDocumentHandler` in interface `Serializer`
      Throws:
        `java.io.IOException`

    - #### asContentHandler

          public org.xml.sax.ContentHandler asContentHandler()
                                                      throws java.io.IOException

      Deprecated.
      Description copied from interface: `Serializer`
      Return a `ContentHandler` interface into this serializer. If the serializer does not support the `ContentHandler` interface, it should return null.
      Specified by:
        `asContentHandler` in interface `Serializer`
      Throws:
        `java.io.IOException`

    - #### asDOMSerializer

          public DOMSerializer asDOMSerializer()
                                        throws java.io.IOException

      Deprecated.
      Description copied from interface: `Serializer`
      Return a `DOMSerializer` interface into this serializer. If the serializer does not support the `DOMSerializer` interface, it should return null.
      Specified by:
        `asDOMSerializer` in interface `Serializer`
      Throws:
        `java.io.IOException`

    - #### setOutputByteStream

          public void setOutputByteStream(java.io.OutputStream output)

      Deprecated.
      Description copied from interface: `Serializer`
      Specifies an output stream to which the document should be serialized. This method should not be called while the serializer is in the process of serializing a document.
      Specified by:
        `setOutputByteStream` in interface `Serializer`

    - #### setOutputCharStream

          public void setOutputCharStream(java.io.Writer writer)

      Deprecated.
      Description copied from interface: `Serializer`
      Specifies a writer to which the document should be serialized. This method should not be called while the serializer is in the process of serializing a document.
      Specified by:
        `setOutputCharStream` in interface `Serializer`

    - #### setOutputFormat

          public void setOutputFormat(OutputFormat format)

      Deprecated.
      Description copied from interface: `Serializer`
      Specifies an output format for this serializer. It the serializer has already been associated with an output format, it will switch to the new format. This method should not be called while the serializer is in the process of serializing a document.
      Specified by:
        `setOutputFormat` in interface `Serializer`
      Parameters:
        `format` - The output format to use

    - #### reset

          public boolean reset()

      Deprecated.

    - #### cleanup

          protected void cleanup()

      Deprecated.

    - #### prepare

          protected void prepare()
                          throws java.io.IOException

      Deprecated.
      Throws:
        `java.io.IOException`

    - #### serialize

          public void serialize(org.w3c.dom.Element elem)
                         throws java.io.IOException

      Deprecated.
      Serializes the DOM element using the previously specified writer and output format. Throws an exception only if an I/O exception occured while serializing.
      Specified by:
        `serialize` in interface `DOMSerializer`
      Parameters:
        `elem` - The element to serialize
      Throws:
        `java.io.IOException` - An I/O exception occured while serializing

    - #### serialize

          public void serialize(org.w3c.dom.DocumentFragment frag)
                         throws java.io.IOException

      Deprecated.
      Serializes the DOM document fragmnt using the previously specified writer and output format. Throws an exception only if an I/O exception occured while serializing.
      Specified by:
        `serialize` in interface `DOMSerializer`
      Parameters:
        `frag` - The document fragment to serialize
      Throws:
        `java.io.IOException` - An I/O exception occured while serializing

    - #### serialize

          public void serialize(org.w3c.dom.Document doc)
                         throws java.io.IOException

      Deprecated.
      Serializes the DOM document using the previously specified writer and output format. Throws an exception only if an I/O exception occured while serializing.
      Specified by:
        `serialize` in interface `DOMSerializer`
      Parameters:
        `doc` - The document to serialize
      Throws:
        `java.io.IOException` - An I/O exception occured while serializing

    - #### startDocument

          public void startDocument()
                             throws org.xml.sax.SAXException

      Deprecated.
      Description copied from interface: `org.xml.sax.ContentHandler`
      Receive notification of the beginning of a document.

      The SAX parser will invoke this method only once, before any other event callbacks (except for `setDocumentLocator`).

      Specified by:
        `startDocument` in interface `org.xml.sax.ContentHandler`
      Specified by:
        `startDocument` in interface `org.xml.sax.DocumentHandler`
      Throws:
        `org.xml.sax.SAXException` - Any SAX exception, possibly wrapping another exception.
      See Also:
        `ContentHandler.endDocument()`

    - #### characters

          public void characters(char[] chars,
                        int start,
                        int length)
                          throws org.xml.sax.SAXException

      Deprecated.
      Description copied from interface: `org.xml.sax.ContentHandler`
      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.

      Individual characters may consist of more than one Java `char` value. There are two important cases where this happens, because characters can't be represented in just sixteen bits. In one case, characters are represented in a Surrogate Pair, using two special Unicode values. Such characters are in the so-called "Astral Planes", with a code point above U+FFFF. A second case involves composite characters, such as a base character combining with one or more accent characters.

      Your code should not assume that algorithms using `char`-at-a-time idioms will be working in character units; in some cases they will split characters. This is relevant wherever XML permits arbitrary characters, such as attribute values, processing instruction data, and comments as well as in data reported from this method. It's also generally relevant whenever Java code manipulates internationalized text; the issue isn't unique to XML.

      Note that some parsers will report whitespace in element content using the `ignorableWhitespace` method rather than this one (validating parsers must do so).

      Specified by:
        `characters` in interface `org.xml.sax.ContentHandler`
      Specified by:
        `characters` in interface `org.xml.sax.DocumentHandler`
      Parameters:
        `chars` - the characters from the XML document
        `start` - the start position in the array
        `length` - the number of characters to read from the array
      Throws:
        `org.xml.sax.SAXException` - Any SAX exception, possibly wrapping another exception.
      See Also:
        `ContentHandler.ignorableWhitespace(char[], int, int)`, `Locator`

    - #### ignorableWhitespace

          public void ignorableWhitespace(char[] chars,
                                 int start,
                                 int length)
                                   throws org.xml.sax.SAXException

      Deprecated.
      Description copied from interface: `org.xml.sax.ContentHandler`
      Receive notification of ignorable whitespace in element content.

      Validating Parsers must use this method to report each chunk of whitespace in element content (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.

      Specified by:
        `ignorableWhitespace` in interface `org.xml.sax.ContentHandler`
      Specified by:
        `ignorableWhitespace` in interface `org.xml.sax.DocumentHandler`
      Parameters:
        `chars` - the characters from the XML document
        `start` - the start position in the array
        `length` - the number of characters to read from the array
      Throws:
        `org.xml.sax.SAXException` - Any SAX exception, possibly wrapping another exception.
      See Also:
        `ContentHandler.characters(char[], int, int)`

    - #### processingInstruction

          public final void processingInstruction(java.lang.String target,
                                   java.lang.String code)
                                           throws org.xml.sax.SAXException

      Deprecated.
      Description copied from interface: `org.xml.sax.ContentHandler`
      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 must 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.

      Like `characters()`, processing instruction data may have characters that need more than one `char` value.

      Specified by:
        `processingInstruction` in interface `org.xml.sax.ContentHandler`
      Specified by:
        `processingInstruction` in interface `org.xml.sax.DocumentHandler`
      Parameters:
        `target` - the processing instruction target
        `code` - the processing instruction data, or null if none was supplied. The data does not include any whitespace separating it from the target
      Throws:
        `org.xml.sax.SAXException` - Any SAX exception, possibly wrapping another exception.

    - #### processingInstructionIO

          public void processingInstructionIO(java.lang.String target,
                                     java.lang.String code)
                                       throws java.io.IOException

      Deprecated.
      Throws:
        `java.io.IOException`

    - #### comment

          public void comment(char[] chars,
                     int start,
                     int length)
                       throws org.xml.sax.SAXException

      Deprecated.
      Description copied from interface: `org.xml.sax.ext.LexicalHandler`
      Report an XML comment anywhere in the document.

      This callback will be used for comments inside or outside the document element, including comments in the external DTD subset (if read). Comments in the DTD must be properly nested inside start/endDTD and start/endEntity events (if used).

      Specified by:
        `comment` in interface `org.xml.sax.ext.LexicalHandler`
      Parameters:
        `chars` - An array holding the characters in the comment.
        `start` - The starting position in the array.
        `length` - The number of characters to use from the array.
      Throws:
        `org.xml.sax.SAXException` - The application may raise an exception.

    - #### comment

          public void comment(java.lang.String text)
                       throws java.io.IOException

      Deprecated.
      Throws:
        `java.io.IOException`

    - #### startCDATA

          public void startCDATA()

      Deprecated.
      Description copied from interface: `org.xml.sax.ext.LexicalHandler`
      Report the start of a CDATA section.

      The contents of the CDATA section will be reported through the regular `characters` event; this event is intended only to report the boundary.

      Specified by:
        `startCDATA` in interface `org.xml.sax.ext.LexicalHandler`
      See Also:
        `LexicalHandler.endCDATA()`

    - #### endCDATA

          public void endCDATA()

      Deprecated.
      Description copied from interface: `org.xml.sax.ext.LexicalHandler`
      Report the end of a CDATA section.
      Specified by:
        `endCDATA` in interface `org.xml.sax.ext.LexicalHandler`
      See Also:
        `LexicalHandler.startCDATA()`

    - #### startNonEscaping

          public void startNonEscaping()

      Deprecated.

    - #### endNonEscaping

          public void endNonEscaping()

      Deprecated.

    - #### startPreserving

          public void startPreserving()

      Deprecated.

    - #### endPreserving

          public void endPreserving()

      Deprecated.

    - #### endDocument

          public void endDocument()
                           throws org.xml.sax.SAXException

      Deprecated.
      Called at the end of the document to wrap it up. Will flush the output stream and throw an exception if any I/O error occured while serializing.
      Specified by:
        `endDocument` in interface `org.xml.sax.ContentHandler`
      Specified by:
        `endDocument` in interface `org.xml.sax.DocumentHandler`
      Throws:
        `org.xml.sax.SAXException` - An I/O exception occured during serializing
      See Also:
        `ContentHandler.startDocument()`

    - #### startEntity

          public void startEntity(java.lang.String name)

      Deprecated.
      Description copied from interface: `org.xml.sax.ext.LexicalHandler`
      Report the beginning of some internal and external XML entities.

      The reporting of parameter entities (including the external DTD subset) is optional, and SAX2 drivers that report LexicalHandler events may not implement it; you can use the `http://xml.org/sax/features/lexical-handler/parameter-entities` feature to query or control the reporting of parameter entities.

      General entities are reported with their regular names, parameter entities have '%' prepended to their names, and the external DTD subset has the pseudo-entity name "[dtd]".

      When a SAX2 driver is providing these events, all other events must be properly nested within start/end entity events. There is no additional requirement that events from `DeclHandler` or `DTDHandler` be properly ordered.

      Note that skipped entities will be reported through the `skippedEntity` event, which is part of the ContentHandler interface.

      Because of the streaming event model that SAX uses, some entity boundaries cannot be reported under any circumstances:

      - general entities within attribute values
      - parameter entities within declarations

      These will be silently expanded, with no indication of where the original entity boundaries were.

      Note also that the boundaries of character references (which are not really entities anyway) are not reported.

      All start/endEntity events must be properly nested.

      Specified by:
        `startEntity` in interface `org.xml.sax.ext.LexicalHandler`
      Parameters:
        `name` - The name of the entity. If it is a parameter entity, the name will begin with '%', and if it is the external DTD subset, it will be "[dtd]".
      See Also:
        `LexicalHandler.endEntity(java.lang.String)`, `DeclHandler.internalEntityDecl(java.lang.String, java.lang.String)`, `DeclHandler.externalEntityDecl(java.lang.String, java.lang.String, java.lang.String)`

    - #### endEntity

          public void endEntity(java.lang.String name)

      Deprecated.
      Description copied from interface: `org.xml.sax.ext.LexicalHandler`
      Report the end of an entity.
      Specified by:
        `endEntity` in interface `org.xml.sax.ext.LexicalHandler`
      Parameters:
        `name` - The name of the entity that is ending.
      See Also:
        `LexicalHandler.startEntity(java.lang.String)`

    - #### setDocumentLocator

          public void setDocumentLocator(org.xml.sax.Locator locator)

      Deprecated.
      Description copied from interface: `org.xml.sax.ContentHandler`
      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 ContentHandler 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 SAX event callbacks after `startDocument` returns and before `endDocument` is called. The application should not attempt to use it at any other time.

      Specified by:
        `setDocumentLocator` in interface `org.xml.sax.ContentHandler`
      Specified by:
        `setDocumentLocator` in interface `org.xml.sax.DocumentHandler`
      Parameters:
        `locator` - an object that can return the location of any SAX document event
      See Also:
        `Locator`

    - #### skippedEntity

          public void skippedEntity(java.lang.String name)
                             throws org.xml.sax.SAXException

      Deprecated.
      Description copied from interface: `org.xml.sax.ContentHandler`
      Receive notification of a skipped entity. This is not called for entity references within markup constructs such as element start tags or markup declarations. (The XML recommendation requires reporting skipped external entities. SAX also reports internal entity expansion/non-expansion, except within markup constructs.)

      The Parser will invoke this method each time the entity is skipped. Non-validating processors may skip entities if they have not seen the declarations (because, for example, the entity was declared in an external DTD subset). All processors may skip external entities, depending on the values of the `http://xml.org/sax/features/external-general-entities` and the `http://xml.org/sax/features/external-parameter-entities` properties.

      Specified by:
        `skippedEntity` in interface `org.xml.sax.ContentHandler`
      Parameters:
        `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]"
      Throws:
        `org.xml.sax.SAXException` - any SAX exception, possibly wrapping another exception

    - #### startPrefixMapping

          public void startPrefixMapping(java.lang.String prefix,
                                java.lang.String uri)
                                  throws org.xml.sax.SAXException

      Deprecated.
      Description copied from interface: `org.xml.sax.ContentHandler`
      Begin the scope of a prefix-URI Namespace mapping.

      The information from this event is not necessary for normal Namespace processing: the SAX XML reader will automatically replace prefixes for element and attribute names when the `http://xml.org/sax/features/namespaces` feature is true (the default).

      There are cases, however, when applications need to use prefixes in character data or in attribute values, where they cannot safely be expanded automatically; the start/endPrefixMapping event supplies the information to the application to expand prefixes in those contexts itself, if necessary.

      Note that start/endPrefixMapping events are not guaranteed to be properly nested relative to each other: all startPrefixMapping events will occur immediately before the corresponding `startElement` event, and all `endPrefixMapping` events will occur immediately after the corresponding `endElement` event, but their order is not otherwise guaranteed.

      There should never be start/endPrefixMapping events for the "xml" prefix, since it is predeclared and immutable.

      Specified by:
        `startPrefixMapping` in interface `org.xml.sax.ContentHandler`
      Parameters:
        `prefix` - the Namespace prefix being declared. An empty string is used for the default element namespace, which has no prefix.
        `uri` - the Namespace URI the prefix is mapped to
      Throws:
        `org.xml.sax.SAXException` - the client may throw an exception during processing
      See Also:
        `ContentHandler.endPrefixMapping(java.lang.String)`, `ContentHandler.startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)`

    - #### endPrefixMapping

          public void endPrefixMapping(java.lang.String prefix)
                                throws org.xml.sax.SAXException

      Deprecated.
      Description copied from interface: `org.xml.sax.ContentHandler`
      End the scope of a prefix-URI mapping.

      See `startPrefixMapping` for details. These events will always occur immediately after the corresponding `endElement` event, but the order of `endPrefixMapping` events is not otherwise guaranteed.

      Specified by:
        `endPrefixMapping` in interface `org.xml.sax.ContentHandler`
      Parameters:
        `prefix` - the prefix that was being mapped. This is the empty string when a default mapping scope ends.
      Throws:
        `org.xml.sax.SAXException` - the client may throw an exception during processing
      See Also:
        `ContentHandler.startPrefixMapping(java.lang.String, java.lang.String)`, `ContentHandler.endElement(java.lang.String, java.lang.String, java.lang.String)`

    - #### startDTD

          public final void startDTD(java.lang.String name,
                      java.lang.String publicId,
                      java.lang.String systemId)
                              throws org.xml.sax.SAXException

      Deprecated.
      Description copied from interface: `org.xml.sax.ext.LexicalHandler`
      Report the start of DTD declarations, if any.

      This method is intended to report the beginning of the DOCTYPE declaration; if the document has no DOCTYPE declaration, this method will not be invoked.

      All declarations reported through `DTDHandler` or `DeclHandler` events must appear between the startDTD and `endDTD` events. Declarations are assumed to belong to the internal DTD subset unless they appear between `startEntity` and `endEntity` events. Comments and processing instructions from the DTD should also be reported between the startDTD and endDTD events, in their original order of (logical) occurrence; they are not required to appear in their correct locations relative to DTDHandler or DeclHandler events, however.

      Note that the start/endDTD events will appear within the start/endDocument events from ContentHandler and before the first `startElement` event.

      Specified by:
        `startDTD` in interface `org.xml.sax.ext.LexicalHandler`
      Parameters:
        `name` - The document type name.
        `publicId` - The declared public identifier for the external DTD subset, or null if none was declared.
        `systemId` - The declared system identifier for the external DTD subset, or null if none was declared. (Note that this is not resolved against the document base URI.)
      Throws:
        `org.xml.sax.SAXException` - The application may raise an exception.
      See Also:
        `LexicalHandler.endDTD()`, `LexicalHandler.startEntity(java.lang.String)`

    - #### endDTD

          public void endDTD()

      Deprecated.
      Description copied from interface: `org.xml.sax.ext.LexicalHandler`
      Report the end of DTD declarations.

      This method is intended to report the end of the DOCTYPE declaration; if the document has no DOCTYPE declaration, this method will not be invoked.

      Specified by:
        `endDTD` in interface `org.xml.sax.ext.LexicalHandler`
      See Also:
        `LexicalHandler.startDTD(java.lang.String, java.lang.String, java.lang.String)`

    - #### elementDecl

          public void elementDecl(java.lang.String name,
                         java.lang.String model)
                           throws org.xml.sax.SAXException

      Deprecated.
      Description copied from interface: `org.xml.sax.ext.DeclHandler`
      Report an element type declaration.

      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.

      Specified by:
        `elementDecl` in interface `org.xml.sax.ext.DeclHandler`
      Parameters:
        `name` - The element type name.
        `model` - The content model as a normalized string.
      Throws:
        `org.xml.sax.SAXException` - The application may raise an exception.

    - #### attributeDecl

          public void attributeDecl(java.lang.String eName,
                           java.lang.String aName,
                           java.lang.String type,
                           java.lang.String valueDefault,
                           java.lang.String value)
                             throws org.xml.sax.SAXException

      Deprecated.
      Description copied from interface: `org.xml.sax.ext.DeclHandler`
      Report an attribute type declaration.

      Only the effective (first) declaration for an attribute will be reported. The type will be one of the strings "CDATA", "ID", "IDREF", "IDREFS", "NMTOKEN", "NMTOKENS", "ENTITY", "ENTITIES", a parenthesized token group with the separator "|" and all whitespace removed, or the word "NOTATION" followed by a space followed by a parenthesized token group with all whitespace removed.

      The value will be the value as reported to applications, appropriately normalized and with entity and character references expanded.

      Specified by:
        `attributeDecl` in interface `org.xml.sax.ext.DeclHandler`
      Parameters:
        `eName` - The name of the associated element.
        `aName` - The name of the attribute.
        `type` - A string representing the attribute type.
        `valueDefault` - A string representing the attribute defaulting mode ("#IMPLIED", "#REQUIRED", or "#FIXED") or null if none of these applies.
        `value` - A string representing the attribute's default value, or null if there is none.
      Throws:
        `org.xml.sax.SAXException` - The application may raise an exception.

    - #### internalEntityDecl

          public void internalEntityDecl(java.lang.String name,
                                java.lang.String value)
                                  throws org.xml.sax.SAXException

      Deprecated.
      Description copied from interface: `org.xml.sax.ext.DeclHandler`
      Report an internal entity declaration.

      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.

      Specified by:
        `internalEntityDecl` in interface `org.xml.sax.ext.DeclHandler`
      Parameters:
        `name` - The name of the entity. If it is a parameter entity, the name will begin with '%'.
        `value` - The replacement text of the entity.
      Throws:
        `org.xml.sax.SAXException` - The application may raise an exception.
      See Also:
        `DeclHandler.externalEntityDecl(java.lang.String, java.lang.String, java.lang.String)`, `DTDHandler.unparsedEntityDecl(java.lang.String, java.lang.String, java.lang.String, java.lang.String)`

    - #### externalEntityDecl

          public void externalEntityDecl(java.lang.String name,
                                java.lang.String publicId,
                                java.lang.String systemId)
                                  throws org.xml.sax.SAXException

      Deprecated.
      Description copied from interface: `org.xml.sax.ext.DeclHandler`
      Report a parsed external entity declaration.

      Only the effective (first) declaration for each entity will be reported.

      If the system identifier is a URL, the parser must resolve it fully before passing it to the application.

      Specified by:
        `externalEntityDecl` in interface `org.xml.sax.ext.DeclHandler`
      Parameters:
        `name` - The name of the entity. If it is a parameter entity, the name will begin with '%'.
        `publicId` - The entity's public identifier, or null if none was given.
        `systemId` - The entity's system identifier.
      Throws:
        `org.xml.sax.SAXException` - The application may raise an exception.
      See Also:
        `DeclHandler.internalEntityDecl(java.lang.String, java.lang.String)`, `DTDHandler.unparsedEntityDecl(java.lang.String, java.lang.String, java.lang.String, java.lang.String)`

    - #### unparsedEntityDecl

          public void unparsedEntityDecl(java.lang.String name,
                                java.lang.String publicId,
                                java.lang.String systemId,
                                java.lang.String notationName)
                                  throws org.xml.sax.SAXException

      Deprecated.
      Description copied from interface: `org.xml.sax.DTDHandler`
      Receive notification of an unparsed entity declaration event.

      Note that the notation name corresponds to a notation reported by the `notationDecl` event. It is up to the application to record the entity for later reference, if necessary; unparsed entities may appear as attribute values.

      If the system identifier is a URL, the parser must resolve it fully before passing it to the application.

      Specified by:
        `unparsedEntityDecl` in interface `org.xml.sax.DTDHandler`
      Parameters:
        `name` - The unparsed entity's name.
        `publicId` - The entity's public identifier, or null if none was given.
        `systemId` - The entity's system identifier.
        `notationName` - The name of the associated notation.
      Throws:
        `org.xml.sax.SAXException` - Any SAX exception, possibly wrapping another exception.
      See Also:
        `DTDHandler.notationDecl(java.lang.String, java.lang.String, java.lang.String)`, `Attributes`

    - #### notationDecl

          public void notationDecl(java.lang.String name,
                          java.lang.String publicId,
                          java.lang.String systemId)
                            throws org.xml.sax.SAXException

      Deprecated.
      Description copied from interface: `org.xml.sax.DTDHandler`
      Receive notification of a notation declaration event.

      It is up to the application to record the notation for later reference, if necessary; notations may appear as attribute values and in unparsed entity declarations, and are sometime used with processing instruction target names.

      At least one of publicId and systemId must be non-null. If a system identifier is present, and it is a URL, the SAX parser must resolve it fully before passing it to the application through this event.

      There is no guarantee that the notation declaration will be reported before any unparsed entities that use it.

      Specified by:
        `notationDecl` in interface `org.xml.sax.DTDHandler`
      Parameters:
        `name` - The notation name.
        `publicId` - The notation's public identifier, or null if none was given.
        `systemId` - The notation's system identifier, or null if none was given.
      Throws:
        `org.xml.sax.SAXException` - Any SAX exception, possibly wrapping another exception.
      See Also:
        `DTDHandler.unparsedEntityDecl(java.lang.String, java.lang.String, java.lang.String, java.lang.String)`, `Attributes`

    - #### serializeNode

          protected void serializeNode(org.w3c.dom.Node node)
                                throws java.io.IOException

      Deprecated.
      Serialize the DOM node. This method is shared across XML, HTML and XHTML serializers and the differences are masked out in a separate `serializeElement(org.w3c.dom.Element)`.
      Parameters:
        `node` - The node to serialize
      Throws:
        `java.io.IOException` - An I/O exception occured while serializing
      See Also:
        `serializeElement(org.w3c.dom.Element)`

    - #### content

          protected ElementState content()
                                  throws java.io.IOException

      Deprecated.
      Must be called by a method about to print any type of content. If the element was just opened, the opening tag is closed and will be matched to a closing tag. Returns the current element state with `empty` and `afterElement` set to false.
      Returns:
        The current element state
      Throws:
        `java.io.IOException` - An I/O exception occurred while serializing

    - #### characters

          protected void characters(java.lang.String text)
                             throws java.io.IOException

      Deprecated.
      Called to print the text contents in the prevailing element format. Since this method is capable of printing text as CDATA, it is used for that purpose as well. White space handling is determined by the current element state. In addition, the output format can dictate whether the text is printed as CDATA or unescaped.
      Parameters:
        `text` - The text to print
      Throws:
        `java.io.IOException` - An I/O exception occured while serializing

    - #### getEntityRef

          protected abstract java.lang.String getEntityRef(int ch)

      Deprecated.
      Returns the suitable entity reference for this character value, or null if no such entity exists. Calling this method with `'&'` will return `"&amp;"`.
      Parameters:
        `ch` - Character value
      Returns:
        Character entity name, or null

    - #### serializeElement

          protected abstract void serializeElement(org.w3c.dom.Element elem)
                                            throws java.io.IOException

      Deprecated.
      Called to serializee the DOM element. The element is serialized based on the serializer's method (XML, HTML, XHTML).
      Parameters:
        `elem` - The element to serialize
      Throws:
        `java.io.IOException` - An I/O exception occured while serializing

    - #### serializePreRoot

          protected void serializePreRoot()
                                   throws java.io.IOException

      Deprecated.
      Comments and PIs cannot be serialized before the root element, because the root element serializes the document type, which generally comes first. Instead such PIs and comments are accumulated inside a vector and serialized by calling this method. Will be called when the root element is serialized and when the document finished serializing.
      Throws:
        `java.io.IOException` - An I/O exception occured while serializing

    - #### printCDATAText

          protected void printCDATAText(java.lang.String text)
                                 throws java.io.IOException

      Deprecated.
      Throws:
        `java.io.IOException`

    - #### surrogates

          protected void surrogates(int high,
                        int low,
                        boolean inContent)
                             throws java.io.IOException

      Deprecated.
      Throws:
        `java.io.IOException`

    - #### printText

          protected void printText(char[] chars,
                       int start,
                       int length,
                       boolean preserveSpace,
                       boolean unescaped)
                            throws java.io.IOException

      Deprecated.
      Called to print additional text with whitespace handling. If spaces are preserved, the text is printed as if by calling `printText(String,boolean,boolean)` with a call to `Printer.breakLine()` for each new line. If spaces are not preserved, the text is broken at space boundaries if longer than the line width; Multiple spaces are printed as such, but spaces at beginning of line are removed.
      Parameters:
        `chars` - The text to print
        `start` - The start offset
        `length` - The number of characters
        `preserveSpace` - Space preserving flag
        `unescaped` - Print unescaped
      Throws:
        `java.io.IOException`

    - #### printText

          protected void printText(java.lang.String text,
                       boolean preserveSpace,
                       boolean unescaped)
                            throws java.io.IOException

      Deprecated.
      Throws:
        `java.io.IOException`

    - #### printDoctypeURL

          protected void printDoctypeURL(java.lang.String url)
                                  throws java.io.IOException

      Deprecated.
      Print a document type public or system identifier URL. Encapsulates the URL in double quotes, escapes non-printing characters and print it equivalent to `printText(char[], int, int, boolean, boolean)`.
      Parameters:
        `url` - The document type url to print
      Throws:
        `java.io.IOException`

    - #### printEscaped

          protected void printEscaped(int ch)
                               throws java.io.IOException

      Deprecated.
      Throws:
        `java.io.IOException`

    - #### printEscaped

          protected void printEscaped(java.lang.String source)
                               throws java.io.IOException

      Deprecated.
      Escapes a string so it may be printed as text content or attribute value. Non printable characters are escaped using character references. Where the format specifies a deault entity reference, that reference is used (e.g. `&lt;`).
      Parameters:
        `source` - The string to escape
      Throws:
        `java.io.IOException`

    - #### getElementState

          protected ElementState getElementState()

      Deprecated.
      Return the state of the current element.
      Returns:
        Current element state

    - #### enterElementState

          protected ElementState enterElementState(java.lang.String namespaceURI,
                                       java.lang.String localName,
                                       java.lang.String rawName,
                                       boolean preserveSpace)

      Deprecated.
      Enter a new element state for the specified element. Tag name and space preserving is specified, element state is initially empty.
      Returns:
        Current element state, or null

    - #### leaveElementState

          protected ElementState leaveElementState()

      Deprecated.
      Leave the current element state and return to the state of the parent element. If this was the root element, return to the state of the document.
      Returns:
        Previous element state

    - #### isDocumentState

          protected boolean isDocumentState()

      Deprecated.
      Returns true if in the state of the document. Returns true before entering any element and after leaving the root element.
      Returns:
        True if in the state of the document

    - #### getPrefix

          protected java.lang.String getPrefix(java.lang.String namespaceURI)

      Deprecated.
      Returns the namespace prefix for the specified URI. If the URI has been mapped to a prefix, returns the prefix, otherwise returns null.
      Parameters:
        `namespaceURI` - The namespace URI
      Returns:
        The namespace prefix if known, or null

    - #### modifyDOMError

          protected org.w3c.dom.DOMError modifyDOMError(java.lang.String message,
                                            short severity,
                                            java.lang.String type,
                                            org.w3c.dom.Node node)

      Deprecated.
      The method modifies global DOM error object
      Parameters:
        `message` -
        `severity` -
        `type` -
      Returns:
        a DOMError

    - #### fatalError

          protected void fatalError(java.lang.String message)
                             throws java.io.IOException

      Deprecated.
      Throws:
        `java.io.IOException`

    - #### checkUnboundNamespacePrefixedNode

          protected void checkUnboundNamespacePrefixedNode(org.w3c.dom.Node node)
                                                    throws java.io.IOException

      Deprecated.
      DOM level 3: Check a node to determine if it contains unbound namespace prefixes.
      Parameters:
        `node` - The node to check for unbound namespace prefices
      Throws:
        `java.io.IOException`

Copyright © 1999-2022 The Apache Software Foundation. All Rights Reserved.