com.icl.saxon.output

## Class ContentHandlerProxy

- java.lang.Object
- - com.icl.saxon.output.Emitter
  - - com.icl.saxon.output.ContentHandlerProxy

- All Implemented Interfaces:
    javax.xml.transform.Result, org.xml.sax.Locator

      public class ContentHandlerProxy
      extends Emitter
      implements org.xml.sax.Locator

  A ContentHandlerProxy is an Emitter that filters data before passing it to an underlying SAX2 ContentHandler. Relevant events (notably comments) can also be fed to a LexicalHandler. Note that in general the output passed to an Emitter corresponds to an External General Parsed Entity. A SAX2 ContentHandler only expects to deal with well-formed XML documents, so we only pass it the contents of the first element encountered.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected org.xml.sax.ContentHandler` | `handler`
    `protected org.xml.sax.ext.LexicalHandler` | `lexicalHandler`
    `protected org.xml.sax.Locator` | `locator`
    `protected boolean` | `requireWellFormed`

    - ### Fields inherited from class com.icl.saxon.output.Emitter

      `namePool, outputProperties, outputStream, systemId, writer`

    - ### Fields inherited from interface javax.xml.transform.Result

      `PI_DISABLE_OUTPUT_ESCAPING, PI_ENABLE_OUTPUT_ESCAPING`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ContentHandlerProxy()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `characters(char[] chars, int start, int len)` Character data
    `void` | `comment(char[] ch, int start, int length)` Output a comment.
    `void` | `endDocument()` End of document
    `void` | `endElement(int nameCode)` End of element
    `int` | `getColumnNumber()`
    `int` | `getLineNumber()`
    `java.lang.String` | `getPublicId()`
    `protected void` | `notifyNotWellFormed()` The following function notifies the content handler, by means of a processing instruction, that the output is not a well-formed document.
    `void` | `processingInstruction(java.lang.String target, java.lang.String data)` Processing Instruction
    `void` | `setDocumentLocator(org.xml.sax.Locator locator)` Set Document Locator
    `void` | `setEscaping(boolean escaping)` Switch escaping on or off.
    `void` | `setLexicalHandler(org.xml.sax.ext.LexicalHandler handler)` Set the Lexical Handler to be used.
    `void` | `setOutputProperties(java.util.Properties props)` Set the output properties
    `void` | `setRequireWellFormed(boolean wellFormed)` Indicate whether the content handler can handle a stream of events that is merely well-balanced, or whether it can only handle a well-formed sequence.
    `void` | `setUnderlyingContentHandler(org.xml.sax.ContentHandler handler)` Set the underlying content handler.
    `void` | `startDocument()` Start of document
    `void` | `startElement(int nameCode, org.xml.sax.Attributes atts, int[] namespaces, int nscount)` Start of element

    - ### Methods inherited from class com.icl.saxon.output.Emitter

      `getNamePool, getOutputProperties, getOutputStream, getSystemId, getWriter, makeEmitter, setNamePool, setOutputStream, setSystemId, setUnparsedEntity, setWriter, usesWriter`

    - ### 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.Locator

      `getSystemId`

- - ### Field Detail

    - #### handler

          protected org.xml.sax.ContentHandler handler

    - #### lexicalHandler

          protected org.xml.sax.ext.LexicalHandler lexicalHandler

    - #### locator

          protected org.xml.sax.Locator locator

    - #### requireWellFormed

          protected boolean requireWellFormed

  - ### Constructor Detail

    - #### ContentHandlerProxy

          public ContentHandlerProxy()

  - ### Method Detail

    - #### setUnderlyingContentHandler

          public void setUnderlyingContentHandler(org.xml.sax.ContentHandler handler)

      Set the underlying content handler. This call is mandatory before using the Emitter.

    - #### setOutputProperties

          public void setOutputProperties(java.util.Properties props)

      Set the output properties
      Overrides:
        `setOutputProperties` in class `Emitter`

    - #### setLexicalHandler

          public void setLexicalHandler(org.xml.sax.ext.LexicalHandler handler)

      Set the Lexical Handler to be used. If called, this must be called AFTER setUnderlyingContentHandler()

    - #### setRequireWellFormed

          public void setRequireWellFormed(boolean wellFormed)

      Indicate whether the content handler can handle a stream of events that is merely well-balanced, or whether it can only handle a well-formed sequence.

    - #### setDocumentLocator

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

      Set Document Locator
      Overrides:
        `setDocumentLocator` in class `Emitter`

    - #### startDocument

          public void startDocument()
                             throws javax.xml.transform.TransformerException

      Start of document
      Specified by:
        `startDocument` in class `Emitter`
      Throws:
        `javax.xml.transform.TransformerException`

    - #### endDocument

          public void endDocument()
                           throws javax.xml.transform.TransformerException

      End of document
      Specified by:
        `endDocument` in class `Emitter`
      Throws:
        `javax.xml.transform.TransformerException`

    - #### startElement

          public void startElement(int nameCode,
                          org.xml.sax.Attributes atts,
                          int[] namespaces,
                          int nscount)
                            throws javax.xml.transform.TransformerException

      Start of element
      Specified by:
        `startElement` in class `Emitter`
        `namespaces` - Array of namespace codes identifying the namespace prefix/uri pairs associated with this element
        `nscount` - Number of significant entries within namespaces array
      Throws:
        `javax.xml.transform.TransformerException`

    - #### endElement

          public void endElement(int nameCode)
                          throws javax.xml.transform.TransformerException

      End of element
      Specified by:
        `endElement` in class `Emitter`
      Throws:
        `javax.xml.transform.TransformerException`

    - #### characters

          public void characters(char[] chars,
                        int start,
                        int len)
                          throws javax.xml.transform.TransformerException

      Character data
      Specified by:
        `characters` in class `Emitter`
      Throws:
        `javax.xml.transform.TransformerException`

    - #### notifyNotWellFormed

          protected void notifyNotWellFormed()
                                      throws org.xml.sax.SAXException

      The following function notifies the content handler, by means of a processing instruction, that the output is not a well-formed document. If the content handler responds with an exception containing the message "continue" (this is the only way it can get information back) then further events are notified, otherwise they are suppressed.
      Throws:
        `org.xml.sax.SAXException`

    - #### processingInstruction

          public void processingInstruction(java.lang.String target,
                                   java.lang.String data)
                                     throws javax.xml.transform.TransformerException

      Processing Instruction
      Specified by:
        `processingInstruction` in class `Emitter`
      Throws:
        `javax.xml.transform.TransformerException`

    - #### comment

          public void comment(char[] ch,
                     int start,
                     int length)
                       throws javax.xml.transform.TransformerException

      Output a comment. Passes it on to the ContentHandler provided that the ContentHandler is also a SAX2 LexicalHandler.
      Specified by:
        `comment` in class `Emitter`
      Throws:
        `javax.xml.transform.TransformerException`

    - #### setEscaping

          public void setEscaping(boolean escaping)

      Switch escaping on or off. This is called when the XSLT disable-output-escaping attribute is used to switch escaping on or off. It is not called for other sections of output (e.g. element names) where escaping is inappropriate. The action, as defined in JAXP 1.1, is to notify the request to the Content Handler using a processing instruction.
      Overrides:
        `setEscaping` in class `Emitter`

    - #### getPublicId

          public java.lang.String getPublicId()

      Specified by:
        `getPublicId` in interface `org.xml.sax.Locator`

    - #### getLineNumber

          public int getLineNumber()

      Specified by:
        `getLineNumber` in interface `org.xml.sax.Locator`

    - #### getColumnNumber

          public int getColumnNumber()

      Specified by:
        `getColumnNumber` in interface `org.xml.sax.Locator`