Class ToXMLSAXHandler

  • All Implemented Interfaces:
    DOMSerializer, ExtendedContentHandler, ExtendedLexicalHandler, SerializationHandler, Serializer, org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.ErrorHandler, org.xml.sax.ext.DeclHandler, org.xml.sax.ext.LexicalHandler

    public final class ToXMLSAXHandler
    extends ToSAXHandler
    This class receives notification of SAX-like events, and with gathered information over these calls it will invoke the equivalent SAX methods on a handler, the ultimate xsl:output method is known to be "xml". This class is not a public API.
    • Field Detail

      • CDATA_CONTINUE

        public static final java.lang.String CDATA_CONTINUE
        To insert ]]> in a CDATA section by ending the last CDATA section with ]] and starting the next CDATA section with >
        See Also:
        Constant Field Values
      • CDATA_DELIMITER_CLOSE

        public static final java.lang.String CDATA_DELIMITER_CLOSE
        The constant "]]>"
        See Also:
        Constant Field Values
      • CDATA_DELIMITER_OPEN

        public static final java.lang.String CDATA_DELIMITER_OPEN
        See Also:
        Constant Field Values
      • DEFAULT_SAX_SERIALIZER

        public static final java.lang.String DEFAULT_SAX_SERIALIZER
      • XMLVERSION11

        public static final java.lang.String XMLVERSION11
        Define the XML version.
        See Also:
        Constant Field Values
    • Constructor Detail

      • ToXMLSAXHandler

        public ToXMLSAXHandler()
      • ToXMLSAXHandler

        public ToXMLSAXHandler​(org.xml.sax.ContentHandler handler,
                               java.lang.String encoding)
      • ToXMLSAXHandler

        public ToXMLSAXHandler​(org.xml.sax.ContentHandler handler,
                               org.xml.sax.ext.LexicalHandler lex,
                               java.lang.String encoding)
    • Method Detail

      • getOutputFormat

        public java.util.Properties getOutputFormat()
        Description copied from interface: Serializer
        Returns the output format properties for this serializer.
        Returns:
        The output format key/value pairs in use.
        See Also:
        Serializer.getOutputFormat()
      • getOutputStream

        public java.io.OutputStream getOutputStream()
        Description copied from interface: Serializer
        Get the output stream where the events will be serialized to.
        Returns:
        reference to the result stream, or null if only a writer was set.
        See Also:
        Serializer.getOutputStream()
      • getWriter

        public java.io.Writer getWriter()
        Description copied from interface: Serializer
        Get the character stream where the events will be serialized to.
        Returns:
        Reference to the result Writer, or null.
        See Also:
        Serializer.getWriter()
      • indent

        public void indent​(int n)
                    throws org.xml.sax.SAXException
        Do nothing for SAX.
        Throws:
        org.xml.sax.SAXException
      • serialize

        public void serialize​(org.w3c.dom.Node node)
                       throws java.io.IOException
        Description copied from interface: SerializationHandler
        Notify that the serializer should take this DOM node as input to be serialized.
        Parameters:
        node - the DOM node to be serialized.
        Throws:
        java.io.IOException - if an I/O exception occured while serializing
        See Also:
        DOMSerializer.serialize(Node)
      • setEscaping

        public boolean setEscaping​(boolean escape)
                            throws org.xml.sax.SAXException
        Description copied from interface: SerializationHandler
        Turns special character escaping on/off. Note that characters will never, even if this option is set to 'true', be escaped within CDATA sections in output XML documents.
        Parameters:
        escape - true if escaping is to be set on.
        Throws:
        org.xml.sax.SAXException
        See Also:
        SerializationHandler.setEscaping(boolean)
      • setOutputFormat

        public void setOutputFormat​(java.util.Properties format)
        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.

        The standard property keys supported are: "method", "version", "encoding", "omit-xml-declaration", "standalone", doctype-public", "doctype-system", "cdata-section-elements", "indent", "media-type". These property keys and their values are described in the XSLT recommendation, see {@link XSLT 1.0 recommendation}

        The non-standard property keys supported are defined in OutputPropertiesFactory.

        This method can be called multiple times before a document is serialized. Each time it is called more, or over-riding property values, can be specified. One property value that can not be changed is that of the "method" property key.

        The value of the "cdata-section-elements" property key is a whitespace separated list of elements. If the element is in a namespace then value is passed in this format: {uri}localName

        If the "cdata-section-elements" key is specified on multiple calls to this method the set of elements specified in the value is not replaced from one call to the next, but it is cumulative across the calls.

        Parameters:
        format - The output format to use, as a set of key/value pairs.
        See Also:
        Serializer.setOutputFormat(Properties)
      • setOutputStream

        public void setOutputStream​(java.io.OutputStream output)
        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.

        The encoding specified in the output Properties is used, or if no encoding was specified, the default for the selected output method.

        Only one of setWriter() or setOutputStream() should be called.

        Parameters:
        output - The output stream
        See Also:
        Serializer.setOutputStream(OutputStream)
      • setWriter

        public void setWriter​(java.io.Writer writer)
        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.

        The encoding specified for the output Properties must be identical to the output format used with the writer.

        Only one of setWriter() or setOutputStream() should be called.

        Parameters:
        writer - The output writer stream
        See Also:
        Serializer.setWriter(Writer)
      • attributeDecl

        public void attributeDecl​(java.lang.String arg0,
                                  java.lang.String arg1,
                                  java.lang.String arg2,
                                  java.lang.String arg3,
                                  java.lang.String arg4)
                           throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
        See Also:
        DeclHandler.attributeDecl(String, String, String, String, String)
      • elementDecl

        public void elementDecl​(java.lang.String arg0,
                                java.lang.String arg1)
                         throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
        See Also:
        DeclHandler.elementDecl(String, String)
      • externalEntityDecl

        public void externalEntityDecl​(java.lang.String arg0,
                                       java.lang.String arg1,
                                       java.lang.String arg2)
                                throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
        See Also:
        DeclHandler.externalEntityDecl(String, String, String)
      • internalEntityDecl

        public void internalEntityDecl​(java.lang.String arg0,
                                       java.lang.String arg1)
                                throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
        See Also:
        DeclHandler.internalEntityDecl(String, String)
      • endDocument

        public void endDocument()
                         throws org.xml.sax.SAXException
        Receives notification of the end of the document.
        Throws:
        org.xml.sax.SAXException
        See Also:
        ContentHandler.endDocument()
      • closeCDATA

        public void closeCDATA()
                        throws org.xml.sax.SAXException
        Closes ane open cdata tag, and unlike the this.endCDATA() method (from the LexicalHandler) interface, this "internal" method will send the endCDATA() call to the wrapped handler.
        Throws:
        org.xml.sax.SAXException
      • endElement

        public void endElement​(java.lang.String namespaceURI,
                               java.lang.String localName,
                               java.lang.String qName)
                        throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
        See Also:
        ContentHandler.endElement(String, String, String)
      • endPrefixMapping

        public void endPrefixMapping​(java.lang.String prefix)
                              throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
        See Also:
        ContentHandler.endPrefixMapping(String)
      • ignorableWhitespace

        public void ignorableWhitespace​(char[] arg0,
                                        int arg1,
                                        int arg2)
                                 throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
        See Also:
        ContentHandler.ignorableWhitespace(char[], int, int)
      • setDocumentLocator

        public void setDocumentLocator​(org.xml.sax.Locator arg0)
        Description copied from class: SerializerBase
        Receive an object for locating the origin of SAX document events.
        Specified by:
        setDocumentLocator in interface org.xml.sax.ContentHandler
        Overrides:
        setDocumentLocator in class SerializerBase
        Parameters:
        arg0 - An object that can return the location of any SAX document event. 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 DocumentHandler 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 of the events in this interface. The application should not attempt to use it at any other time.

        See Also:
        ContentHandler.setDocumentLocator(Locator)
      • skippedEntity

        public void skippedEntity​(java.lang.String arg0)
                           throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
        See Also:
        ContentHandler.skippedEntity(String)
      • startPrefixMapping

        public void startPrefixMapping​(java.lang.String prefix,
                                       java.lang.String uri)
                                throws org.xml.sax.SAXException
        Parameters:
        prefix - The prefix that maps to the URI
        uri - The URI for the namespace
        Throws:
        org.xml.sax.SAXException
        See Also:
        ContentHandler.startPrefixMapping(String, String)
      • startPrefixMapping

        public boolean startPrefixMapping​(java.lang.String prefix,
                                          java.lang.String uri,
                                          boolean shouldFlush)
                                   throws org.xml.sax.SAXException
        Remember the prefix/uri mapping at the current nested element depth.
        Parameters:
        prefix - The prefix that maps to the URI
        uri - The URI for the namespace
        shouldFlush - a flag indicating if the mapping applies to the current element or an up coming child (not used).
        Returns:
        boolean false if the prefix mapping was already in effect (in other words we are just re-declaring), true if this is a new, never before seen mapping for the element.
        Throws:
        org.xml.sax.SAXException
        See Also:
        ContentHandler.startPrefixMapping(String, String)
      • comment

        public void comment​(char[] arg0,
                            int arg1,
                            int arg2)
                     throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
        See Also:
        LexicalHandler.comment(char[], int, int)
      • endCDATA

        public void endCDATA()
                      throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
        See Also:
        LexicalHandler.endCDATA()
      • endDTD

        public void endDTD()
                    throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
        See Also:
        LexicalHandler.endDTD()
      • startEntity

        public void startEntity​(java.lang.String arg0)
                         throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
        See Also:
        LexicalHandler.startEntity(String)
      • startElement

        public void startElement​(java.lang.String elementNamespaceURI,
                                 java.lang.String elementLocalName,
                                 java.lang.String elementName)
                          throws org.xml.sax.SAXException
        Start an element in the output document. This might be an XML element (data type) or a CDATA section.
        Specified by:
        startElement in interface ExtendedContentHandler
        Overrides:
        startElement in class ToSAXHandler
        Parameters:
        elementNamespaceURI - the URI of the namespace of the element (optional)
        elementLocalName - the element name, but without prefix (optional)
        elementName - the element name, with prefix, if any (required)
        Throws:
        org.xml.sax.SAXException
        See Also:
        ExtendedContentHandler.startElement(String, String, String)
      • characters

        public void characters​(char[] ch,
                               int off,
                               int len)
                        throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
      • endElement

        public void endElement​(java.lang.String elemName)
                        throws org.xml.sax.SAXException
        Description copied from interface: ExtendedContentHandler
        This method is used to notify that an element has ended. Unlike the standard SAX method
         endElement(namespaceURI,localName,qName)
         
        only the last parameter is passed. If needed the serializer can derive the localName from the qualified name and derive the namespaceURI from its implementation.
        Parameters:
        elemName - the fully qualified element name.
        Throws:
        org.xml.sax.SAXException
        See Also:
        ExtendedContentHandler.endElement(String)
      • processingInstruction

        public void processingInstruction​(java.lang.String target,
                                          java.lang.String data)
                                   throws org.xml.sax.SAXException
        Description copied from class: ToSAXHandler
        Do nothing as this is an abstract class. All subclasses will need to define their behavior if it is different.
        Specified by:
        processingInstruction in interface org.xml.sax.ContentHandler
        Overrides:
        processingInstruction in class ToSAXHandler
        Throws:
        org.xml.sax.SAXException
        See Also:
        Send a processing instruction to the output document
      • startCDATA

        public void startCDATA()
                        throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
      • startElement

        public void startElement​(java.lang.String namespaceURI,
                                 java.lang.String localName,
                                 java.lang.String name,
                                 org.xml.sax.Attributes atts)
                          throws org.xml.sax.SAXException
        Description copied from class: ToSAXHandler
        Receive notification of the beginning of an element, although this is a SAX method additional namespace or attribute information can occur before or after this call, that is associated with this element.
        Specified by:
        startElement in interface org.xml.sax.ContentHandler
        Overrides:
        startElement in class ToSAXHandler
        Throws:
        org.xml.sax.SAXException
        See Also:
        ContentHandler.startElement(String, String, String, Attributes)
      • addAttribute

        public void addAttribute​(java.lang.String uri,
                                 java.lang.String localName,
                                 java.lang.String rawName,
                                 java.lang.String type,
                                 java.lang.String value,
                                 boolean XSLAttribute)
                          throws org.xml.sax.SAXException
        Adds the given attribute to the set of attributes, and also makes sure that the needed prefix/uri mapping is declared, but only if there is a currently open element.
        Specified by:
        addAttribute in interface ExtendedContentHandler
        Overrides:
        addAttribute in class SerializerBase
        Parameters:
        uri - the URI of the attribute
        localName - the local name of the attribute
        rawName - the qualified name of the attribute
        type - the type of the attribute (probably CDATA)
        value - the value of the attribute
        XSLAttribute - true if this attribute is coming from an xsl:attribute element
        Throws:
        org.xml.sax.SAXException
        See Also:
        ExtendedContentHandler.addAttribute(String, String, String, String, String)
      • reset

        public boolean reset()
        Try's to reset the super class and reset this class for re-use, so that you don't need to create a new serializer (mostly for performance reasons).
        Specified by:
        reset in interface Serializer
        Overrides:
        reset in class ToSAXHandler
        Returns:
        true if the class was successfuly reset.
        See Also:
        Serializer.reset()