net.sf.saxon.event

Class SequenceWriter

Implemented Interfaces:
Receiver, Result
Known Direct Subclasses:
SequenceOutputter

public abstract class SequenceWriter
extends SequenceReceiver

This outputter is used when writing a sequence of atomic values and nodes, for example, when xsl:variable is used with content and an "as" attribute. The outputter builds the sequence; the concrete subclass is responsible for deciding what to do with the resulting items.

This class is not used to build temporary trees. For that, the ComplexContentOutputter is used.

Author:
Michael H. Kay

Field Summary

Fields inherited from class net.sf.saxon.event.SequenceReceiver

pipelineConfiguration, previousAtomic, systemId

Method Summary

protected boolean
adviseReuse()
Decide whether reuse of the SequenceWriter is advisable
void
append(Item item, int locationId, int copyNamespaces)
Append an item to the sequence, performing any necessary type-checking and conversion
void
attribute(int nameCode, int typeCode, CharSequence value, int locationId, int properties)
Output an attribute value.
void
characters(CharSequence s, int locationId, int properties)
Produce text content output.
void
close()
Close the output
void
comment(CharSequence comment, int locationId, int properties)
Write a comment.
void
endDocument()
Notify the end of a document node
void
endElement()
Output an element end tag.
boolean
hasOpenNodes()
Determine whether there are any open document or element nodes in the output
void
namespace(int nscode, int properties)
Output a namespace declaration.
void
processingInstruction(String target, CharSequence data, int locationId, int properties)
Write a processing instruction No-op in this implementation
void
startContent()
The startContent() event is notified after all namespaces and attributes of an element have been notified, and before any child nodes are notified.
void
startDocument(int properties)
Start of a document node.
void
startElement(int nameCode, int typeCode, int locationId, int properties)
Output an element start tag.
abstract void
write(Item item)
Abstract method to be supplied by subclasses: output one item in the sequence.

Methods inherited from class net.sf.saxon.event.SequenceReceiver

append, getConfiguration, getNamePool, getPipelineConfiguration, getSystemId, open, setPipelineConfiguration, setSystemId, setUnparsedEntity

Method Details

adviseReuse

protected boolean adviseReuse()
Decide whether reuse of the SequenceWriter is advisable

append

public void append(Item item,
                   int locationId,
                   int copyNamespaces)
            throws XPathException
Append an item to the sequence, performing any necessary type-checking and conversion
Overrides:
append in interface SequenceReceiver

attribute

public void attribute(int nameCode,
                      int typeCode,
                      CharSequence value,
                      int locationId,
                      int properties)
            throws XPathException
Output an attribute value.
Specified by:
attribute in interface Receiver
Parameters:
nameCode - An integer code representing the name of the attribute, as held in the Name Pool
typeCode - Integer code identifying the type annotation of the attribute; zero represents the default type (xs:untypedAtomic)
value - The value of the attribute
properties - Bit significant flags for passing extra information to the serializer, e.g. to disable escaping
Throws:
XPathException - 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.

characters

public void characters(CharSequence s,
                       int locationId,
                       int properties)
            throws XPathException
Produce text content output.
Specified by:
characters in interface Receiver
Parameters:
s - The String to be output
properties - bit-significant flags for extra information, e.g. disable-output-escaping
Throws:
XPathException - for any failure

close

public void close()
            throws XPathException
Close the output
Specified by:
close in interface Receiver

comment

public void comment(CharSequence comment,
                    int locationId,
                    int properties)
            throws XPathException
Write a comment.
Specified by:
comment in interface Receiver

endDocument

public void endDocument()
            throws XPathException
Notify the end of a document node
Specified by:
endDocument in interface Receiver

endElement

public void endElement()
            throws XPathException
Output an element end tag.
Specified by:
endElement in interface Receiver

hasOpenNodes

public boolean hasOpenNodes()
Determine whether there are any open document or element nodes in the output

namespace

public void namespace(int nscode,
                      int properties)
            throws XPathException
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:
namespace in interface Receiver
Parameters:
nscode - The namespace code
properties - Allows special properties to be passed if required
Throws:
XPathException - 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.

processingInstruction

public void processingInstruction(String target,
                                  CharSequence data,
                                  int locationId,
                                  int properties)
            throws XPathException
Write a processing instruction No-op in this implementation
Specified by:
processingInstruction in interface Receiver

startContent

public void startContent()
            throws XPathException
The startContent() event is notified after all namespaces and attributes of an element have been notified, and before any child nodes are notified.
Specified by:
startContent in interface Receiver
Throws:
XPathException - for any failure

startDocument

public void startDocument(int properties)
            throws XPathException
Start of a document node.
Specified by:
startDocument in interface Receiver

startElement

public void startElement(int nameCode,
                         int typeCode,
                         int locationId,
                         int properties)
            throws XPathException
Output an element start tag.
Specified by:
startElement in interface Receiver
Parameters:
nameCode - The element name code - a code held in the Name Pool
typeCode - Integer code identifying the type of this element. Zero identifies the default type, that is xs:anyType
properties - bit-significant flags indicating any special information

write

public abstract void write(Item item)
            throws XPathException
Abstract method to be supplied by subclasses: output one item in the sequence.