org.exolab.adaptx.xpath.engine

Class AbstractPathComponent

public abstract class AbstractPathComponent extends Object implements PathComponent

The base class for paths (now basically called paths)

Version: $Revision: 4055 $ $Date: 2004-01-13 01:08:41 -0500 (Tue, 13 Jan 2004) $

Author: Keith Visco

Constructor Summary
AbstractPathComponent()
Creates a new AbstractPathComponent
Method Summary
voidaddPredicate(XPathExpression expr)
Adds the given Expression to this PathComponent's predicate List.
voidaddPredicate(PredicateExprImpl predicate)
Adds the given Expression to this PathComponent's predicate List.
abstract XPathResultevaluate(XPathContext context)
Evaluates the expression and returns the XPath result.
voidevaluatePredicates(NodeSet nodes, XPathContext context)
Evaluates the PredicateExpr of this PathComponent against the given Node.
abstract doublegetDefaultPriority()
Determines the priority of a PatternExpr as follows:
  From the 19991116 XSLT 1.0 Recommendation:
  + If the pattern has the form of a QName preceded by a
    ChildOrAttributeAxisSpecifier or has the form 
    processing-instruction(Literal) then the priority is 0.
  
abstract shortgetExprType()
PredicateExprgetPredicate()
Returns the PredicateExpr of this PathComponent
abstract XPathExpressiongetSubExpression()
Returns the sub-expression encapsulated by this PathComponent. the sub-expression will either be a PrimaryExpr if this PathComponent is a FilterExpr, or a NodeExpression if this Pathcomponent is a LocationStep.
booleanhasPredicates()
Returns true if this FilterBase has predicates expressions.
abstract booleanisFilterExpr()
Returns true if this PathComponent is a FilterExpr.
abstract booleanisLocationStep()
Returns true if this PathComponent is a LocationStep.
abstract booleanmatches(XPathNode node, XPathContext context)
Determines if the given node is matched by this MatchExpr with respect to the given context.
StringtoString()
Returns the String representation of this PathComponent

Constructor Detail

AbstractPathComponent

public AbstractPathComponent()
Creates a new AbstractPathComponent

Method Detail

addPredicate

public void addPredicate(XPathExpression expr)
Adds the given Expression to this PathComponent's predicate List.

Parameters: expr the Expr to add to the predicate list

addPredicate

public void addPredicate(PredicateExprImpl predicate)
Adds the given Expression to this PathComponent's predicate List.

Parameters: expr the Expr to add to the predicate list

evaluate

public abstract XPathResult evaluate(XPathContext context)
Evaluates the expression and returns the XPath result.

Parameters: context The XPathContext to use during evaluation.

Returns: The XPathResult (not null).

Throws: XPathException if an error occured while evaluating this expression.

evaluatePredicates

public void evaluatePredicates(NodeSet nodes, XPathContext context)
Evaluates the PredicateExpr of this PathComponent against the given Node.

Parameters: nodes the current NodeSet contextInfo provides a way to retrieve additional context information needed to evaluate some expressions

getDefaultPriority

public abstract double getDefaultPriority()
Determines the priority of a PatternExpr as follows:
  From the 19991116 XSLT 1.0 Recommendation:
  + If the pattern has the form of a QName preceded by a
    ChildOrAttributeAxisSpecifier or has the form 
    processing-instruction(Literal) then the priority is 0.
  + If the pattern has the form NCName:* preceded by a 
    ChildOrAttributeAxisSpecifier, then the priority is -0.25
  + Otherwise if the pattern consists of just a NodeTest 
    preceded by a ChildOrAttributeAxisSpecifier then the
    priority is -0.5
  + Otherwise the priority is 0.5
 

Returns: the priority for this PatternExpr

getExprType

public abstract short getExprType()

getPredicate

public PredicateExpr getPredicate()
Returns the PredicateExpr of this PathComponent

Returns: the PredicateExpr of this PathComponent

getSubExpression

public abstract XPathExpression getSubExpression()
Returns the sub-expression encapsulated by this PathComponent. the sub-expression will either be a PrimaryExpr if this PathComponent is a FilterExpr, or a NodeExpression if this Pathcomponent is a LocationStep. This method may return null if no such sub-expression exists for the PathComponent.

Returns: the sub-expression encapsulated by this PathComponent.

hasPredicates

public boolean hasPredicates()
Returns true if this FilterBase has predicates expressions.

Returns: true if this FilterBase has predicates expressions.

isFilterExpr

public abstract boolean isFilterExpr()
Returns true if this PathComponent is a FilterExpr. Note that if this method returns true, then a call to #isLocationStep must return false.

Returns: true if this PathComponent is a FilterExpr

See Also: isLocationStep

isLocationStep

public abstract boolean isLocationStep()
Returns true if this PathComponent is a LocationStep. Note that if this method returns true, then a call to #isFilterExpr must return false.

Returns: true if this PathComponent is a LocationStep

See Also: isFilterExpr

matches

public abstract boolean matches(XPathNode node, XPathContext context)
Determines if the given node is matched by this MatchExpr with respect to the given context.

Parameters: node the node to determine a match for context the XPathContext

Returns: true if the given node is matched by this MatchExpr

Throws: XPathException when an error occurs during evaluation

toString

public String toString()
Returns the String representation of this PathComponent

Returns: the String representation of this PathComponent