net.sf.saxon.expr

Class FilterExpression

public final class FilterExpression extends ComputedExpression

A FilterExpression contains a base expression and a filter predicate, which may be an integer expression (positional filter), or a boolean expression (qualifier)
Constructor Summary
FilterExpression(Expression start, Expression filter, StaticContext env)
Constructor
Method Summary
intcomputeCardinality()
Get the static cardinality of this expression
intcomputeDependencies()
Determine which aspects of the context the expression depends on.
intcomputeSpecialProperties()
Get the static properties of this expression (other than its type).
voiddisplay(int level, NamePool pool, PrintStream out)
Diagnostic print of expression structure
booleanequals(Object other)
Is this expression the same as another expression?
ExpressiongetBaseExpression()
Get the underlying expression
ExpressiongetFilter()
Get the filter expression
ItemTypegetItemType(TypeHierarchy th)
Get the data type of the items returned
inthashCode()
get HashCode for comparing two expressions
booleanisIndexable()
booleanisPositional(TypeHierarchy th)
Determine if the filter is positional
SequenceIteratoriterate(XPathContext context)
Iterate over the results, returning them in the correct order
IteratoriterateSubExpressions()
Get the immediate subexpressions of this expression
Expressionoptimize(Optimizer opt, StaticContext env, ItemType contextItemType)
Perform optimisation of an expression and its subexpressions.
Expressionpromote(PromotionOffer offer)
Promote this expression if possible
Expressionsimplify(StaticContext env)
Simplify an expression
ExpressiontypeCheck(StaticContext env, ItemType contextItemType)
Type-check the expression

Constructor Detail

FilterExpression

public FilterExpression(Expression start, Expression filter, StaticContext env)
Constructor

Parameters: start A node-set expression denoting the absolute or relative set of nodes from which the navigation path should start. filter An expression defining the filter predicate

Method Detail

computeCardinality

public int computeCardinality()
Get the static cardinality of this expression

Returns: the cardinality. The method attempts to determine the case where the filter predicate is guaranteed to select at most one item from the sequence being filtered

computeDependencies

public int computeDependencies()
Determine which aspects of the context the expression depends on. The result is a bitwise-or'ed value composed from constants such as XPathContext.VARIABLES and XPathContext.CURRENT_NODE

Returns: the dependencies

computeSpecialProperties

public int computeSpecialProperties()
Get the static properties of this expression (other than its type). The result is bit-significant. These properties are used for optimizations. In general, if property bit is set, it is true, but if it is unset, the value is unknown.

Returns: the static properties of the expression, as a bit-significant value

display

public void display(int level, NamePool pool, PrintStream out)
Diagnostic print of expression structure

Parameters: level the indentation level out

equals

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

Parameters: other the expression to be compared with this one

Returns: true if the two expressions are statically equivalent

getBaseExpression

public Expression getBaseExpression()
Get the underlying expression

Returns: the expression being filtered

getFilter

public Expression getFilter()
Get the filter expression

Returns: the expression acting as the filter predicate

getItemType

public ItemType getItemType(TypeHierarchy th)
Get the data type of the items returned

Parameters: th

Returns: an integer representing the data type

hashCode

public int hashCode()
get HashCode for comparing two expressions

Returns: the hash code

isIndexable

public boolean isIndexable()

isPositional

public boolean isPositional(TypeHierarchy th)
Determine if the filter is positional

Parameters: th the Type Hierarchy (for cached access to type information)

Returns: true if the value of the filter depends on the position of the item against which it is evaluated

iterate

public SequenceIterator iterate(XPathContext context)
Iterate over the results, returning them in the correct order

Parameters: context the dynamic context for the evaluation

Returns: an iterator over the expression results

Throws: XPathException if any dynamic error occurs

iterateSubExpressions

public Iterator iterateSubExpressions()
Get the immediate subexpressions of this expression

Returns: the subexpressions, as an array

optimize

public Expression optimize(Optimizer opt, StaticContext env, 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: opt the optimizer in use. This provides access to supporting functions; it also allows different optimization strategies to be used in different circumstances. env the static context of the expression 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: net.sf.saxon.trans.StaticError if an error is discovered during this phase (typically a type error)

promote

public Expression promote(PromotionOffer offer)
Promote this expression if possible

Parameters: offer details of the promotion that is possible

Returns: the promoted expression (or the original expression, unchanged)

simplify

public Expression simplify(StaticContext env)
Simplify an expression

Returns: the simplified expression

Throws: XPathException if any failure occurs

typeCheck

public Expression typeCheck(StaticContext env, ItemType contextItemType)
Type-check the expression

Parameters: env the static context

Returns: the expression after type-checking (potentially modified to add run-time checks and/or conversions)