This package contains classes used to support streaming. For every kind of expression that can appear in the expression tree, there is an auxiliary or adjunct class that contains the code needed to support streaming (if any).
None of these classes will be used directly by typical user applications.
The interface to these adjunct classes is defined in the abstract class
StreamingAdjunct. The main methods
getFeedMaker() which return
a factory for respectively a
Watch and a
a Watch is used to evaluate the expression in decomposed push mode, an event
at a time, while a Feed is used to evaluate it in composed push mode, an item
at a time.
The association between an expression class and its corresponding adjunct is
held in a static map maintained by the class
Class Summary Class Description AbsorbingFunctionCallAdjunctHandle streaming for calls to user-defined functions with streamability="absorbing" AccumulatorAfterStreamerGenerate streaming code for an accumulator-after() function call, particularly in the case where the instruction is consuming and therefore has to defer evaluation until the endElement event. AdjacentTextNodeMergerAdjunctStreaming implementation of an AdjacentTextNodeMerger expression ApplyImportsAdjunctCompile an xsl:apply-imports expression/instruction to Java source code. ApplyTemplatesAdjunctHandle streaming for the xsl:apply-templates instruction ArrayBlockAdjunctGenerate streaming code for a Block, that is a sequence of expressions or instructions AscentFunctionCallAdjunctHandle streaming for calls to user-defined functions with streamability="ascent" AtomicSequenceConverterAdjunctCompile a AtomicSequenceConverter or UntypedSequenceConverter expression to streaming code. AtomizerAdjunctStreaming adjunct class for an atomizer (or call on the data() function) AxisExpressionAdjunctCompile an axis expression to streaming code. BlockAdjunctGenerate streaming code for a Block, that is a sequence of expressions or instructions BooleanFnFeedFeed implementation supporting the
BooleanFnFeed.NegativeFeed implementation for the fn:not function BooleanFnFeed.PositiveFeed implementation for the fn:boolean function BooleanFnStreamerStreaming code for an fn:boolean() function call CallTemplateAdjunct CardinalityCheckerAdjunctGenerate streaming code for a cardinality checker ChooseAdjunctStreaming code to implement a conditional ("if/choose") expression CodepointsToStringStreamer ComposingAdjunctWatch factory class for an class that composes items from sequences of events: examples are copy-of(), data(), and string(). ConditionalBlockAdjunctGenerate streaming code for a conditional Block, that is a sequence constructor containing xsl:on-empty and/or xsl:on-not-empty instructions ConditionalBlockAdjunct.ConditionalBlockFeed ContextItemExprAdjunct CopyAdjunctCompile an xsl:copy expression/instruction to streaming code. CopyOfAdjunct CountStreamerStreaming code for the count() function. CurrentGroupStreamerProvides streaming code for a call on current-group(). CurrentMergeGroupStreamerGenerate streaming code for a call on current-merge-group(). DeepDescentFunctionCallAdjunctHandle streaming for calls to user-defined functions with streamability="absorbing" DeepEqualStreamerImplement streaming of deep-equal function. DistinctValuesStreamerImplement the distinct-values function in streaming mode. DocumentInstrAdjunctEvaluate an xsl:document instruction in streaming code. DocumentInstrAdjunct.DocumentInstrFeed DocumentSorterAdjunctGenerate streaming code for a document sorting expression node. ElementCreatorAdjunctGenerate streaming code for an xsl:element instruction EmptyStreamerStreaming code for an fn:empty() function call EmptyTextNodeRemoverAdjunctCompile an EmptyTextNodeRemover expression to Java source code Needed only for streaming - this class is not used in XQuery ExistsStreamerStreaming code for an fn:exists() function call FeedToEventBufferAn ItemFeed that captures all written events in a buffer for subsequent replay. FilterExpressionAdjunctGenerate streaming code for a filter expression (when not part of a Watch). FilterFnStreamerGenerate streaming code for the fn:filter function. FilterFunctionCallAdjunctHandle streaming for calls to user-defined functions with streamability="filter" FilteringAdjunctA subclass of StreamingAdjunct used for expressions that have a sequence-valued operand with usage transmission. FirstItemExpressionAdjunctGenerate streaming code for a first item expression (when not part of a Watch). FoldStreamerStreaming code for functions implemented as fold operations. ForEachAdjunctCompile an xsl:for-each instruction to streaming code. ForEachGroupAdjunctCompile an xsl:for-each-group instruction to streaming code. ForExpressionAdjunctStreaming code to implement a "for" expression ForExpressionAdjunct.ForExpressionFeed ForkAdjunctStreaming code to implement an xsl:fork expression GeneralComparisonAdjunctWatch factory class for a general comparison GroupAdjacentTesterThis class implements GroupingFeed when the group-adjacent option is used. GroupBoundaryTesterThis feed supports xsl:for-each-group in streaming mode. GroupEndingTesterThis class implements GroupingFeed when the group-ending-with option is used. GroupStartingTesterThis class implements GroupingFeed when the group-starting-with option is used. IndexOfStreamerGenerate streaming code for the index-of() function. InsertBeforeStreamerImplement streaming of insert-before instruction. InspectionAdjunctAbstract superclass for constructs that have operand usage "inspection" on their primary (sequence-valued) operand InstanceOfAdjunctGenerate streaming code for an "instance of" expression IsLastExprAdjunct ItemCheckerAdjunctStreaming code for an item checker ItemsAfterStreamerGenerate streaming code for the saxon:items-after function. ItemsBeforeStreamerGenerate streaming code for the saxon:items-before function. ItemsFromStreamerGenerate streaming code for the saxon:items-from function. ItemsUntilStreamerGenerate streaming code for the saxon:items-after function. IterateAdjunctImplement streaming code for xsl:iterate LastStreamer LetExpressionAdjunctCompiles streaming code to implement a Let expression LetExpressionAdjunctBCompiles streaming code to implement a Let expression for which the "action" part (the return clause) is consuming LiteralAdjunctStreamed evaluation of a literal (not difficult!) MapEntryStreamerStreaming code to implement an xsl:map instruction or map constructor, where each map entry is allowed to be consuming. MergeInstrAdjunctStreaming adjunct for the xsl:merge instruction. MinimaxStreamerGenerate streaming code for the min() and max() functions. NewMapStreamerStreaming code to implement an xsl:map instruction or map constructor, where each map entry is allowed to be consuming. NextIterationAdjunctCompile a xsl:next-intruction instruction to streaming code. NextMatchAdjunctCompile an xsl:next-match expression/instruction to streaming code. NotFnStreamerStreaming code for an fn:not() function call OnEmptyAdjunctGenerate streaming code for a consuming xsl:on-empty instruction OnNonEmptyAdjunctGenerate streaming code for a consuming xsl:on-non-empty instruction OutermostStreamerStreaming code for an outermost() function call. ParentConstructorAdjunctWatch factory class for an atomizer RemoveStreamerGenerate streaming code for a remove() function call. ResultDocumentAdjunctHandle an xsl:result-document expression/instruction for XSLT streaming capability. ResultDocumentAdjunct.ResultDocumentFeed ReverseStreamer RootExpressionAdjunctStreaming code for an expression that does not support streaming RootStreamer SequenceInstrAdjunct ShallowDescentFunctionCallAdjunctHandle streaming for calls to user-defined functions with streamability="shallow-descent" SimpleNodeConstructorAdjunctGenerate streaming code for an xsl:value-of, xsl:comment, xsl:processing-instruction instruction, etc SingletonAtomizerAdjunctWatch factory class for a singleton atomizer SnapshotFnStreamerGenerate streaming code for the snapshot() function SortExpressionAdjunctStreaming code for sort expression. StreamingAdjunctThis abstract class supplements an
Expressionwith methods used at compile-time to support streaming, by generating a
Watchthat allows the expression to be evaluated in push mode.
StringFnStreamerStreaming code to implement the XPath string() function SubscriptExpressionAdjunctStreaming code for a subscript expression SubsequenceStreamerGenerate streaming code for a subsequence() function call. SubsequenceStreamer.SubsequenceFilter SwitchAdjunctStreaming code to implement a switch expression, which results from optimizing a choose where all the branches have similar test conditions. TailExpressionAdjunct TraceExprAdjunctImplement streaming of the trace instruction injected into the code when compiled with tracing enabled. TraceStreamerImplement streaming of fn:trace instruction. TransmissionAdjunctA subclass of StreamingAdjunct used for expressions that have a sequence-valued operand with usage transmission. TreatFnStreamerGenerate streaming code for a "treat" function call (for example one-or-more) TryCatchAdjunctStreaming code for a try/catch expression TryCatchAdjunct.TryCatchFeed UseAttributeSetAdjunct UserFunctionCallAdjunctHandle streaming for calls to user-defined functions Used only for XSLT streaming capability. VariableReferenceAdjunct VennExpressionAdjunct WherePopulatedAdjunctGenerate streaming code for an xsl:where-populated instruction. XmlToJsonFnStreamerStreaming code for the xml-to-json() function