Package net.sf.saxon.expr.flwor
Class LocalVariableBinding
java.lang.Object
net.sf.saxon.expr.flwor.LocalVariableBinding
- All Implemented Interfaces:
Binding
Represents the defining occurrence of a variable declared within a FLWOR expression,
for example the $p in "for $x at $p in ...".
-
Constructor Summary
ConstructorsConstructorDescriptionLocalVariableBinding
(StructuredQName name, SequenceType type) Create a LocalVariableBinding -
Method Summary
Modifier and TypeMethodDescriptionvoid
addReference
(boolean isLoopingReference) Register a variable reference that refers to the variable bound in this expressioncopy()
Make a copy of this LocalVariableBinding (except for the slot number)evaluateVariable
(XPathContext context) Get the value of the range variableIf the variable is bound to an integer, get the minimum and maximum possible values.int
If this is a local variable held on the local stack frame, return the corresponding slot number.int
Get the (nominal) count of the number of references to this variableGet the required type (declared type) of the variableGet the name of the variableboolean
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.void
Indicate that the variable bound by this let expression should be indexable (because it is used in an appropriate filter expression)void
setSlotNumber
(int nr) Set the slot number for the range variablevoid
setVariableQName
(StructuredQName variableName) Set the name of the variable
-
Constructor Details
-
LocalVariableBinding
Create a LocalVariableBinding- Parameters:
name
- the name of the variabletype
- the static type of the variable
-
-
Method Details
-
copy
Make a copy of this LocalVariableBinding (except for the slot number)- Returns:
- a copy of the binding
-
getVariableQName
Get the name of the variable- Specified by:
getVariableQName
in interfaceBinding
- Returns:
- the name of the variable
-
getRequiredType
Get the required type (declared type) of the variable- Specified by:
getRequiredType
in interfaceBinding
- Returns:
- the required type
-
getIntegerBoundsForVariable
If the variable is bound to an integer, get the minimum and maximum possible values. Return null if unknown or not applicable- Specified by:
getIntegerBoundsForVariable
in interfaceBinding
- Returns:
- a pair of integers containing the minimum and maximum values for the integer value; or null if the value is not an integer or the range is unknown
-
getNominalReferenceCount
public int getNominalReferenceCount()Get the (nominal) count of the number of references to this variable- Returns:
- zero if there are no references, one if there is a single reference that is not in a loop, some higher number if there are multiple references (or a single reference in a loop), or the special value @link RangeVariable#FILTERED} if there are any references in filter expressions that require searching.
-
addReference
public void addReference(boolean isLoopingReference) Register a variable reference that refers to the variable bound in this expression- Specified by:
addReference
in interfaceBinding
- Parameters:
isLoopingReference
- - true if the reference occurs within a loop, such as the predicate of a filter expression
-
setIndexedVariable
public void setIndexedVariable()Indicate that the variable bound by this let expression should be indexable (because it is used in an appropriate filter expression) -
setVariableQName
Set the name of the variable- Parameters:
variableName
- the name of the variable
-
setSlotNumber
public void setSlotNumber(int nr) Set the slot number for the range variable- Parameters:
nr
- the slot number to be used
-
getLocalSlotNumber
public int getLocalSlotNumber()If this is a local variable held on the local stack frame, return the corresponding slot number. In other cases, return -1.- Specified by:
getLocalSlotNumber
in interfaceBinding
- Returns:
- the slot number on the local stack frame
-
evaluateVariable
Get the value of the range variable- Specified by:
evaluateVariable
in interfaceBinding
- Parameters:
context
- the XPath dynamic evaluation context- Returns:
- the result of evaluating the variable
- Throws:
XPathException
- if an error occurs while evaluating the variable
-
isAssignable
public boolean isAssignable()Test whether it is permitted to assign to the variable using the saxon:assign extension element. This will only be for an XSLT global variable where the extra attribute saxon:assignable="yes" is present.- Specified by:
isAssignable
in interfaceBinding
- Returns:
- true if the binding is assignable
-
isGlobal
public boolean isGlobal()Indicate whether the binding is local or global. A global binding is one that has a fixed value for the life of a query or transformation; any other binding is local.
-