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 | |
---|---|
protected | JAXPVariable(StructuredQName 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.
|
SequenceType | getRequiredType() |
StructuredQName | getVariableQName()
Get the name of the variable as a structured QName |
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)
Construct a JAXP QName from a Saxon QNameValue |
void | registerReference(BindingReference ref)
Method called by the XPath expression parser to register a reference to this variable.
|
Parameters: name the name of the variable resolver the resolver used in conjunction with this variable
Parameters: context The dynamic evaluation context
Returns: The value of the variable
Parameters: in the Saxon QNameValue
Returns: the JAXP QName