net.sf.saxon.xpath
Class JAXPVariable
java.lang.Object
net.sf.saxon.xpath.JAXPVariable
- Binding, VariableDeclaration
public final class JAXPVariable
extends java.lang.Object
An object representing an XPath variable for use in the JAXP XPath API. The object
is created at compile time when the parser tries to bind a variable reference; the
value is fetched at run-time from the XPathVariableResolver. With this interface,
there is no way of reporting a static error if the variable has not been declared.
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.
JAXPVariable(StructuredQName name, XPathVariableResolver resolver) - Private constructor: for use only be the protected factory method make()
|
JAXPVariable
protected JAXPVariable(StructuredQName name,
XPathVariableResolver resolver)
Private constructor: for use only be the protected factory method make()
name
- the name of the variableresolver
- the resolver used in conjunction with this 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.
- getLocalSlotNumber in interface Binding
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.
- isAssignable in interface Binding
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.
- isGlobal in interface Binding
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.
- registerReference in interface VariableDeclaration