Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## net.sf.saxon.sxpath
Class XPathVariable

    java.lang.Object
      net.sf.saxon.sxpath.XPathVariable

All Implemented Interfaces:
  Serializable, Binding, VariableDeclaration

    public final class XPathVariable

extends Object
implements VariableDeclaration, Binding, Serializable

An object representing an XPath variable for use in the standalone XPath API. The object can only be created by calling the declareVariable method of class `IndependentContext`. Note that once declared, this object is thread-safe: it does not hold the actual variable value, which means it can be used with any number of evaluations of a given XPath expression, in series or in parallel.

A variable can be given a value by calling `XPathDynamicContext.setVariable(XPathVariable, net.sf.saxon.om.ValueRepresentation)`. Note that the value of the variable is not held in the XPathVariable object, but in the XPathDynamicContext, which means that the XPathVariable itself can be used in multiple threads.

See Also:
  Serialized Form

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 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 of this variable.
`StructuredQName` | `getVariableQName()` Get the name of the variable as a QNameValue.
`boolean` | `isAssignable()` Test whether it is permitted to assign to the variable using the saxon:assign extension element.
`boolean` | `isGlobal()` Ask whether the binding is local or global.
`protected static XPathVariable` | `make(StructuredQName name)` Factory method, for use by the declareVariable method of class IndependentContext
`void` | `registerReference(BindingReference ref)` Method called by the XPath expression parser to register a reference to this variable.
`void` | `setRequiredType(SequenceType requiredType)` Set the required type of this variable.
`void` | `setSlotNumber(int slotNumber)` Set the slot number allocated to this variable.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Method Detail

### make

    protected static XPathVariable make(StructuredQName name)

  Factory method, for use by the declareVariable method of class IndependentContext

  Parameters:
    `name` - the name of the variable to create
  Returns:
    the constructed XPathVariable

### isGlobal

    public boolean isGlobal()

  Ask 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. An XPath variable is treated as a local variable (largely because it is held on the stack frame)

  Specified by:
    `isGlobal` in interface `Binding`
  Returns:
    false (always)

### isAssignable

    public final 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:
    false (always)

### setRequiredType

    public void setRequiredType(SequenceType requiredType)

  Set the required type of this variable. If no required type is specified, the type `item()*` is assumed.

  Parameters:
    `requiredType` - the required type

### getRequiredType

    public SequenceType getRequiredType()

  Get the required type of this variable. If no required type has been specified, the type `item()*` is returned.

  Specified by:
    `getRequiredType` in interface `Binding`
  Returns:
    the required type of the variable

### 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

### setSlotNumber

    public void setSlotNumber(int slotNumber)

  Set the slot number allocated to this variable. This method is for internal use.

  Parameters:
    `slotNumber` - the slot number to be allocated

### 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

### getVariableQName

    public StructuredQName getVariableQName()

  Get the name of the variable as a QNameValue.

  Specified by:
    `getVariableQName` in interface `Binding`
  Specified by:
    `getVariableQName` in interface `VariableDeclaration`
  Returns:
    the name of the variable, as a QNameValue

### 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

### registerReference

    public void registerReference(BindingReference ref)

  Method called by the XPath expression parser to register a reference to this variable. This method should not be called by users of the API.

  Specified by:
    `registerReference` in interface `VariableDeclaration`
  Parameters:
    `ref` - the variable reference

### evaluateVariable

    public ValueRepresentation evaluateVariable(XPathContext context)

  Get the value of the variable. This method is used by the XPath execution engine to retrieve the value. Note that the value is not held within the variable itself, but within the dunamic context.

  Specified by:
    `evaluateVariable` in interface `Binding`
  Parameters:
    `context` - The dynamic evaluation context
  Returns:
    The value of the variable

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

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