Package net.sf.saxon.expr.flwor
Class ForClause
java.lang.Object
net.sf.saxon.expr.flwor.Clause
net.sf.saxon.expr.flwor.ForClause
A "for" clause in a FLWOR expression
-
Nested Class Summary
Nested classes/interfaces inherited from class net.sf.saxon.expr.flwor.Clause
Clause.ClauseName
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected boolean
protected LocalVariableBinding
protected LocalVariableBinding
protected Operand
protected PullEvaluator
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionboolean
addPredicate
(FLWORExpression flwor, ExpressionVisitor visitor, ContextItemStaticInfo contextItemType, Expression condition) Convert where clause to a predicate.void
addToPathMap
(PathMap pathMap, PathMap.PathMapNodeSet pathMapNodeSet) Collect information about the navigation paths followed by this clause, for document projection purposescopy
(FLWORExpression flwor, RebindingMap rebindings) Create a copy of this clausevoid
Diagnostic print of expression structure.void
gatherVariableReferences
(ExpressionVisitor visitor, Binding binding, List<VariableReference> references) Build a list of all references to a variables declared in this clauseGet a keyword identifying what kind of clause this isprotected SequenceIterator
getIterator
(XPathContext context) Get an iterator over the items or members in the input sequence.Get the position variable (the variable bound by the "at" clause)getPullStream
(TuplePull base, XPathContext context) Get a tuple stream that implements the functionality of this clause, taking its input from another tuple stream which this clause modifiesgetPushStream
(TuplePush destination, Outputter output, XPathContext context) Get a push-mode tuple stream that implements the functionality of this clause, supplying its output to another tuple streamGet the range variable (the primary variable bound by this clause)Get the variables bound by this clausevoid
initSequence
(FLWORExpression flwor, Expression sequence) boolean
Ask whether the "allowing empty" option is presentvoid
processOperands
(OperandProcessor processor) Process the subexpressions of this clausevoid
refineVariableType
(ExpressionVisitor visitor, List<VariableReference> references, Expression returnExpr) Supply improved type information to the expressions that contain references to the variables declared in this clausevoid
setAllowingEmpty
(boolean option) Say whether the "allowing empty" option is presentvoid
setPositionVariable
(LocalVariableBinding binding) Set the position variable (the variable bound by the "at" clause)void
setRangeVariable
(LocalVariableBinding binding) Set the range variable (the primary variable bound by this clause)void
setSequence
(Expression sequence) Get a short string representation of the clausetoString()
void
typeCheck
(ExpressionVisitor visitor, ContextItemStaticInfo contextInfo) Type-check the expressionMethods inherited from class net.sf.saxon.expr.flwor.Clause
containsNonInlineableVariableReference, getConfiguration, getLocation, getPackageData, getTraceInfo, isRepeated, optimize, setLocation, setPackageData, setRepeated
-
Field Details
-
rangeVariable
-
positionVariable
-
sequenceOp
-
sequenceOperandEvaluator
-
allowsEmpty
protected boolean allowsEmpty
-
-
Constructor Details
-
ForClause
public ForClause()
-
-
Method Details
-
getClauseKey
Description copied from class:Clause
Get a keyword identifying what kind of clause this is- Specified by:
getClauseKey
in classClause
- Returns:
- the kind of clause
-
copy
Description copied from class:Clause
Create a copy of this clause -
initSequence
-
setSequence
-
getSequence
-
getSequenceOp
-
getIterator
Get an iterator over the items or members in the input sequence.- Parameters:
context
- dynamic evaluation context- Returns:
- for a simple "for $x" clause, the sequence of items to which $x will be bound. For a "for member ¢x" clause, the sequence of array members, each wrapped as an object value
- Throws:
XPathException
- if evaluation fails
-
setRangeVariable
Set the range variable (the primary variable bound by this clause)- Parameters:
binding
- the range variable
-
getRangeVariable
Get the range variable (the primary variable bound by this clause)- Returns:
- the range variable
-
setPositionVariable
Set the position variable (the variable bound by the "at" clause)- Parameters:
binding
- the position variable, or null if there is no position variable
-
getPositionVariable
Get the position variable (the variable bound by the "at" clause)- Returns:
- the position variable, or null if there is no position variable
-
getRangeVariables
Get the variables bound by this clause- Overrides:
getRangeVariables
in classClause
- Returns:
- the variable bindings (1 or 2 depending on whether there is a position variable)
-
setAllowingEmpty
public void setAllowingEmpty(boolean option) Say whether the "allowing empty" option is present- Parameters:
option
- true if the "allowing empty" option is present
-
isAllowingEmpty
public boolean isAllowingEmpty()Ask whether the "allowing empty" option is present- Returns:
- true if the "allowing empty" option is present
-
typeCheck
public void typeCheck(ExpressionVisitor visitor, ContextItemStaticInfo contextInfo) throws XPathException Type-check the expression- Overrides:
typeCheck
in classClause
- Parameters:
visitor
- the ExpressionVisitor, providing access to static context informationcontextInfo
- static information about the dynamic context- Throws:
XPathException
- if any error is detected
-
getPullStream
Get a tuple stream that implements the functionality of this clause, taking its input from another tuple stream which this clause modifies- Specified by:
getPullStream
in classClause
- Parameters:
base
- the input tuple streamcontext
- the XPath dynamic context- Returns:
- the output tuple stream
-
getPushStream
Get a push-mode tuple stream that implements the functionality of this clause, supplying its output to another tuple stream- Specified by:
getPushStream
in classClause
- Parameters:
destination
- the output tuple streamoutput
- the destination for the resultcontext
- the dynamic evaluation context- Returns:
- the push tuple stream that implements the functionality of this clause of the FLWOR expression
-
addPredicate
public boolean addPredicate(FLWORExpression flwor, ExpressionVisitor visitor, ContextItemStaticInfo contextItemType, Expression condition) throws XPathException Convert where clause to a predicate.- Parameters:
flwor
- the FLWOR expression (sans the relevant part of the where clause)visitor
- the expression visitorcontextItemType
- the item type of the context itemcondition
- the predicate to be added. This will always be a single term (never a composite condition using "and"), as the where clause is split into separate terms before calling this method- Returns:
- true if the expression has been changed, that is, if the where clause has been converted
- Throws:
XPathException
- if an error is encountered
-
processOperands
Process the subexpressions of this clause- Specified by:
processOperands
in classClause
- Parameters:
processor
- the expression processor used to process the subexpressions- Throws:
XPathException
- if any error is detected
-
gatherVariableReferences
public void gatherVariableReferences(ExpressionVisitor visitor, Binding binding, List<VariableReference> references) Description copied from class:Clause
Build a list of all references to a variables declared in this clause- Overrides:
gatherVariableReferences
in classClause
- Parameters:
visitor
- the expression visitorbinding
- a variable declared in this clausereferences
- the list of variable references, initially empty, to which the method will append
-
refineVariableType
public void refineVariableType(ExpressionVisitor visitor, List<VariableReference> references, Expression returnExpr) Description copied from class:Clause
Supply improved type information to the expressions that contain references to the variables declared in this clause- Overrides:
refineVariableType
in classClause
- Parameters:
visitor
- the expression visitorreferences
- the list of variable referencesreturnExpr
- the expression in the return clause
-
addToPathMap
Description copied from class:Clause
Collect information about the navigation paths followed by this clause, for document projection purposes- Specified by:
addToPathMap
in classClause
- Parameters:
pathMap
- the path map in which the data is to be collectedpathMapNodeSet
- the path map node set representing the paths to the context item
-
explain
Diagnostic print of expression structure. The abstract expression tree is written to the supplied output destination.- Specified by:
explain
in classClause
- Parameters:
out
- the expression presenter used to display the structure- Throws:
XPathException
- if any error occurs
-
toShortString
Description copied from class:Clause
Get a short string representation of the clause- Overrides:
toShortString
in classClause
- Returns:
- a recognizable string
-
toString
-