# Package com.saxonica.stream.feed

This package contains classes used to support streaming.

See: Description

- Interface Summary
  Interface | Description
  --- | ---
  Feed | A Feed is pipeline component that accepts a sequence of items in composed form: it does not accept 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
  Class | Description
  --- | ---
  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).
  ApplyTemplatesFeed | This class is used when a streaming template applies xsl:apply-templates to composed items, typically to the items in the current group established using xsl:for-each-group
  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
  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
  GroupAdjacentFeed | This class implements GroupingFeed when the group-adjacent option is used.
  GroupEndingFeed | This class implements GroupingFeed when the group-ending-with option is used.
  GroupingFeed | This feed supports xsl:for-each-group in streaming mode.
  GroupStartingFeed | This class implements GroupingFeed when the group-starting-with option is used.
  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 DummyItemMappingFunction to each supplied item.
  IterateFeed | This class is used when a streaming template applies xsl:iterate to items that don't come directly from the streamed document, but rather are constructed in the course of the push pipeline.
  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
  NoOpenOrCloseFeed | Created by IntelliJ IDEA.
  RetainingFeed | A BufferingFeed is used to wrap an expression that does not have intrinsic capability to accept streamed input.
  ShallowCopyEventFeed | This event feed implements an implicit xsl:copy instruction used in a built-in template.
  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-2013 Saxonica Limited. All rights reserved.