net.sf.saxon.event

Class SequenceWriter

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

Method Summary
protected booleanadviseReuse()
Decide whether reuse of the SequenceWriter is advisable
voidappend(Item item, int locationId, int copyNamespaces)
Append an item to the sequence, performing any necessary type-checking and conversion
voidattribute(int nameCode, int typeCode, CharSequence value, int locationId, int properties)
Output an attribute value.
voidcharacters(CharSequence s, int locationId, int properties)
Produce text content output.
voidclose()
Close the output
voidcomment(CharSequence comment, int locationId, int properties)
Write a comment.
voidendDocument()
Notify the end of a document node
voidendElement()
Output an element end tag.
voidnamespace(int nscode, int properties)
Output a namespace declaration.
voidprocessingInstruction(String target, CharSequence data, int locationId, int properties)
Write a processing instruction No-op in this implementation
voidstartContent()
The startContent() event is notified after all namespaces and attributes of an element have been notified, and before any child nodes are notified.
voidstartDocument(int properties)
Start of a document node.
voidstartElement(int nameCode, int typeCode, int locationId, int properties)
Output an element start tag.
booleanusesTypeAnnotations()
Ask whether this Receiver (or the downstream pipeline) makes any use of the type annotations supplied on element and attribute events
abstract voidwrite(Item item)
Abstract method to be supplied by subclasses: output one item in the sequence.

Method Detail

adviseReuse

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

Returns: true if reuse is considered advisable

append

public void append(Item item, int locationId, int copyNamespaces)
Append an item to the sequence, performing any necessary type-checking and conversion

attribute

public void attribute(int nameCode, int typeCode, CharSequence value, int locationId, int properties)
Output an attribute value.

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: net.sf.saxon.trans.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)
Produce text content output.

Parameters: s The String to be output properties bit-significant flags for extra information, e.g. disable-output-escaping

Throws: net.sf.saxon.trans.XPathException for any failure

close

public void close()
Close the output

comment

public void comment(CharSequence comment, int locationId, int properties)
Write a comment.

endDocument

public void endDocument()
Notify the end of a document node

endElement

public void endElement()
Output an element end tag.

namespace

public void namespace(int nscode, int properties)
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 properties Allows special properties to be passed if required

Throws: net.sf.saxon.trans.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)
Write a processing instruction No-op in this implementation

startContent

public 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.

Throws: net.sf.saxon.trans.XPathException for any failure

startDocument

public void startDocument(int properties)
Start of a document node.

startElement

public void startElement(int nameCode, int typeCode, int locationId, int properties)
Output an element start tag.

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

usesTypeAnnotations

public boolean usesTypeAnnotations()
Ask whether this Receiver (or the downstream pipeline) makes any use of the type annotations supplied on element and attribute events

Returns: true if the Receiver makes any use of this information. If false, the caller may supply untyped nodes instead of supplying the type annotation

write

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

Parameters: item the item to be written to the sequence