Package net.sf.saxon.expr
Class PositionVariable
- java.lang.Object
-
- net.sf.saxon.expr.PositionVariable
-
- All Implemented Interfaces:
java.io.Serializable
,Binding
public class PositionVariable extends java.lang.Object implements Binding, java.io.Serializable
Represents the defining occurrence of the position variable in a for expression within an expression, for example the $p in "for $x at $p in ...".- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description PositionVariable()
Create a RangeVariable
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addReference(boolean isLoopingReference)
Register a variable reference that refers to the variable bound in this expressionValueRepresentation
evaluateVariable(XPathContext context)
Get the value of the range variableIntegerValue[]
getIntegerBoundsForVariable()
If the variable is bound to an integer, get the minimum and maximum possible values.int
getLocalSlotNumber()
If this is a local variable held on the local stack frame, return the corresponding slot number.SequenceType
getRequiredType()
Get the required type (declared type) of the variableStructuredQName
getVariableQName()
Get the name of the variable, as a namepool name codeboolean
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.void
setSlotNumber(int nr)
Set the slot number for the range variablevoid
setVariableQName(StructuredQName variableName)
Set the name of the variable
-
-
-
Method Detail
-
getVariableQName
public StructuredQName getVariableQName()
Get the name of the variable, as a namepool name code- Specified by:
getVariableQName
in interfaceBinding
- Returns:
- the nameCode
-
addReference
public void addReference(boolean isLoopingReference)
Description copied from interface:Binding
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
-
getRequiredType
public SequenceType getRequiredType()
Get the required type (declared type) of the variable- Specified by:
getRequiredType
in interfaceBinding
- Returns:
- the required type
-
getIntegerBoundsForVariable
public IntegerValue[] 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
-
setVariableQName
public void setVariableQName(StructuredQName variableName)
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
public ValueRepresentation evaluateVariable(XPathContext context) throws XPathException
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
-
-