Class 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 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