public final class LocationPathPattern extends Pattern
| Modifier and Type | Field and Description |
|---|---|
protected Expression |
equivalentExpr |
protected Expression[] |
filters |
protected boolean |
firstElementPattern |
protected boolean |
lastElementPattern |
NodeTest |
nodeTest |
protected boolean |
specialFilter |
| Constructor and Description |
|---|
LocationPathPattern()
Create a LocationPathPattern
|
| Modifier and Type | Method and Description |
|---|---|
void |
addFilter(Expression filter)
Add a filter to the pattern (while under construction)
|
int |
allocateSlots(StaticContext env,
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.
|
Expression[] |
getFilters()
Get the filters assocated with the last step in the pattern
|
int |
getFingerprint()
Determine the fingerprint of nodes to which this pattern applies.
|
ItemType |
getItemType()
Get a NodeTest that all the nodes matching this pattern must satisfy
|
int |
getNodeKind()
Determine the types of nodes to which this pattern applies.
|
Pattern |
getUpperPattern()
Get the pattern applying to the parent node, if there is one
|
byte |
getUpwardsAxis()
Get the upwards axis, that is, the axis by which the upper pattern is reached.
|
int |
hashCode()
hashcode supporting equals()
|
protected boolean |
internalMatches(NodeInfo node,
NodeInfo anchor,
XPathContext context)
Test whether the pattern matches, but without changing the current() node
|
boolean |
isPositional(TypeHierarchy th)
Determine if the pattern uses positional filters
|
Iterator |
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
|
void |
resolveCurrent(LetExpression let,
PromotionOffer offer,
boolean topLevel)
If the pattern contains any calls on current(), this method is called to modify such calls
to become variable references to a variable declared in a specially-allocated local variable
|
boolean |
selectsOutwards()
Test whether any predicate within the pattern contains a prohibited selection, that is, use
of an axis such as child, descendant, following-sibling
|
void |
setExecutable(Executable executable)
Set the executable containing this pattern
|
void |
setLineNumber(int lineNumber)
Set the line number where the pattern occurred
|
void |
setNodeTest(NodeTest test)
Set the NodeTest
|
void |
setSystemId(String systemId)
Set the system ID where the pattern occurred
|
void |
setUpperPattern(byte axis,
Pattern upper)
Set the superior pattern (matching a parent or ancestor node
|
void |
setVariableBindingExpression(Expression exp)
Set an expression used to bind the variable that represents the value of the current() function
|
Pattern |
simplify(ExpressionVisitor visitor)
Simplify the pattern: perform any context-independent optimisations
|
getColumnNumber, getContainerGranularity, getDefaultPriority, getExecutable, getHostLanguage, getLineNumber, getLocationProvider, getPublicId, getSystemId, make, selectNodes, setOriginalText, toStringpublic NodeTest nodeTest
protected Expression[] filters
protected Expression equivalentExpr
protected boolean firstElementPattern
protected boolean lastElementPattern
protected boolean specialFilter
public void setNodeTest(NodeTest test)
test - the NodeTestpublic void setUpperPattern(byte axis,
Pattern upper)
axis - the axis (parent or ancestor) connecting to the upper patternupper - the pattern that a parent or ancestor must matchpublic void addFilter(Expression filter)
filter - The predicate (a boolean expression or numeric expression) to be addedpublic void setLineNumber(int lineNumber)
PatternsetLineNumber in class PatternlineNumber - the line number of the pattern in the source modulepublic void setSystemId(String systemId)
PatternsetSystemId in class PatternsystemId - the URI of the module containing the patternpublic void setExecutable(Executable executable)
setExecutable in class Patternexecutable - the executablepublic void setVariableBindingExpression(Expression exp)
setVariableBindingExpression in class Patternexp - the expression that binds the variablepublic Expression[] getFilters()
public Pattern getUpperPattern()
public byte getUpwardsAxis()
public boolean selectsOutwards()
public Pattern simplify(ExpressionVisitor visitor) throws XPathException
simplify in class Patternvisitor - an expression visitorXPathException - if a static error is discoveredpublic 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 appearsXPathException - if a static error is discoveredpublic int getDependencies()
getDependencies in class Patternpublic Iterator iterateSubExpressions()
iterateSubExpressions in class Patternpublic boolean replaceSubExpression(Expression original, Expression replacement)
replaceSubExpression in class Patternoriginal - the original subexpressionreplacement - the replacement subexpressionpublic int allocateSlots(StaticContext env, SlotManager slotManager, int nextFree)
allocateSlots in class Patternenv - the static context in the XSLT stylesheetslotManager - 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 a dynamic error occurs during pattern matchingpublic 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 a dynamic error occurs during pattern matchingprotected boolean internalMatches(NodeInfo node, NodeInfo anchor, XPathContext context) throws XPathException
internalMatches 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(). @return true if the node matches the Pattern, false otherwiseXPathException - if a dynamic error occurs during pattern matchingpublic int getNodeKind()
getNodeKind in class Patternpublic int getFingerprint()
getFingerprint in class Patternpublic ItemType getItemType()
getItemType in class Patternpublic boolean isPositional(TypeHierarchy th)
th - the type hierarchy cachepublic void resolveCurrent(LetExpression let, PromotionOffer offer, boolean topLevel) throws XPathException
resolveCurrent in class Patternlet - the expression that assigns the local variable. This returns a dummy result, and is executed
just before evaluating the pattern, to get the value of the context item into the variable.offer - A PromotionOffer used to process the expressions and change the call on current() into
a variable referencetopLevel - XPathExceptionpublic boolean equals(Object other)