## net.sf.saxon.evpull
Class ComplexContentProcessor

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

All Implemented Interfaces:
  EventIterator, PullEvent

    public class ComplexContentProcessor

extends java.lang.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
`ComplexContentProcessor(Configuration config, EventIterator base)` Create the ComplexContentProcessor

Method Summary
`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) Saxonica Limited. All rights reserved.