net.sf.saxon.event
Class XMLEmitter

java.lang.Object
  |
  +--net.sf.saxon.event.Emitter
        |
        +--net.sf.saxon.event.XMLEmitter
All Implemented Interfaces:
Receiver, javax.xml.transform.Result
Direct Known Subclasses:
HTMLEmitter, MessageEmitter, TEXTEmitter, XHTMLEmitter

public class XMLEmitter
extends Emitter

XMLEmitter is an Emitter that generates XML output to a specified destination.


Field Summary
protected  boolean declarationIsWritten
           
protected  int elementCode
           
protected  java.util.Stack elementStack
           
protected  boolean empty
           
protected  boolean escaping
           
protected  boolean openStartTag
           
protected  boolean preferHex
           
protected  boolean undeclareNamespaces
           
 
Fields inherited from class net.sf.saxon.event.Emitter
characterSet, locator, namePool, outputProperties, outputStream, streamResult, systemId, writer
 
Fields inherited from interface javax.xml.transform.Result
PI_DISABLE_OUTPUT_ESCAPING, PI_ENABLE_OUTPUT_ESCAPING
 
Constructor Summary
XMLEmitter()
           
 
Method Summary
 void attribute(int nameCode, int typeCode, java.lang.CharSequence value, int properties)
          Notify an attribute.
 void characters(java.lang.CharSequence chars, int properties)
          Character data.
 void closeStartTag(java.lang.String displayName, boolean emptyTag)
           
 void comment(java.lang.CharSequence chars, int properties)
          Handle a comment.
protected  java.lang.String emptyElementTagCloser(java.lang.String displayName)
          Close an empty element tag.
 void endDocument()
          End of the document.
 void endElement()
          End of an element.
 void namespace(int namespaceCode, int properties)
          Notify a namespace.
protected  void openDocument()
          Do the real work of starting the document.
protected  void outputCharacterReference(int charval)
           
 void processingInstruction(java.lang.String target, java.lang.CharSequence data, int properties)
          Handle a processing instruction.
 void setDocumentLocator(org.xml.sax.Locator locator)
          Set Document Locator.
 void setUnparsedEntity(java.lang.String name, java.lang.String uri)
          Set the URI for an unparsed entity in the document.
 void startContent()
          Notify the start of the content, that is, the completion of all attributes and namespaces.
 void startDocument()
          Start of the document.
 void startElement(int nameCode, int typeCode, int properties)
          Start of an element.
protected  int testCharacters(java.lang.CharSequence chars)
          Test that all characters in a name are supported in the target encoding.
protected  void writeAttribute(int elCode, java.lang.String attname, java.lang.CharSequence value, int properties)
          Write attribute name=value pair.
 void writeDeclaration()
          Output the XML declaration
protected  void writeDocType(java.lang.String type, java.lang.String systemId, java.lang.String publicId)
          Output the document type declaration
protected  void writeEscape(java.lang.CharSequence chars, boolean inAttribute)
          Write contents of array to current writer, after escaping special characters.
 
Methods inherited from class net.sf.saxon.event.Emitter
getNamePool, getOutputProperties, getOutputStream, getSystemId, getWriter, makeEmitter, makeWriter, setNamePool, setOutputProperties, setOutputStream, setStreamResult, setSystemId, setUnparsedEntity, setWriter, usesWriter
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

empty

protected boolean empty

escaping

protected boolean escaping

openStartTag

protected boolean openStartTag

declarationIsWritten

protected boolean declarationIsWritten

elementCode

protected int elementCode

preferHex

protected boolean preferHex

undeclareNamespaces

protected boolean undeclareNamespaces

elementStack

protected java.util.Stack elementStack
Constructor Detail

XMLEmitter

public XMLEmitter()
Method Detail

setDocumentLocator

public void setDocumentLocator(org.xml.sax.Locator locator)
Set Document Locator. Provided merely to satisfy the interface.

Specified by:
setDocumentLocator in interface Receiver
Overrides:
setDocumentLocator in class Emitter

startDocument

public void startDocument()
                   throws javax.xml.transform.TransformerException
Start of the document. Nothing is done at this stage: the opening of the output file is deferred until some content is written to it.

javax.xml.transform.TransformerException

openDocument

protected void openDocument()
                     throws javax.xml.transform.TransformerException
Do the real work of starting the document. This happens when the first content is written.

Throws:
javax.xml.transform.TransformerException

writeDeclaration

public void writeDeclaration()
                      throws javax.xml.transform.TransformerException
Output the XML declaration

javax.xml.transform.TransformerException

writeDocType

protected void writeDocType(java.lang.String type,
                            java.lang.String systemId,
                            java.lang.String publicId)
                     throws javax.xml.transform.TransformerException
Output the document type declaration

javax.xml.transform.TransformerException

endDocument

public void endDocument()
                 throws javax.xml.transform.TransformerException
End of the document. Close the output stream.

javax.xml.transform.TransformerException

startElement

public void startElement(int nameCode,
                         int typeCode,
                         int properties)
                  throws javax.xml.transform.TransformerException
Start of an element. Output the start tag, escaping special characters.

Parameters:
nameCode - integer code identifying the name of the element within the name pool.
typeCode - integer code identifying the element's type within the name pool.
javax.xml.transform.TransformerException

namespace

public void namespace(int namespaceCode,
                      int properties)
               throws javax.xml.transform.TransformerException
Description copied from interface: Receiver
Notify a namespace. Namespaces are notified after the startElement event, and before any children for the element. The namespaces that are reported are only required to include those that are different from the parent element; however, duplicates may be reported. A namespace must not conflict with any namespaces already used for element or attribute names.

Parameters:
namespaceCode - an integer: the top half is a prefix code, the bottom half a URI code. These may be translated into an actual prefix and URI using the name pool. A prefix code of zero represents the empty prefix (that is, the default namespace). A URI code of zero represents a URI of "", that is, a namespace undeclaration.
javax.xml.transform.TransformerException

attribute

public void attribute(int nameCode,
                      int typeCode,
                      java.lang.CharSequence value,
                      int properties)
               throws javax.xml.transform.TransformerException
Description copied from interface: Receiver
Notify an attribute. Attributes are notified after the startElement event, and before any children. Namespaces and attributes may be intermingled.

Parameters:
nameCode - The name of the attribute, as held in the name pool
typeCode - The type of the attribute, as held in the name pool
properties - Bit significant value. The following bits are defined:
DISABLE_ESCAPING
Disable escaping for this attribute
NO_SPECIAL_CHARACTERS
Attribute value contains no special characters
javax.xml.transform.TransformerException

startContent

public void startContent()
                  throws javax.xml.transform.TransformerException
Description copied from interface: Receiver
Notify the start of the content, that is, the completion of all attributes and namespaces. Note that the initial receiver of output from XSLT instructions will not receive this event, it has to detect it itself. Note that this event is reported for every element even if it has no attributes, no namespaces, and no content.

javax.xml.transform.TransformerException

closeStartTag

public void closeStartTag(java.lang.String displayName,
                          boolean emptyTag)
                   throws javax.xml.transform.TransformerException
javax.xml.transform.TransformerException

emptyElementTagCloser

protected java.lang.String emptyElementTagCloser(java.lang.String displayName)
Close an empty element tag. (This is overridden in XHTMLEmitter).


writeAttribute

protected void writeAttribute(int elCode,
                              java.lang.String attname,
                              java.lang.CharSequence value,
                              int properties)
                       throws javax.xml.transform.TransformerException
Write attribute name=value pair.

Parameters:
elCode - The element name is not used in this version of the method, but is used in the HTML subclass.
attname - The attribute name, which has already been validated to ensure it can be written in this encoding
value - The value of the attribute
properties - Any special properties of the attribute
javax.xml.transform.TransformerException

testCharacters

protected int testCharacters(java.lang.CharSequence chars)
                      throws javax.xml.transform.TransformerException
Test that all characters in a name are supported in the target encoding.

Returns:
zero if all the characters are available, or the value of the first offending character if not
javax.xml.transform.TransformerException

endElement

public void endElement()
                throws javax.xml.transform.TransformerException
End of an element.

javax.xml.transform.TransformerException

characters

public void characters(java.lang.CharSequence chars,
                       int properties)
                throws javax.xml.transform.TransformerException
Character data.

Parameters:
chars - The characters
properties - Bit significant value. The following bits are defined:
DISABLE_ESCAPING
Disable escaping for this text node
USE_CDATA
Output as a CDATA section
NO_SPECIAL_CHARACTERS
Value contains no special characters
WHITESPACE
Text is all whitespace
javax.xml.transform.TransformerException

processingInstruction

public void processingInstruction(java.lang.String target,
                                  java.lang.CharSequence data,
                                  int properties)
                           throws javax.xml.transform.TransformerException
Handle a processing instruction.

Parameters:
target - The PI name. This must be a legal name (it will not be checked).
data - The data portion of the processing instruction
properties - Additional information about the PI. The following bits are defined:
CHECKED
Data is known to be legal (e.g. doesn't contain "?>")
javax.xml.transform.TransformerException

writeEscape

protected void writeEscape(java.lang.CharSequence chars,
                           boolean inAttribute)
                    throws java.io.IOException
Write contents of array to current writer, after escaping special characters. This method converts the XML special characters (such as < and &) into their predefined entities.

Parameters:
chars - The character sequence containing the string
inAttribute - Set to true if the text is in an attribute value
java.io.IOException

outputCharacterReference

protected void outputCharacterReference(int charval)
                                 throws java.io.IOException
java.io.IOException

comment

public void comment(java.lang.CharSequence chars,
                    int properties)
             throws javax.xml.transform.TransformerException
Handle a comment.

Parameters:
chars - The content of the comment
properties - Additional information about the comment. The following bits are defined:
CHECKED
Comment is known to be legal (e.g. doesn't contain "--")
javax.xml.transform.TransformerException

setUnparsedEntity

public void setUnparsedEntity(java.lang.String name,
                              java.lang.String uri)
                       throws javax.xml.transform.TransformerException
Set the URI for an unparsed entity in the document.

javax.xml.transform.TransformerException