Package org.apache.xpath.operations
Class VariableSafeAbsRef
java.lang.Object
org.apache.xpath.Expression
org.apache.xpath.operations.Variable
org.apache.xpath.operations.VariableSafeAbsRef
- All Implemented Interfaces:
Serializable
,SourceLocator
,PathComponent
,ExpressionNode
,XPathVisitable
This is a "smart" variable reference that is used in situations where
an absolute path is optimized into a variable reference, but may
be used in some situations where the document context may have changed.
For instance, in select="document(doc/@href)//name[//salary > 7250]", the
root in the predicate will be different for each node in the set. While
this is easy to detect statically in this case, in other cases static
detection would be very hard or impossible. So, this class does a dynamic check
to make sure the document context of the referenced variable is the same as
the current document context, and, if it is not, execute the referenced variable's
expression with the current context instead.
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionexecute
(XPathContext xctxt, boolean destructiveOK) Dereference the variable, and return the reference value.Methods inherited from class org.apache.xpath.operations.Variable
callVisitors, deepEquals, execute, fixupVariables, getAnalysisBits, getElemVariable, getGlobal, getIndex, getQName, isPsuedoVarRef, isStableNumber, setIndex, setIsGlobal, setQName
Methods inherited from class org.apache.xpath.Expression
asIterator, asIteratorRaw, asNode, assertion, bool, canTraverseOutsideSubtree, error, execute, execute, executeCharsToContentHandler, exprAddChild, exprGetChild, exprGetNumChildren, exprGetParent, exprSetParent, getColumnNumber, getExpressionOwner, getLineNumber, getPublicId, getSystemId, isNodesetExpr, num, warn, xstr
-
Constructor Details
-
VariableSafeAbsRef
public VariableSafeAbsRef()
-
-
Method Details
-
execute
Dereference the variable, and return the reference value. Note that lazy evaluation will occur. If a variable within scope is not found, a warning will be sent to the error listener, and an empty nodeset will be returned.- Overrides:
execute
in classVariable
- Parameters:
xctxt
- The runtime execution context.destructiveOK
- true if a "safe" object doesn't need to be returned.- Returns:
- The evaluated variable, or an empty nodeset if not found.
- Throws:
TransformerException
-