## net.sf.saxon.expr
Class PositionVariable

    java.lang.Object
      net.sf.saxon.expr.PositionVariable

All Implemented Interfaces:
  Binding

    public class PositionVariable

extends java.lang.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
`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

### 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) Saxonica Limited. All rights reserved.