org.exolab.adaptx.xpath.expressions

Class PathExpr

Implemented Interfaces:
MatchExpression, XPathExpression

public abstract class PathExpr
extends java.lang.Object
implements XPathExpression, MatchExpression

An abstract class representing an XPath Location Path expression.

Version:
$Revision: 1.1 $ $Date: 2003/05/13 07:55:04 $

Author:
Keith Visco

Fields inherited from interface org.exolab.adaptx.xpath.XPathExpression

BOOLEAN, ERROR, FILTER_EXPR, LOCATION_PATH, NODE_TEST, NUMBER, PATH_EXPR, PRIMARY, STEP, STRING, UNION_EXPR

Method Summary

XPathResult
evaluate(XPathContext context)
Evaluates the expression and returns the XPath result.
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.
short
getExprType()
Returns the XPathExpression type
PathComponent
getPathComponent()
Returns the PathComponent for the this PathExpr, either a FilterExpr or LocationStep.
PathExpr
getSubPath()
boolean
isAbsolute()
Returns true if this PathExpr is an absolute expression, otherwise false (ie.
boolean
matches(XPathNode node, XPathContext context)
Determines if the given node is matched by this MatchExpr with respect to the given context.

Method Details

evaluate

public XPathResult evaluate(XPathContext context)
            throws XPathException
Evaluates the expression and returns the XPath result.
Specified by:
evaluate in interface XPathExpression

Parameters:
context - The XPathContext to use during evaluation.

Returns:
The XPathResult (not null).

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


getDefaultPriority

public 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 final short getExprType()
Returns the XPathExpression type
Specified by:
getExprType in interface XPathExpression

Returns:
the XPathExpression type

See Also:
XPathExpression


getPathComponent

public PathComponent getPathComponent()
Returns the PathComponent for the this PathExpr, either a FilterExpr or LocationStep.

Returns:
the PathComponent for this PathExpr


getSubPath

public PathExpr getSubPath()


isAbsolute

public boolean isAbsolute()
Returns true if this PathExpr is an absolute expression, otherwise false (ie. it's a relative expression).

Returns:
true if this PathExpr is an absolute expression.


matches

public boolean matches(XPathNode node,
                       XPathContext context)
            throws XPathException
Determines if the given node is matched by this MatchExpr with respect to the given context.
Specified by:
matches in interface MatchExpression

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