net.sf.saxon.evpull

## Class Decomposer

- java.lang.Object
- - net.sf.saxon.evpull.Decomposer

- All Implemented Interfaces:
    EventIterator, PullEvent

      public class Decomposer
      extends Object
      implements EventIterator

  This class takes a sequence of pull events and turns it into fully-decomposed form, that is, it takes and document and element nodes in the sequence and turns them into a subsequence consisting of a start element|document event, a content sequence, and an end element|document event, recursively.

  The resulting sequence is decomposed, but not flat (it will contain nested EventIterators). To flatten it, use `EventStackIterator.flatten(EventIterator)`

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `Decomposer(EventIterator base, PipelineConfiguration pipe)` Create a Decomposer, which turns an event sequence into fully decomposed form
    `Decomposer(NodeInfo node, PipelineConfiguration pipe)` Create a Decomposer which returns the sequence of events corresponding to a particular node

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `isFlatSequence()` Determine whether the EventIterator returns a flat sequence of events, or whether it can return nested event iterators
    `PullEvent` | `next()` Get the next event in the sequence

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### Decomposer

          public Decomposer(EventIterator base,
                    PipelineConfiguration pipe)

      Create a Decomposer, which turns an event sequence into fully decomposed form
      Parameters:
        `base` - the base sequence, which may be fully composed, fully decomposed, or anything in between
        `pipe` - the Saxon pipeline configuration

    - #### Decomposer

          public Decomposer(NodeInfo node,
                    PipelineConfiguration pipe)

      Create a Decomposer which returns the sequence of events corresponding to a particular node
      Parameters:
        `node` - the node to be decomposed
        `pipe` - the Saxon pipeline configuration

  - ### Method Detail

    - #### next

          public PullEvent next()
                         throws XPathException

      Get the next event in the sequence
      Specified by:
        `next` in interface `EventIterator`
      Returns:
        the next event, or null when the sequence is exhausted. Note that since an EventIterator is itself a PullEvent, this method may return a nested iterator.
      Throws:
        `XPathException` - if a dynamic evaluation error occurs

    - #### isFlatSequence

          public boolean isFlatSequence()

      Determine whether the EventIterator returns a flat sequence of events, or whether it can return nested event iterators
      Specified by:
        `isFlatSequence` in interface `EventIterator`
      Returns:
        true if the next() method is guaranteed never to return an EventIterator

Copyright (c) 2004-2013 Saxonica Limited. All rights reserved.