net.sf.saxon.expr
Class ExpressionVisitor
java.lang.Object
net.sf.saxon.expr.ExpressionVisitor
public class ExpressionVisitor
extends java.lang.Object
The ExpressionVisitor supports the various phases of processing of an expression tree which require
a recursive walk of the tree structure visiting each node in turn. In maintains a stack holding the
ancestor nodes of the node currently being visited.
ExpressionVisitor
public ExpressionVisitor()
Create an ExpressionVisitor
getConfiguration
public Configuration getConfiguration()
Get the Saxon configuration
getContainer
public Container getContainer()
Get the container of the expressions being visited
getCurrentExpression
public Expression getCurrentExpression()
Get the current expression, the one being visited
getExecutable
public Executable getExecutable()
Get the Executable containing the expressions being visited
getParentExpression
public Expression getParentExpression()
Get the parent expression of the current expression in the expression tree
- the parent of the current expression (or null if this is the root)
getStack
public Stack getStack()
Get the stack containing all the expressions currently being visited
- the expression stack holding all the containing expressions of the current expression;
the objects on this Stack are instances of
Expression
getStaticContext
public StaticContext getStaticContext()
Get the static context for the expressions being visited. Note: this may not reflect all changes
in static context (e.g. namespace context, base URI) applying to nested expressions
isLoopingSubexpression
public boolean isLoopingSubexpression(Expression ancestor)
Return true if the current expression at the top of the visitor's stack is evaluated repeatedly
when a given ancestor expression is evaluated once
ancestor
- the ancestor expression. May be null, in which case the search goes all the way
to the base of the stack.
- true if the current expression is evaluated repeatedly
optimize
public Expression optimize(Expression exp,
ItemType contextItemType)
throws XPathException
Optimize an expression, via the ExpressionVisitor
exp
- the expression to be typecheckedcontextItemType
- the static type of the context item for this expression
resetStaticProperties
public final void resetStaticProperties()
Reset the static properties for the current expression and for all its containing expressions.
This should be done whenever the expression is changed in a way that might
affect the properties. It causes the properties to be recomputed next time they are needed.
setConfiguration
public void setConfiguration(Configuration configuration)
Set the Saxon configuration
configuration
- the Saxon configuration
setContainer
public void setContainer(Container container)
Set the container of the expressions being visited
container
- the container
setExecutable
public void setExecutable(Executable executable)
Set the Executable containing the expressions being visited
executable
- the Executable
setStack
public void setStack(Stack stack)
Set the stack used to hold the expressions being visited
stack
- the expression stack
setStaticContext
public void setStaticContext(StaticContext staticContext)
Set the static context for the expressions being visited. Note: this may not reflect all changes
in static context (e.g. namespace context, base URI) applying to nested expressions
staticContext
- the static context
simplify
public Expression simplify(Expression exp)
throws XPathException
Simplify an expression, via the ExpressionVisitor
exp
- the expression to be simplified
- the simplified expression
typeCheck
public Expression typeCheck(Expression exp,
ItemType contextItemType)
throws XPathException
Type check an expression, via the ExpressionVisitor
exp
- the expression to be typecheckedcontextItemType
- the static type of the context item for this expression
- the expression that results from type checking (this may be wrapped in expressions that
perform dynamic checking of the item type or cardinality, or that perform atomization or numeric
promotion)
XPathException
- if static type checking fails, that is, if the expression cannot possibly
deliver a value of the required type