## Package com.saxonica.stream.feed

This package contains classes used to support streaming.

See:
Description

Interface Summary
Feed: A Feed is a SequenceReceiver that accepts a sequence of items in composed form: it rejects events such as startElement and endElement that represent "decomposed" nodes in the data model.
FeedMaker: An expression that can be evaluated in streaming mode is represented at compile time by a list of FeedMaker objects.

Class Summary
AdjacentTextNodeMergerFeed: This class is used when a streaming template requests evaluation of a simple content constructor in streaming mode (that is, when it constructs a text, attribute, comment, or PI node based on the contents of the streamed document).
AtomizerFeed: This class is used when a streaming template requests atomization of nodes that don't come directly from the streamed document, but rather are constructed in the course of the push pipeline
AvgFeed: This class computes the result of the avg() function in push streaming mode
BlockFeed: This class is used when a streaming template requests evaluation of a block (typically (A, B, C)) where one of the child expressions takes input from a watch on the streamed document.
BufferingFeed: A BufferingFeed is used to wrap an expression that does not have intrinsic capability to accept streamed input.
CardinalityCheckingFeed: A Feed which checks the cardinality of the streamed sequence of items.
ComplexNodeEventFeed: This event feed supports instructions that create a document or element node.
CountFeed: This class is used when counting items (other than nodes delivered by a Watch)
DecomposingFeed: Appends the output of an ItemFeed to a SequenceReceiver
DistinctValuesFeed: This class is used when a streaming template requests evaluation of the distinct-values() of the nodes selected by a path expression
EmptyTextNodeRemoverFeed: This class is used when a streaming template requests evaluation of a simple content constructor in streaming mode (that is, when it constructs a text, attribute, comment, or PI node based on the contents of the streamed document).
EventFeed: An EventFeed evaluates an expression in "decomposed push" mode.
EventFeedMaker: Abstract FeedMaker acting for an Expression class that prefers to output decomposed events
FilterExpressionFeed: This class is used when a streaming template requests filtering of items that don't come directly from the streamed document, but rather are constructed in the course of the push pipeline
ForEachFeed: This class is used when a streaming template applies xsl:for-each to items that don't come directly from the streamed document, but rather are constructed in the course of the push pipeline
GeneralComparisonFeed: This class is used when a streaming template requests a general comparison with one operand being pushed from the streamed input document
ItemFeed: An ItemFeed evaluates an expression in "composed push" mode.
ItemFeedMaker: Abstract FeedMaker acting for an Expression class that prefers to output composed items
ItemMappingFeed: A Feed which applies an ItemMappingFunction to each supplied item.
MinimaxFeed: This class is used when a streaming template requests evaluation of the sum() of the nodes selected by a path expression
NextIterationFeed: This class is used when one of the xsl:with-param elements within an xsl:next-iteration of an xsl:iterate consumes the streamed input
SimpleNodeConstructorFeed: This class is used when a streaming template requests evaluation of a simple content constructor in streaming mode (that is, when it constructs a text, attribute, comment, or PI node based on the contents of the streamed document).
StringJoinFeed: This class is used when a streamed template requests evaluation of the string-join function streamed with respect to its first argument
SumFeed: This class is used when a streaming template requests evaluation of the sum() of the nodes selected by a path expression, with the streamed input being the value of the first argument.
WithParamFeed: A WithParamFeed is used to handle a WithParam element (for example, in xsl:next-iteration) whose select expression is evaluated in push mode.

## Package com.saxonica.stream.feed Description

This package contains classes used to support streaming. For many kinds of expression that support streaming, there is a `Feed`class in this package that evaluates the expression in composed push mode, one item at a time.

None of these classes will be used directly by typical user applications.

These classes generally implement the interface `ItemFeed`, whose main methods are `open()`, `append(item)`, and `close()`. These methods are called to supply the sequence of items representing the streamed operand of the expression. The feed class can either deliver the result incrementally during calls of the `append(item)` method, or it can deliver the entire result during the `close()` method. (It is the responsibility of the class, however, to minimize the amount of data that it buffers).

The `Feed` class for evaluating an expression is created by calling the `FeedMaker`, which in turn is returned by the streaming adjunct class for the particular kind of expression.

Michael H. Kay
Saxonica Limited
30 July 2010

Copyright (c) 2004-2010 Saxonica Limited. All rights reserved.