## 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
`pipelineConfiguration, previousAtomic`

Fields inherited from interface javax.xml.transform.Result
`PI_DISABLE_OUTPUT_ESCAPING, PI_ENABLE_OUTPUT_ESCAPING`

Constructor Summary
`SequenceOutputter()` Create a new SequenceOutputter
`SequenceOutputter(int estimatedSize)`

Method Summary
`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, 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.
`Item` `getFirstItem()` Get the first item in the sequence that has been built
`java.util.ArrayList` `getList()` Get the list containing the sequence of items
`ValueRepresentation` `getSequence()` Get the sequence that has been built
`java.lang.String` `getSystemId()` Get the system ID
`boolean` `hasOpenNodes()` Determine whether there are any open document or element nodes in the output
`SequenceIterator` `iterate()` Get an iterator over the sequence of items that has been constructed
`void` `namespace(int nscode, int properties)` Output a namespace declaration.
`Item` `popLastItem()` Get the last item in the sequence that has been built, and remove it
`void` `processingInstruction(java.lang.String target, java.lang.CharSequence data, int locationId, int properties)` Write a processing instruction No-op in this implementation
`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
`getConfiguration, getNamePool, getPipelineConfiguration, open, setPipelineConfiguration, 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

### SequenceOutputter

    public SequenceOutputter(int estimatedSize)

Method Detail

### 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

### hasOpenNodes

    public boolean hasOpenNodes()

  Determine whether there are any open document or element nodes in the output

### startDocument

    public void startDocument(int properties)
                       throws XPathException

  Start of a document node.

  Throws:
    `XPathException`

### endDocument

    public void endDocument()
                     throws XPathException

  Notify the end of a document node

  Throws:
    `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.
  Throws:
    `XPathException`

### endElement

    public void endElement()
                    throws XPathException

  Output an element end tag.

  Throws:
    `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 "--")
  Throws:
    `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 "?>")
  Throws:
    `XPathException`

### close

    public void close()

  Close the output

### 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

  Specified by:
    `append` in class `SequenceReceiver`
  Throws:
    `XPathException`

### getSequence

    public ValueRepresentation getSequence()

  Get the sequence that has been built

### iterate

    public SequenceIterator iterate()

  Get an iterator over the sequence of items that has been constructed

### getList

    public java.util.ArrayList getList()

  Get the list containing the sequence of items

### getFirstItem

    public Item getFirstItem()

  Get the first item in the sequence that has been built

### popLastItem

    public Item popLastItem()

  Get the last item in the sequence that has been built, and remove it