net.sf.saxon.expr

Class MappingIterator

public final class MappingIterator extends Object implements SequenceIterator, AtomizableIterator

MappingIterator merges a sequence of sequences into a single flat sequence. It takes as inputs an iteration, and a mapping function to be applied to each Item returned by that iteration. The mapping function itself returns another iteration. The result is an iteration of the concatenation of all the iterations returned by the mapping function.

This is a powerful class. It is used, with different mapping functions, in a great variety of ways. It underpins the way that "for" expressions and path expressions are evaluated, as well as sequence expressions. It is also used in the implementation of the document(), key(), and id() functions.

Constructor Summary
MappingIterator(SequenceIterator base, MappingFunction action, XPathContext context)
Construct a MappingIterator that will apply a specified MappingFunction to each Item returned by the base iterator.
Method Summary
Itemcurrent()
SequenceIteratorgetAnother()
intgetProperties()
Get properties of this iterator, as a bit-significant integer.
Itemnext()
intposition()
voidsetIsAtomizing(boolean atomizing)
Indicate that any nodes returned in the sequence will be atomized.

Constructor Detail

MappingIterator

public MappingIterator(SequenceIterator base, MappingFunction action, XPathContext context)
Construct a MappingIterator that will apply a specified MappingFunction to each Item returned by the base iterator.

Parameters: base the base iterator action the mapping function to be applied context the processing context. This should be supplied only if each item to be processed is to become the context item. In this case "base" should be the same as context.getCurrentIterator().

Method Detail

current

public Item current()

getAnother

public SequenceIterator getAnother()

getProperties

public int getProperties()
Get properties of this iterator, as a bit-significant integer.

Returns: the properties of this iterator. This will be some combination of properties such as SequenceIterator.GROUNDED, SequenceIterator.LAST_POSITION_FINDER, and SequenceIterator.LOOKAHEAD. It is always acceptable to return the value zero, indicating that there are no known special properties. It is acceptable for the properties of the iterator to change depending on its state.

next

public Item next()

position

public int position()

setIsAtomizing

public void setIsAtomizing(boolean atomizing)
Indicate that any nodes returned in the sequence will be atomized. This means that if it wishes to do so, the implementation can return the typed values of the nodes rather than the nodes themselves. The implementation is free to ignore this hint.

Parameters: atomizing true if the caller of this iterator will atomize any nodes that are returned, and is therefore willing to accept the typed value of the nodes instead of the nodes themselves.