net.sf.saxon.expr
Class PositionVariable

java.lang.Object
  extended by net.sf.saxon.expr.PositionVariable
All Implemented Interfaces:
Serializable, Binding

public class PositionVariable
extends Object
implements Binding, 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
PositionVariable()
          Create a RangeVariable
 
Method Summary
 void addReference(boolean isLoopingReference)
          Register a variable reference that refers to the variable bound in this expression
 ValueRepresentation evaluateVariable(XPathContext context)
          Get the value of the range variable
 IntegerValue[] 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 variable
 StructuredQName getVariableQName()
          Get the name of the variable, as a namepool name code
 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.
 void setSlotNumber(int nr)
          Set the slot number for the range variable
 void setVariableQName(StructuredQName variableName)
          Set the name of the variable
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PositionVariable

public PositionVariable()
Create a RangeVariable

Method Detail

getVariableQName

public StructuredQName getVariableQName()
Get the name of the variable, as a namepool name code

Specified by:
getVariableQName in interface Binding
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 interface Binding
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 interface Binding
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 interface Binding
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 interface Binding
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 interface Binding
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 interface Binding
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.

Specified by:
isGlobal in interface Binding
Returns:
true if the binding is global


Copyright (c) 2004-2011 Saxonica Limited. All rights reserved.