net.sf.saxon.event
Class SequenceOutputter

java.lang.Object
  |
  +--net.sf.saxon.event.SequenceReceiver
        |
        +--net.sf.saxon.event.SequenceOutputter
All Implemented Interfaces:
Receiver, javax.xml.transform.Result

public final class SequenceOutputter
extends SequenceReceiver

This outputter is used when writing a sequence of atomic values and nodes, that is, when xsl:variable is used with content and an "as" attribute. The outputter builds the sequence and provides access to it. (It isn't really an outputter at all, it doesn't pass the events to anyone, it merely constructs the sequence in memory and provides access to it). Note that the event sequence can include calls such as startElement and endElement that require trees to be built. If nodes such as attributes and text nodes are received while an element is being constructed, the nodes are added to the tree. Otherwise, "orphan" nodes (nodes with no parent) are created and added directly to the sequence.

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


Field Summary
 
Fields inherited from class net.sf.saxon.event.SequenceReceiver
locator, previousAtomic
 
Fields inherited from interface javax.xml.transform.Result
PI_DISABLE_OUTPUT_ESCAPING, PI_ENABLE_OUTPUT_ESCAPING
 
Constructor Summary
SequenceOutputter()
          Create a new SequenceOutputter
 
Method Summary
 void append(Item item, int locationId)
          Append an item to the sequence, performing any necessary type-checking and conversion
 void attribute(int nameCode, int typeCode, java.lang.CharSequence value, int locationId, int properties)
          Output an attribute value.
 void characters(java.lang.CharSequence s, int locationId, int properties)
          Produce text content output.
 void close()
          Close the output
 void comment(java.lang.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.
 Configuration getConfiguration()
          Get the configuration
 Item getFirstItem()
          Get the first item in the sequence that has been built
 NamePool getNamePool()
          Get the name pool
 Value getSequence()
          Get the sequence that has been built
 java.lang.String getSystemId()
          Get the system ID
 void namespace(int nscode, int properties)
          Output a namespace declaration.
 void open()
          Notify the start of the document.
 void processingInstruction(java.lang.String target, java.lang.CharSequence data, int locationId, int properties)
          Write a processing instruction No-op in this implementation
 void setConfiguration(Configuration config)
          Set the name pool.
 void setSystemId(java.lang.String systemId)
          Set the system ID
 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.
 
Methods inherited from class net.sf.saxon.event.SequenceReceiver
getDocumentLocator, setDocumentLocator, setUnparsedEntity
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SequenceOutputter

public SequenceOutputter()
Create a new SequenceOutputter

Method Detail

setConfiguration

public void setConfiguration(Configuration config)
Set the name pool. This method must be called before startDocument() is called.

Parameters:
config - the configuration. The name pool held by this configuration must contain all the name codes that are passed across this interface.

getNamePool

public NamePool getNamePool()
Get the name pool

Returns:
the Name Pool that was supplied using the setConfiguration() method

getConfiguration

public Configuration getConfiguration()
Description copied from interface: Receiver
Get the configuration


setSystemId

public void setSystemId(java.lang.String systemId)
Set the system ID

Specified by:
setSystemId in interface Receiver
Overrides:
setSystemId in class SequenceReceiver
Parameters:
systemId - the URI used to identify the tree being passed across this interface

getSystemId

public java.lang.String getSystemId()
Get the system ID

Specified by:
getSystemId in interface javax.xml.transform.Result
Overrides:
getSystemId in class SequenceReceiver
Returns:
the system ID that was supplied using the setSystemId() method

open

public final void open()
                throws XPathException
Notify the start of the document. This event is notified once, before any other events. This implementation does nothing.

Specified by:
open in interface Receiver
Overrides:
open in class SequenceReceiver
XPathException

startDocument

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

XPathException

endDocument

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

XPathException

startElement

public void startElement(int nameCode,
                         int typeCode,
                         int locationId,
                         int properties)
                  throws XPathException
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
locationId - an integer which can be interpreted using a LocationMap to return information such as line number and system ID. If no location information is available, the value zero is supplied.
XPathException

endElement

public void endElement()
                throws XPathException
Output an element end tag.

XPathException

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.

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.

attribute

public void attribute(int nameCode,
                      int typeCode,
                      java.lang.CharSequence value,
                      int locationId,
                      int properties)
               throws XPathException
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
locationId - an integer which can be interpreted using a LocationMap to return information such as line number and system ID. If no location information is available, the value zero is supplied.
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.

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.

Throws:
XPathException - for any failure

characters

public void characters(java.lang.CharSequence s,
                       int locationId,
                       int properties)
                throws XPathException
Produce text content output.

Parameters:
s - The String to be output
properties - bit-significant flags for extra information, e.g. disable-output-escaping
locationId - an integer which can be interpreted using a LocationMap to return information such as line number and system ID. If no location information is available, the value zero is supplied.
Throws:
XPathException - for any failure

comment

public void comment(java.lang.CharSequence comment,
                    int locationId,
                    int properties)
             throws XPathException
Write a comment.

Parameters:
comment - The content of the comment
locationId - an integer which can be interpreted using a LocationMap to return information such as line number and system ID. If no location information is available, the value zero is supplied.
properties - Additional information about the comment. The following bits are defined:
CHECKED
Comment is known to be legal (e.g. doesn't contain "--")
XPathException

processingInstruction

public void processingInstruction(java.lang.String target,
                                  java.lang.CharSequence data,
                                  int locationId,
                                  int properties)
                           throws XPathException
Write a processing instruction No-op in this implementation

Parameters:
target - The PI name. This must be a legal name (it will not be checked).
data - The data portion of the processing instruction
locationId - an integer which can be interpreted using a LocationMap to return information such as line number and system ID. If no location information is available, the value zero is supplied.
properties - Additional information about the PI. The following bits are defined:
CHECKED
Data is known to be legal (e.g. doesn't contain "?>")
XPathException

close

public void close()
           throws XPathException
Close the output

XPathException

append

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

Specified by:
append in class SequenceReceiver
XPathException

getSequence

public Value getSequence()
Get the sequence that has been built


getFirstItem

public Item getFirstItem()
Get the first item in the sequence that has been built