Class StringOutputter


  • public final class StringOutputter
    extends Outputter
    This class allows output to be generated. It channels output requests to an Emitter which does the actual writing. This is a specialized and simplified version that is used to handle xsl:attribute, xsl:comment, and xsl:processing-instruction.
    Author:
    Michael H. Kay
    • Field Summary

      Fields 
      Modifier and Type Field Description
      (package private) java.lang.StringBuffer buffer  
      (package private) javax.xml.transform.ErrorListener errorListener  
      (package private) int ignoreElements  
    • Constructor Summary

      Constructors 
      Constructor Description
      StringOutputter​(java.lang.StringBuffer buffer)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int checkAttributePrefix​(int nameCode)
      Check that the prefix for an attribute is acceptable, returning a substitute prefix if not.
      void close()
      Close the output
      void copyNamespaceNode​(int nscode)
      Copy a namespace node to the current element node (Rules defined in XSLT 1.0 errata)
      java.util.Properties getOutputProperties()  
      void reset()
      Synchronize the state of the Outputter with that of the underlying Emitter
      void setErrorListener​(javax.xml.transform.ErrorListener listener)  
      boolean thereIsAnOpenStartTag()
      Test whether there is an open start tag.
      void write​(java.lang.String s)
      Produce literal output.
      void writeAttribute​(int nameCode, java.lang.String value, boolean noEscape)
      Output an attribute value.
      void writeComment​(java.lang.String comment)
      Write a comment.
      void writeContent​(char[] chars, int start, int length)
      Produce text content output.
      void writeContent​(java.lang.String s)
      Produce text content output.
      void writeEndTag​(int nameCode)
      Output an element end tag.
      void writeNamespaceDeclaration​(int nscode)
      Output a namespace declaration.
      void writePI​(java.lang.String target, java.lang.String data)
      Write a processing instruction No-op in this implementation
      void writeStartTag​(int nameCode)
      Output an element start tag.
      • Methods inherited from class java.lang.Object

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

      • buffer

        java.lang.StringBuffer buffer
      • ignoreElements

        int ignoreElements
      • errorListener

        javax.xml.transform.ErrorListener errorListener
    • Constructor Detail

      • StringOutputter

        public StringOutputter​(java.lang.StringBuffer buffer)
    • Method Detail

      • setErrorListener

        public void setErrorListener​(javax.xml.transform.ErrorListener listener)
      • reset

        public void reset()
                   throws javax.xml.transform.TransformerException
        Description copied from class: Outputter
        Synchronize the state of the Outputter with that of the underlying Emitter
        Specified by:
        reset in class Outputter
        Throws:
        javax.xml.transform.TransformerException
      • write

        public void write​(java.lang.String s)
                   throws javax.xml.transform.TransformerException
        Produce literal output. This is written as is, without any escaping. The method is provided for Java applications that wish to output literal HTML text. It is not used by the XSL system, which always writes using specific methods such as writeStartTag().
        Specified by:
        write in class Outputter
        Throws:
        javax.xml.transform.TransformerException
      • writeContent

        public void writeContent​(java.lang.String s)
                          throws javax.xml.transform.TransformerException
        Produce text content output.
        Special characters are escaped using XML/HTML conventions if the output format requires it.
        Specified by:
        writeContent in class Outputter
        Parameters:
        s - The String to be output
        Throws:
        javax.xml.transform.TransformerException - for any failure
      • writeContent

        public void writeContent​(char[] chars,
                                 int start,
                                 int length)
                          throws javax.xml.transform.TransformerException
        Produce text content output.
        Special characters are escaped using XML/HTML conventions if the output format requires it.
        Specified by:
        writeContent in class Outputter
        Parameters:
        chars - Character array to be output
        start - start position of characters to be output
        length - number of characters to be output
        Throws:
        javax.xml.transform.TransformerException - for any failure
      • writeStartTag

        public void writeStartTag​(int nameCode)
                           throws javax.xml.transform.TransformerException
        Output an element start tag. With this outputter, this is a recoverable error.
        Specified by:
        writeStartTag in class Outputter
        Parameters:
        nameCode - The element name code
        Throws:
        javax.xml.transform.TransformerException
      • checkAttributePrefix

        public int checkAttributePrefix​(int nameCode)
                                 throws javax.xml.transform.TransformerException
        Check that the prefix for an attribute is acceptable, returning a substitute prefix if not. The prefix is acceptable unless a namespace declaration has been written that assignes this prefix to a different namespace URI. This method also checks that the attribute namespace has been declared, and declares it if not.
        Specified by:
        checkAttributePrefix in class Outputter
        Throws:
        javax.xml.transform.TransformerException
      • writeNamespaceDeclaration

        public void writeNamespaceDeclaration​(int nscode)
                                       throws javax.xml.transform.TransformerException
        Output a namespace declaration.
        This is added to a list of pending namespaces for the current start tag. If there is already another declaration of the same prefix, this one is ignored. Note that unlike SAX2 startPrefixMapping(), this call is made AFTER writing the start tag.
        Specified by:
        writeNamespaceDeclaration in class Outputter
        Parameters:
        nscode - The namespace code
        Throws:
        javax.xml.transform.TransformerException - if there is no start tag to write to (created using writeStartTag), or if character content has been written since the start tag was written.
      • copyNamespaceNode

        public void copyNamespaceNode​(int nscode)
                               throws javax.xml.transform.TransformerException
        Copy a namespace node to the current element node (Rules defined in XSLT 1.0 errata)
        Specified by:
        copyNamespaceNode in class Outputter
        Throws:
        javax.xml.transform.TransformerException
      • thereIsAnOpenStartTag

        public boolean thereIsAnOpenStartTag()
        Test whether there is an open start tag. This determines whether it is possible to write an attribute node at this point.
        Specified by:
        thereIsAnOpenStartTag in class Outputter
      • writeAttribute

        public void writeAttribute​(int nameCode,
                                   java.lang.String value,
                                   boolean noEscape)
                            throws javax.xml.transform.TransformerException
        Output an attribute value.
        No-op in this implementation.
        Specified by:
        writeAttribute in class Outputter
        Parameters:
        name - The name of the attribute
        value - The value of the attribute
        noEscape - True if it's known there are no special characters in the value. If unsure, set this to false.
        Throws:
        javax.xml.transform.TransformerException - if there is no start tag to write to (created using writeStartTag), or if character content has been written since the start tag was written.
      • writeEndTag

        public void writeEndTag​(int nameCode)
                         throws javax.xml.transform.TransformerException
        Output an element end tag.
        Specified by:
        writeEndTag in class Outputter
        Parameters:
        nameCode - The element name code
        Throws:
        javax.xml.transform.TransformerException
      • writeComment

        public void writeComment​(java.lang.String comment)
                          throws javax.xml.transform.TransformerException
        Write a comment. No-op in this implementation
        Specified by:
        writeComment in class Outputter
        Throws:
        javax.xml.transform.TransformerException
      • writePI

        public void writePI​(java.lang.String target,
                            java.lang.String data)
                     throws javax.xml.transform.TransformerException
        Write a processing instruction No-op in this implementation
        Specified by:
        writePI in class Outputter
        Throws:
        javax.xml.transform.TransformerException
      • close

        public void close()
                   throws javax.xml.transform.TransformerException
        Close the output
        Specified by:
        close in class Outputter
        Throws:
        javax.xml.transform.TransformerException