Class ReceivingContentHandler

  • All Implemented Interfaces:
    org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.ext.LexicalHandler
    Direct Known Subclasses:
    IdentityTransformerHandler, StreamingTransformerImpl.StreamingTransformerHandler, TemplatesHandlerImpl, TransformerHandlerImpl

    public class ReceivingContentHandler
    extends java.lang.Object
    implements org.xml.sax.ContentHandler, org.xml.sax.ext.LexicalHandler, org.xml.sax.DTDHandler
    ReceivingContentHandler is a glue class that provides a standard SAX ContentHandler interface to a Saxon Receiver. To achieve this it needs to map names supplied as strings to numeric name codes, for which purpose it needs access to a name pool. The class also performs the function of assembling adjacent text nodes.

    If the input stream contains the processing instructions assigned by JAXP to switch disable-output-escaping on or off, these will be reflected in properties set in the corresponding characters events. In this case adjacent text nodes will not be combined.

    The ReceivingContentHandler is written on the assumption that it is receiving events from a parser configured with http://xml.org/sax/features/namespaces set to true and http://xml.org/sax/features/namespace-prefixes set to false.

    When running as a TransformerHandler, we have no control over the feature settings of the sender of the events, and if the events do not follow this pattern then the class may fail in unpredictable ways.

    • Constructor Summary

      Constructors 
      Constructor Description
      ReceivingContentHandler()
      Create a ReceivingContentHandler and initialise variables
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void characters​(char[] ch, int start, int length)
      Report character data.
      void comment​(char[] ch, int start, int length)
      Notify the existence of a comment.
      void endCDATA()  
      void endDocument()
      Receive notification of the end of a document
      void endDTD()
      Register the end of the DTD.
      void endElement​(java.lang.String uri, java.lang.String localname, java.lang.String rawname)
      Report the end of an element (the close tag)
      void endEntity​(java.lang.String name)  
      void endPrefixMapping​(java.lang.String prefix)
      Notify that a namespace binding is going out of scope
      Configuration getConfiguration()
      Get the Configuration object
      PipelineConfiguration getPipelineConfiguration()
      Get the pipeline configuration
      Receiver getReceiver()
      Get the receiver to which events are passed.
      void ignorableWhitespace​(char[] ch, int start, int length)
      Report character data classified as "Ignorable whitespace", that is, whitespace text nodes appearing as children of elements with an element-only content model
      boolean isIgnoringIgnorableWhitespace()
      Determine whether "ignorable whitespace" is ignored.
      void notationDecl​(java.lang.String name, java.lang.String publicId, java.lang.String systemId)  
      void processingInstruction​(java.lang.String name, java.lang.String remainder)
      Notify the existence of a processing instruction
      void reset()
      Set the ReceivingContentHandler to its initial state, except for the local name cache, which is retained
      void setDocumentLocator​(org.xml.sax.Locator locator)
      Supply a locator that can be called to give information about location in the source document being parsed.
      void setIgnoreIgnorableWhitespace​(boolean ignore)
      Set whether "ignorable whitespace" should be ignored.
      void setPipelineConfiguration​(PipelineConfiguration pipe)
      Set the pipeline configuration
      void setReceiver​(Receiver receiver)
      Set the receiver to which events are passed.
      void skippedEntity​(java.lang.String name)
      Notify a skipped entity.
      void startCDATA()  
      void startDocument()
      Receive notification of the beginning of a document.
      void startDTD​(java.lang.String name, java.lang.String publicId, java.lang.String systemId)
      Register the start of the DTD.
      void startElement​(java.lang.String uri, java.lang.String localname, java.lang.String rawname, org.xml.sax.Attributes atts)
      Receive notification of the beginning of an element.
      void startEntity​(java.lang.String name)  
      void startPrefixMapping​(java.lang.String prefix, java.lang.String uri)
      Notify a namespace prefix to URI binding
      void unparsedEntityDecl​(java.lang.String name, java.lang.String publicId, java.lang.String systemId, java.lang.String notationName)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ReceivingContentHandler

        public ReceivingContentHandler()
        Create a ReceivingContentHandler and initialise variables
    • Method Detail

      • reset

        public void reset()
        Set the ReceivingContentHandler to its initial state, except for the local name cache, which is retained
      • setReceiver

        public void setReceiver​(Receiver receiver)
        Set the receiver to which events are passed. ReceivingContentHandler is essentially a translator that takes SAX events as input and produces Saxon Receiver events as output; these Receiver events are passed to the supplied Receiver
        Parameters:
        receiver - the Receiver of events
      • getReceiver

        public Receiver getReceiver()
        Get the receiver to which events are passed.
        Returns:
        the underlying Receiver
      • setPipelineConfiguration

        public void setPipelineConfiguration​(PipelineConfiguration pipe)
        Set the pipeline configuration
        Parameters:
        pipe - the pipeline configuration. This holds a reference to the Saxon configuration, as well as information that can vary from one pipeline to another
      • getConfiguration

        public Configuration getConfiguration()
        Get the Configuration object
        Returns:
        the Saxon configuration
      • setIgnoreIgnorableWhitespace

        public void setIgnoreIgnorableWhitespace​(boolean ignore)
        Set whether "ignorable whitespace" should be ignored. This method is effective only if called after setPipelineConfiguration, since the default value is taken from the configuration.
        Parameters:
        ignore - true if ignorable whitespace (whitespace in element content that is notified via the ignorableWhitespace(char[], int, int) method) should be ignored, false if it should be treated as ordinary text.
      • isIgnoringIgnorableWhitespace

        public boolean isIgnoringIgnorableWhitespace()
        Determine whether "ignorable whitespace" is ignored. This returns the value that was set using setIgnoreIgnorableWhitespace(boolean) if that has been called; otherwise the value from the configuration.
        Returns:
        true if ignorable whitespace is being ignored
      • startDocument

        public void startDocument()
                           throws org.xml.sax.SAXException
        Receive notification of the beginning of a document.
        Specified by:
        startDocument in interface org.xml.sax.ContentHandler
        Throws:
        org.xml.sax.SAXException
      • endDocument

        public void endDocument()
                         throws org.xml.sax.SAXException
        Receive notification of the end of a document
        Specified by:
        endDocument in interface org.xml.sax.ContentHandler
        Throws:
        org.xml.sax.SAXException
      • setDocumentLocator

        public void setDocumentLocator​(org.xml.sax.Locator locator)
        Supply a locator that can be called to give information about location in the source document being parsed.
        Specified by:
        setDocumentLocator in interface org.xml.sax.ContentHandler
      • startPrefixMapping

        public void startPrefixMapping​(java.lang.String prefix,
                                       java.lang.String uri)
        Notify a namespace prefix to URI binding
        Specified by:
        startPrefixMapping in interface org.xml.sax.ContentHandler
      • endPrefixMapping

        public void endPrefixMapping​(java.lang.String prefix)
        Notify that a namespace binding is going out of scope
        Specified by:
        endPrefixMapping in interface org.xml.sax.ContentHandler
      • startElement

        public void startElement​(java.lang.String uri,
                                 java.lang.String localname,
                                 java.lang.String rawname,
                                 org.xml.sax.Attributes atts)
                          throws org.xml.sax.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.

        This event allows up to three name components for each element:

        1. the Namespace URI;
        2. the local name; and
        3. the qualified (prefixed) name.

        Saxon expects all three of these to be provided.

        The attribute list provided should contain only attributes with explicit values (specified or defaulted): #IMPLIED attributes should be omitted. The attribute list should not contain attributes used for Namespace declarations (xmlns* attributes); if it does, Saxon will ignore them, which may lead to unresolved namespace prefixes.

        Specified by:
        startElement in interface org.xml.sax.ContentHandler
        Parameters:
        uri - the Namespace URI, or the empty string if the element has no Namespace URI or if Namespace processing is not being performed
        localname - the local name (without prefix), or the empty string if Namespace processing is not being performed
        rawname - the qualified name (with prefix), or the empty string if qualified names are not available
        atts - the attributes attached to the element. If there are no attributes, it shall be an empty Attributes object. The value of this object after startElement returns is undefined
        Throws:
        org.xml.sax.SAXException - any SAX exception, possibly wrapping another exception
        See Also:
        endElement(java.lang.String, java.lang.String, java.lang.String), Attributes, AttributesImpl
      • endElement

        public void endElement​(java.lang.String uri,
                               java.lang.String localname,
                               java.lang.String rawname)
                        throws org.xml.sax.SAXException
        Report the end of an element (the close tag)
        Specified by:
        endElement in interface org.xml.sax.ContentHandler
        Throws:
        org.xml.sax.SAXException
      • characters

        public void characters​(char[] ch,
                               int start,
                               int length)
        Report character data. Note that contiguous character data may be reported as a sequence of calls on this method, with arbitrary boundaries
        Specified by:
        characters in interface org.xml.sax.ContentHandler
      • ignorableWhitespace

        public void ignorableWhitespace​(char[] ch,
                                        int start,
                                        int length)
        Report character data classified as "Ignorable whitespace", that is, whitespace text nodes appearing as children of elements with an element-only content model
        Specified by:
        ignorableWhitespace in interface org.xml.sax.ContentHandler
      • processingInstruction

        public void processingInstruction​(java.lang.String name,
                                          java.lang.String remainder)
                                   throws org.xml.sax.SAXException
        Notify the existence of a processing instruction
        Specified by:
        processingInstruction in interface org.xml.sax.ContentHandler
        Throws:
        org.xml.sax.SAXException
      • comment

        public void comment​(char[] ch,
                            int start,
                            int length)
                     throws org.xml.sax.SAXException
        Notify the existence of a comment. Note that in SAX this is part of LexicalHandler interface rather than the ContentHandler interface.
        Specified by:
        comment in interface org.xml.sax.ext.LexicalHandler
        Throws:
        org.xml.sax.SAXException
      • skippedEntity

        public void skippedEntity​(java.lang.String name)
        Notify a skipped entity. Saxon ignores this event
        Specified by:
        skippedEntity in interface org.xml.sax.ContentHandler
      • startDTD

        public void startDTD​(java.lang.String name,
                             java.lang.String publicId,
                             java.lang.String systemId)
        Register the start of the DTD. Saxon ignores the DTD; however, it needs to know when the DTD starts and ends so that it can ignore comments in the DTD, which are reported like any other comment, but which are skipped because they are not part of the XPath data model
        Specified by:
        startDTD in interface org.xml.sax.ext.LexicalHandler
      • endDTD

        public void endDTD()
        Register the end of the DTD. Comments in the DTD are skipped because they are not part of the XPath data model
        Specified by:
        endDTD in interface org.xml.sax.ext.LexicalHandler
      • startEntity

        public void startEntity​(java.lang.String name)
        Specified by:
        startEntity in interface org.xml.sax.ext.LexicalHandler
      • endEntity

        public void endEntity​(java.lang.String name)
        Specified by:
        endEntity in interface org.xml.sax.ext.LexicalHandler
      • startCDATA

        public void startCDATA()
        Specified by:
        startCDATA in interface org.xml.sax.ext.LexicalHandler
      • endCDATA

        public void endCDATA()
        Specified by:
        endCDATA in interface org.xml.sax.ext.LexicalHandler
      • notationDecl

        public void notationDecl​(java.lang.String name,
                                 java.lang.String publicId,
                                 java.lang.String systemId)
        Specified by:
        notationDecl in interface org.xml.sax.DTDHandler
      • 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
        Specified by:
        unparsedEntityDecl in interface org.xml.sax.DTDHandler
        Throws:
        org.xml.sax.SAXException