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 Details

    • 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 Details

    • 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