com.icl.saxon.output

Class Outputter

Known Direct Subclasses:
GeneralOutputter, StringOutputter

public abstract class Outputter
extends java.lang.Object

This class allows output to be generated. It channels output requests to an Emitter which does the actual writing. This is an abstract class, there are concrete implementions for XML output and text output.
Author:
Michael H. Kay

Field Summary

protected Emitter
emitter

Method Summary

abstract int
checkAttributePrefix(int nameCode)
Check that the prefix for an attribute is acceptable, returning a substitute prefix if not.
abstract void
close()
Close the output
abstract void
copyNamespaceNode(int nscode)
Copy a namespace node to the current element node (Rules defined in XSLT 1.0 errata)
Emitter
getEmitter()
Get emitter.
abstract Properties
getOutputProperties()
void
open()
Start the output process
abstract void
reset()
Synchronize the state of the Outputter with that of the underlying Emitter
void
setEscaping(boolean escaping)
Switch escaping (of special characters) on or off.
abstract boolean
thereIsAnOpenStartTag()
Test whether there is an open start tag.
abstract void
write(String s)
Produce literal output.
void
writeAttribute(int nameCode, String value)
Output an attribute value.
abstract void
writeAttribute(int nameCode, String value, boolean noEscape)
Output an attribute value.
abstract void
writeComment(String comment)
Write a comment
abstract void
writeContent(String s)
Produce text content output.
abstract void
writeContent(char[] chars, int start, int length)
Produce text content output.
abstract void
writeEndTag(int nameCode)
Output an element end tag.
abstract void
writeNamespaceDeclaration(int nscode)
Output a namespace declaration.
abstract void
writePI(String target, String data)
Write a processing instruction
abstract void
writeStartTag(int nameCode)
Output an element start tag.

Field Details

emitter

protected Emitter emitter

Method Details

checkAttributePrefix

public abstract int checkAttributePrefix(int nameCode)
            throws 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.

close

public abstract void close()
            throws TransformerException
Close the output

copyNamespaceNode

public abstract void copyNamespaceNode(int nscode)
            throws TransformerException
Copy a namespace node to the current element node (Rules defined in XSLT 1.0 errata)

getEmitter

public Emitter getEmitter()
            throws TransformerException
Get emitter. This is used by xsl:copy-of, a fragment is copied directly to the Emitter rather than going via the Outputter.

getOutputProperties

public abstract Properties getOutputProperties()

open

public final void open()
            throws TransformerException
Start the output process

reset

public abstract void reset()
            throws TransformerException
Synchronize the state of the Outputter with that of the underlying Emitter

setEscaping

public final void setEscaping(boolean escaping)
            throws TransformerException
Switch escaping (of special characters) on or off.
Parameters:

thereIsAnOpenStartTag

public abstract boolean thereIsAnOpenStartTag()
Test whether there is an open start tag. This determines whether it is possible to write an attribute node at this point.

write

public abstract void write(String s)
            throws 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().

writeAttribute

public void writeAttribute(int nameCode,
                           String value)
            throws TransformerException
Output an attribute value.
This is added to a list of pending attributes for the current start tag, overwriting any previous attribute with the same name.
This method should NOT be used to output namespace declarations.
Parameters:
nameCode - The name code of the attribute
value - The value of the attribute

writeAttribute

public abstract void writeAttribute(int nameCode,
                                    String value,
                                    boolean noEscape)
            throws TransformerException
Output an attribute value.
This is added to a list of pending attributes for the current start tag, overwriting any previous attribute with the same name.
This method should NOT be used to output namespace declarations.
Before calling this, checkAttributePrefix() should be called to ensure the namespace is OK.
Parameters:
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.

writeComment

public abstract void writeComment(String comment)
            throws TransformerException
Write a comment

writeContent

public abstract void writeContent(String s)
            throws TransformerException
Produce text content output.
Special characters are escaped using XML/HTML conventions if the output format requires it.
Parameters:
s - The String to be output

writeContent

public abstract void writeContent(char[] chars,
                                  int start,
                                  int length)
            throws TransformerException
Produce text content output.
Special characters are escaped using XML/HTML conventions if the output format requires it.
Parameters:
chars - Character array to be output
start - start position of characters to be output
length - number of characters to be output

writeEndTag

public abstract void writeEndTag(int nameCode)
            throws TransformerException
Output an element end tag.
Parameters:
nameCode - The element name code

writeNamespaceDeclaration

public abstract void writeNamespaceDeclaration(int nscode)
            throws 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.
Parameters:
nscode - The namespace code

writePI

public abstract void writePI(String target,
                             String data)
            throws TransformerException
Write a processing instruction

writeStartTag

public abstract void writeStartTag(int nameCode)
            throws TransformerException
Output an element start tag.
The actual output of the tag is deferred until all attributes have been output using writeAttribute().
Parameters:
nameCode - The element name code