net.sf.saxon.expr

Class ContextItemExpression

public class ContextItemExpression extends Expression

This class represents the expression "(dot)", which always returns the context item. This may be a AtomicValue or a Node.
Field Summary
ItemTypeitemType
Constructor Summary
ContextItemExpression()
Create the expression
Method Summary
PathMap.PathMapNodeSetaddToPathMap(PathMap pathMap, PathMap.PathMapNodeSet pathMapNodeSet)
Add a representation of this expression to a PathMap.
intcomputeCardinality()
Get the static cardinality
intcomputeSpecialProperties()
Determine the special properties of this expression
Expressioncopy()
Create a clone copy of this expression
booleanequals(Object other)
Is this expression the same as another expression?
ItemevaluateItem(XPathContext context)
Evaluate the expression
voidexplain(ExpressionPresenter destination)
Diagnostic print of expression structure.
protected StringgetErrorCodeForUndefinedContext()
intgetIntrinsicDependencies()
ItemTypegetItemType(TypeHierarchy th)
Determine the item type
inthashCode()
get HashCode for comparing two expressions
booleanisSubtreeExpression()
Determine whether the expression can be evaluated without reference to the part of the context document outside the subtree rooted at the context node.
SequenceIteratoriterate(XPathContext context)
Iterate over the value of the expression
Expressionoptimize(ExpressionVisitor visitor, ItemType contextItemType)
Perform optimisation of an expression and its subexpressions.
StringtoString()
The toString() method for an expression attempts to give a representation of the expression in an XPath-like form, but there is no guarantee that the syntax will actually be true XPath.
ExpressiontypeCheck(ExpressionVisitor visitor, ItemType contextItemType)
Type-check the expression.

Field Detail

itemType

ItemType itemType

Constructor Detail

ContextItemExpression

public ContextItemExpression()
Create the expression

Method Detail

addToPathMap

public PathMap.PathMapNodeSet addToPathMap(PathMap pathMap, PathMap.PathMapNodeSet pathMapNodeSet)
Add a representation of this expression to a PathMap. The PathMap captures a map of the nodes visited by an expression in a source tree.

The default implementation of this method assumes that an expression does no navigation other than the navigation done by evaluating its subexpressions, and that the subexpressions are evaluated in the same context as the containing expression. The method must be overridden for any expression where these assumptions do not hold. For example, implementations exist for AxisExpression, ParentExpression, and RootExpression (because they perform navigation), and for the doc(), document(), and collection() functions because they create a new navigation root. Implementations also exist for PathExpression and FilterExpression because they have subexpressions that are evaluated in a different context from the calling expression.

Parameters: pathMap the PathMap to which the expression should be added pathMapNodeSet the PathMapNodeSet to which the paths embodied in this expression should be added

Returns: the pathMapNodeSet representing the points in the source document that are both reachable by this expression, and that represent possible results of this expression. For an expression that does navigation, it represents the end of the arc in the path map that describes the navigation route. For other expressions, it is the same as the input pathMapNode.

computeCardinality

public int computeCardinality()
Get the static cardinality

computeSpecialProperties

public int computeSpecialProperties()
Determine the special properties of this expression

Returns: the value NON_CREATIVE

copy

public Expression copy()
Create a clone copy of this expression

Returns: a copy of this expression

equals

public boolean equals(Object other)
Is this expression the same as another expression?

evaluateItem

public Item evaluateItem(XPathContext context)
Evaluate the expression

explain

public void explain(ExpressionPresenter destination)
Diagnostic print of expression structure. The abstract expression tree is written to the supplied output destination.

getErrorCodeForUndefinedContext

protected String getErrorCodeForUndefinedContext()

getIntrinsicDependencies

public int getIntrinsicDependencies()

getItemType

public ItemType getItemType(TypeHierarchy th)
Determine the item type

Parameters: th the type hierarchy cache

hashCode

public int hashCode()
get HashCode for comparing two expressions

isSubtreeExpression

public boolean isSubtreeExpression()
Determine whether the expression can be evaluated without reference to the part of the context document outside the subtree rooted at the context node.

Returns: true if the expression has no dependencies on the context node, or if the only dependencies on the context node are downward selections using the self, child, descendant, attribute, and namespace axes.

iterate

public SequenceIterator iterate(XPathContext context)
Iterate over the value of the expression

optimize

public Expression optimize(ExpressionVisitor visitor, ItemType contextItemType)
Perform optimisation of an expression and its subexpressions.

This method is called after all references to functions and variables have been resolved to the declaration of the function or variable, and after all type checking has been done.

Parameters: visitor an expression visitor contextItemType the static type of "." at the point where this expression is invoked. The parameter is set to null if it is known statically that the context item will be undefined. If the type of the context item is not known statically, the argument is set to ITEM_TYPE

Returns: the original expression, rewritten if appropriate to optimize execution

Throws: XPathException if an error is discovered during this phase (typically a type error)

toString

public String toString()
The toString() method for an expression attempts to give a representation of the expression in an XPath-like form, but there is no guarantee that the syntax will actually be true XPath. In the case of XSLT instructions, the toString() method gives an abstracted view of the syntax

typeCheck

public Expression typeCheck(ExpressionVisitor visitor, ItemType contextItemType)
Type-check the expression.