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, toString
public GeneralPositionalPattern(NodeTest base, Expression positionExpr)
public Expression getPositionExpr()
public NodeTest getNodeTest()
public boolean isMotionless(boolean allowExtensions)
isMotionless
in class Pattern
allowExtensions
- true if Saxon streamability extensions are allowed in the analysispublic Pattern simplify(ExpressionVisitor visitor) throws XPathException
simplify
in class Pattern
visitor
- an expression visitorXPathException
public Pattern analyze(ExpressionVisitor visitor, ExpressionVisitor.ContextItemType contextItemType) throws XPathException
analyze
in class Pattern
visitor
- an expression visitorcontextItemType
- the type of the context item at the point where the pattern appearsXPathException
public int getDependencies()
getDependencies
in class Pattern
public Iterator<Expression> iterateSubExpressions()
iterateSubExpressions
in class Pattern
public boolean replaceSubExpression(Expression original, Expression replacement)
replaceSubExpression
in class Pattern
original
- the original subexpressionreplacement
- the replacement subexpressionpublic int allocateSlots(SlotManager slotManager, int nextFree)
allocateSlots
in class Pattern
slotManager
- 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 Pattern
offer
- 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 Pattern
item
- 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 Pattern
node
- 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 Pattern
public int getFingerprint()
getFingerprint
in class Pattern
public ItemType getItemType()
getItemType
in class Pattern
public boolean equals(Object other)
Copyright (c) 2004-2013 Saxonica Limited. All rights reserved.