Class SequenceWriter

java.lang.Object
net.sf.saxon.event.SequenceReceiver
net.sf.saxon.event.SequenceWriter
All Implemented Interfaces:
Result, Receiver
Direct Known Subclasses:
MessageListenerProxy, 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
  • Constructor Details

  • Method Details

    • write

      public abstract void write(Item item) throws XPathException
      Abstract method to be supplied by subclasses: output one item in the sequence.
      Parameters:
      item - the item to be written to the sequence
      Throws:
      XPathException - if any failure occurs while writing the item
    • startDocument

      public void startDocument(int properties) throws XPathException
      Start of a document node.
      Parameters:
      properties - bit-significant integer indicating properties of the document node. The definitions of the bits are in class ReceiverOptions
      Throws:
      XPathException - if an error occurs
    • adviseReuse

      protected boolean adviseReuse()
      Decide whether reuse of the SequenceWriter is advisable
      Returns:
      true if reuse is considered advisable
    • endDocument

      public void endDocument() throws XPathException
      Notify the end of a document node
      Throws:
      XPathException - if an error occurs
    • startElement

      public void startElement(NodeName elemName, SchemaType typeCode, int locationId, int properties) throws XPathException
      Output an element start tag.
      Parameters:
      elemName - 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
      locationId - an integer which can be interpreted using a LocationProvider to return information such as line number and system ID. If no location information is available, the value zero is supplied.
      properties - bit-significant flags indicating any special information
      Throws:
      XPathException - if an error occurs
    • endElement

      public void endElement() throws XPathException
      Output an element end tag.
      Throws:
      XPathException - if an error occurs
    • namespace

      public void namespace(NamespaceBinding namespaceBinding, 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:
      namespaceBinding - The namespace binding
      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(NodeName attName, SimpleType typeCode, CharSequence value, int locationId, int properties) throws XPathException
      Output an attribute value.
      Parameters:
      attName - 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
      locationId - an integer which can be interpreted using a LocationProvider to return information such as line number and system ID. If no location information is available, the value zero is supplied.
      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.
    • 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(CharSequence s, int locationId, int properties) throws XPathException
      Produce text content output.
      Parameters:
      s - The String to be output
      locationId - an integer which can be interpreted using a LocationProvider to return information such as line number and system ID. If no location information is available, the value zero is supplied.
      properties - bit-significant flags for extra information, e.g. disable-output-escaping
      Throws:
      XPathException - for any failure
    • comment

      public void comment(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 LocationProvider 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.
      Throws:
      XPathException - if an error occurs
    • processingInstruction

      public void processingInstruction(String target, 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 LocationProvider 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.
      Throws:
      XPathException - if an error occurs
    • close

      public void close() throws XPathException
      Close the output
      Throws:
      XPathException - if an error occurs
    • 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
      Parameters:
      item - the item to be appended
      locationId - the location of the calling instruction, for diagnostics
      copyNamespaces - if the item is an element node, this indicates whether its namespaces need to be copied. Values are NodeInfo.ALL_NAMESPACES, NodeInfo.LOCAL_NAMESPACES, NodeInfo.NO_NAMESPACES
      Throws:
      XPathException - if the operation fails
    • 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