net.sf.saxon.xpath
public final class JAXPVariable extends Object implements VariableDeclaration, Binding
In Saxon terms, this class is both a VariableDeclaration and a Binding. Unlike a normal VariableDeclaration, it isn't created in advance, but is created on demand when the parser encounters a variable reference. This actually means that if the XPath expression contains two references to the same variable, two VariableDeclarations will be created; however, they will be indistinguishable to the VariableResolver. Acting as a VariableDeclaration, the object goes through the motions of fixing up a binding to a variable reference (in practice, of course, there is exactly one reference to the variable). Acting as a run-time binding, it then evaluates the variable by calling the XPathVariableResolver supplied by the API caller. If no XPathVariableResolver was supplied, an error is reported when a variable is encountered; but if the variable resolver doesn't recognize the variable name, it returns null, which is treated as an empty sequence.
Constructor Summary | |
---|---|
JAXPVariable(QNameValue name, XPathVariableResolver resolver)
Private constructor: for use only be the protected factory method make() |
Method Summary | |
---|---|
ValueRepresentation | evaluateVariable(XPathContext context)
Get the value of the variable. |
int | getLocalSlotNumber()
If this is a local variable held on the local stack frame, return the corresponding slot number.
|
int | getNameCode()
Establish the fingerprint of the name of this variable.
|
String | getVariableName()
Get the name of the variable. |
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. |
QName | makeQName(QNameValue in) |
void | registerReference(BindingReference ref)
Method called by the XPath expression parser to register a reference to this variable.
|
Parameters: context The dynamic evaluation context
Returns: The value of the variable
Returns: -1, always
Returns: the name of the variable, as a string (containing the raw QName)