public class GeneralPositionalPattern extends Pattern
FleetingParentNode
This class handles cases where the predicate P is arbitrarily complex. Simple comparisons of position() against
an integer value are handled by the class SimplePositionalPattern.| Constructor and Description |
|---|
GeneralPositionalPattern(NodeTest base,
Expression positionExpr)
Create a PositionalChildPattern
|
| Modifier and Type | Method and Description |
|---|---|
int |
allocateSlots(SlotManager slotManager,
int nextFree)
Allocate slots to any variables used within the pattern
|
Pattern |
analyze(ExpressionVisitor visitor,
ExpressionVisitor.ContextItemType contextItemType)
Type-check the pattern, performing any type-dependent optimizations.
|
boolean |
equals(Object other)
Determine whether this pattern is the same as another pattern
|
int |
getDependencies()
Get the dependencies of the pattern.
|
int |
getFingerprint()
Determine the fingerprint of nodes to which this pattern applies.
|
ItemType |
getItemType()
Get an ItemType that all the nodes matching this pattern must satisfy
|
int |
getNodeKind()
Determine the types of nodes to which this pattern applies.
|
NodeTest |
getNodeTest()
Get the base pattern
|
Expression |
getPositionExpr()
Get the filter assocated with the pattern
|
int |
hashCode()
hashcode supporting equals()
|
boolean |
isMotionless(boolean allowExtensions)
Test whether a pattern is motionless, that is, whether it can be evaluated against a node
without repositioning the input stream.
|
Iterator<Expression> |
iterateSubExpressions()
Iterate over the subexpressions within this pattern
|
boolean |
matches(Item item,
XPathContext context)
Determine whether the pattern matches a given item.
|
boolean |
matchesBeneathAnchor(NodeInfo node,
NodeInfo anchor,
XPathContext context)
Determine whether this pattern matches a given Node within the subtree rooted at a given
anchor node.
|
void |
promote(PromotionOffer offer,
Expression parent)
Offer promotion for subexpressions within this pattern.
|
boolean |
replaceSubExpression(Expression original,
Expression replacement)
Replace one subexpression by a replacement subexpression
|
Pattern |
simplify(ExpressionVisitor visitor)
Simplify the pattern: perform any context-independent optimisations
|
bindCurrent, getColumnNumber, getContainerGranularity, getDefaultPriority, getExecutable, getHostLanguage, getLineNumber, getLocationProvider, getPublicId, getSystemId, make, replaceCurrent, selectNodes, setExecutable, setLineNumber, setOriginalText, setSystemId, toStringpublic GeneralPositionalPattern(NodeTest base, Expression positionExpr)
public Expression getPositionExpr()
public NodeTest getNodeTest()
public boolean isMotionless(boolean allowExtensions)
isMotionless in class PatternallowExtensions - true if Saxon streamability extensions are allowed in the analysispublic Pattern simplify(ExpressionVisitor visitor) throws XPathException
simplify in class Patternvisitor - an expression visitorXPathExceptionpublic Pattern analyze(ExpressionVisitor visitor, ExpressionVisitor.ContextItemType contextItemType) throws XPathException
analyze in class Patternvisitor - an expression visitorcontextItemType - the type of the context item at the point where the pattern appearsXPathExceptionpublic int getDependencies()
getDependencies in class Patternpublic Iterator<Expression> iterateSubExpressions()
iterateSubExpressions in class Patternpublic boolean replaceSubExpression(Expression original, Expression replacement)
replaceSubExpression in class Patternoriginal - the original subexpressionreplacement - the replacement subexpressionpublic int allocateSlots(SlotManager slotManager, int nextFree)
allocateSlots in class PatternslotManager - nextFree - the next slot that is free to be allocated @return the next slot that is free to be allocatedpublic void promote(PromotionOffer offer, Expression parent) throws XPathException
Unlike the corresponding method on Expression, this method does not return anything:
it can make internal changes to the pattern, but cannot return a different pattern. Only certain
kinds of promotion are applicable within a pattern: specifically, promotions affecting local
variable references within the pattern.
promote in class Patternoffer - details of the offer, for example the offer to move
expressions that don't depend on the context to an outer level in
the containing expressionparent - XPathException - if any error is detectedpublic boolean matches(Item item, XPathContext context) throws XPathException
matches in class Patternitem - the item to be testedcontext - The dynamic context. Only relevant if the pattern
uses variables, or contains calls on functions such as document() or key().XPathException - if an error occurs while matching the pattern (the caller will usually
treat this the same as a false result)public boolean matchesBeneathAnchor(NodeInfo node, NodeInfo anchor, XPathContext context) throws XPathException
matchesBeneathAnchor in class Patternnode - The NodeInfo representing the Element or other node to be tested against the Patternanchor - The anchor node, which must match any AnchorPattern subpatterncontext - The dynamic context. Only relevant if the pattern
uses variables, or contains calls on functions such as document() or key().XPathException - if an error occurs while matching the pattern (the caller will usually
treat this the same as a false result)public int getNodeKind()
getNodeKind in class Patternpublic int getFingerprint()
getFingerprint in class Patternpublic ItemType getItemType()
getItemType in class Patternpublic boolean equals(Object other)
Copyright (c) 2004-2013 Saxonica Limited. All rights reserved.