Class 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.

    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method 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