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.
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. |
ComplexContentProcessor
public ComplexContentProcessor(Configuration config,
EventIterator base)
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) Michael H. Kay. All rights reserved.