net.sf.saxon.expr
public abstract class Assignation extends Expression implements Binding
Field Summary | |
---|---|
protected Expression | action |
protected SequenceType | requiredType |
protected Expression | sequence |
protected int | slotNumber |
protected StructuredQName | variableName |
Method Summary | |
---|---|
PathMap.PathMapNodeSet | addToPathMap(PathMap pathMap, PathMap.PathMapNodeSet pathMapNodeSet)
Add a representation of this expression to a PathMap. |
void | checkForUpdatingSubexpressions()
Check to ensure that this expression does not contain any inappropriate updating subexpressions.
|
ValueRepresentation | evaluateVariable(XPathContext context)
Get the value of the range variable |
protected Binding[] | extendBindingList(Binding[] in)
Extend an array of variable bindings to include the binding(s) defined in this expression |
Expression | getAction()
Get the action expression |
int | getLocalSlotNumber()
If this is a local variable held on the local stack frame, return the corresponding slot number.
|
StructuredQName | getObjectName() |
int | getRequiredSlots()
Get the number of slots required. |
SequenceType | getRequiredType()
Get the declared type of the variable
|
Expression | getSequence()
Get the "sequence" expression - the one to which the variable is bound |
String | getVariableName()
Get the display name of the range variable, for diagnostics only |
StructuredQName | getVariableQName()
Get the name of the variable |
boolean | isAssignable()
Test whether it is permitted to assign to the variable using the saxon:assign
extension element. |
boolean | isGlobal()
Indicate whether the binding is local or global. |
boolean | isUpdatingExpression()
Determine whether this is an updating expression as defined in the XQuery update specification |
Iterator<Expression> | iterateSubExpressions()
Get the immediate subexpressions of this expression |
Expression | promote(PromotionOffer offer, Expression parent)
Promote this expression if possible |
protected Expression | promoteWhereClause(Binding positionBinding)
Promote a WHERE clause whose condition doesn't depend on the variable being bound.
|
void | refineTypeInformation(ItemType type, int cardinality, Value constantValue, int properties, ExpressionVisitor visitor, Assignation currentExpression)
Refine the type information associated with this variable declaration. |
boolean | replaceSubExpression(Expression original, Expression replacement)
Replace one subexpression by a replacement subexpression |
void | setAction(Expression action)
Add the "return" or "satisfies" expression, and fix up all references to the
range variable that occur within that expression |
void | setRequiredType(SequenceType requiredType)
Set the required type (declared type) of the variable |
void | setSequence(Expression sequence)
Set the "sequence" expression - the one to which the variable is bound |
void | setSlotNumber(int nr)
Set the slot number for the range variable |
void | setVariableQName(StructuredQName variableName)
Set the name of the variable |
Expression | simplify(ExpressionVisitor visitor)
Simplify the expression |
void | suppressValidation(int validationMode)
Suppress validation on contained element constructors, on the grounds that the parent element
is already performing validation. |
The default implementation of this method assumes that an expression does no navigation other than the navigation done by evaluating its subexpressions, and that the subexpressions are evaluated in the same context as the containing expression. The method must be overridden for any expression where these assumptions do not hold. For example, implementations exist for AxisExpression, ParentExpression, and RootExpression (because they perform navigation), and for the doc(), document(), and collection() functions because they create a new navigation root. Implementations also exist for PathExpression and FilterExpression because they have subexpressions that are evaluated in a different context from the calling expression.
Parameters: pathMap the PathMap to which the expression should be added pathMapNodeSet the PathMapNodeSet to which the paths embodied in this expression should be added
Returns: the pathMapNodeSet representing the points in the source document that are both reachable by this expression, and that represent possible results of this expression. For an expression that does navigation, it represents the end of the arc in the path map that describes the navigation route. For other expressions, it is the same as the input pathMapNode.
Throws: net.sf.saxon.trans.XPathException if the expression has a non-permitted updateing subexpression
Parameters: in a set of variable bindings
Returns: a set of variable bindings including all those supplied plus this one
Returns: the action expression (introduced by "return" or "satisfies")
Returns: the number of slots required
Returns: the declared type
Returns: the expression to which the variable is bound
Returns: the lexical QName of the range variable
Returns: the variable name, as a QName
Returns: true if this is an updating expression
let $i := SEQ return if (C) then R else ()
to the form:
if (C) then (let $i := SEQ return R) else ()
Parameters: positionBinding the binding of the position variable if any
Returns: an expression in which terms from the WHERE clause that can be extracted have been extracted
Parameters: type the inferred item type of the expression to which the variable is bound cardinality the inferred cardinality of the expression to which the variable is bound constantValue the constant value to which the variable is bound (null if there is no constant value) properties other static properties of the expression to which the variable is bound visitor an expression visitor to provide context information currentExpression the expression that binds the variable
Parameters: original the original subexpression replacement the replacement subexpression
Returns: true if the original subexpression is found
Parameters: action the expression that occurs after the "return" keyword of a "for" expression, the "satisfies" keyword of "some/every", or the ":=" operator of a "let" expression.
Parameters: requiredType the required type
Parameters: sequence the expression to which the variable is bound
Parameters: nr the slot number to be used
Parameters: variableName the name of the variable
Parameters: visitor an expression visitor