net.sf.saxon.expr
Class PositionVariable

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

public class PositionVariable
extends Object
implements Binding

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 ...".


Constructor Summary
PositionVariable()
          Create a RangeVariable
 
Method Summary
 ValueRepresentation evaluateVariable(XPathContext context)
          Get the value of the range variable
 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
equals, 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

getRequiredType

public SequenceType getRequiredType()
Get the required type (declared type) of the variable

Specified by:
getRequiredType in interface Binding
Returns:
the required type

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

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) Michael H. Kay. All rights reserved.