net.sf.saxon.trans

Class Variable

public final class Variable 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 StandaloneContext.
Method Summary
ValueRepresentationevaluateVariable(XPathContext context)
Get the value of the variable.
intgetLocalSlotNumber()
If this is a local variable held on the local stack frame, return the corresponding slot number.
intgetNameCode()
Establish the nameCode of the name of this variable.
StringgetVariableName()
Get the name of the variable.
booleanisAssignable()
Test whether it is permitted to assign to the variable using the saxon:assign extension element.
booleanisGlobal()
Indicate whether the binding is local or global.
static Variablemake(QNameValue name, Configuration config)
Factory method, for use by the declareVariable method of class StandaloneContext
static Variablemake(String qname, Configuration config)
Factory method, retained for backwards compatibility
voidregisterReference(BindingReference ref)
Method called by the XPath expression parser to register a reference to this variable.
voidsetSlotNumber(int slotNumber)
Set the slot number allocated to this variable
voidsetUseStack(boolean useStack)
Indicate that values of variables are to be found on the stack, not in the Variable object itself
voidsetValue(Object value)
Assign a value to the variable.
voidsetXPathValue(ValueRepresentation value)
Assign a value to the variable.

Method Detail

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.

Parameters: context The dynamic evaluation context

Returns: The value of the variable

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.

getNameCode

public int getNameCode()
Establish the nameCode of the name of this variable.

Returns: the nameCode

getVariableName

public String getVariableName()
Get the name of the variable. Used for diagnostic purposes only.

Returns: the name of the variable, as a string (containing the raw QName)

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.

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.

make

public static Variable make(QNameValue name, Configuration config)
Factory method, for use by the declareVariable method of class StandaloneContext

make

public static Variable make(String qname, Configuration config)

Deprecated: since 8.5: use Variable

Factory method, retained for backwards compatibility

Parameters: qname the lexical QName of the variable name

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.

setSlotNumber

public void setSlotNumber(int slotNumber)
Set the slot number allocated to this variable

Parameters: slotNumber

setUseStack

public void setUseStack(boolean useStack)
Indicate that values of variables are to be found on the stack, not in the Variable object itself

setValue

public void setValue(Object value)
Assign a value to the variable. This value may be changed between successive evaluations of a compiled XPath expression that references the variable. If this method is called, the value will be set directly within the Variable object. This is only workable if compilation and execution happen in the same thread. The preferred approach is to set the variable in the stack frame of the XPathContext object.

Parameters: value the value of the variable, as a Java object. This is converted to the "best fit" XPath data type.

Throws: net.sf.saxon.trans.XPathException if the Java value cannot be converted to an XPath type

setXPathValue

public void setXPathValue(ValueRepresentation value)
Assign a value to the variable. This value may be changed between successive evaluations of a compiled XPath expression that references the variable. If this method is called, the value will be set directly within the Variable object. This is only workable if compilation and execution happen in the same thread. The preferred approach is to set the variable in the stack frame of the XPathContext object.

Parameters: value the value of the variable, which must be an instance of a class representing a value in the XPath model.