net.sf.saxon.evpull

## Class ComplexContentProcessor

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

- All Implemented Interfaces:
    EventIterator, PullEvent

      public class ComplexContentProcessor
      extends Object
      implements EventIterator

  The ComplexContentProcessor is an EventIterator that deals with the events occurring between a startElement and endElement (or startDocument and endDocument) according to the XSLT/XQuery rules for constructing complex content. This includes:
  - Converting atomic values to text nodes (inserting space as a separator between adjacent nodes)
  - Replacing nested document nodes by their children
  - Merging adjacent text nodes and dropping zero-length text nodes
  - Detecting mispositioned or duplicated attribute and namespace nodes

  Note that if the content includes nodes such as element nodes, these will not be decomposed into a sequence of tree events, they will simply be returned as nodes.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `ComplexContentProcessor(Configuration config, EventIterator base)` Create the ComplexContentProcessor

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

    - #### ComplexContentProcessor

          public ComplexContentProcessor(Configuration config,
                                 EventIterator base)

      Create the ComplexContentProcessor
      Parameters:
        `config` - the Saxon Configuration
        `base` - the EventIterator that delivers the content of the element or document node

  - ### Method Detail

    - #### next

          public PullEvent next()
                         throws XPathException

      Get the next event in the sequence. This will never be an EventIterator.
      Specified by:
        `next` in interface `EventIterator`
      Returns:
        the next event, or null when the sequence is exhausted
      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.