Class AnchorPattern

java.lang.Object
net.sf.saxon.pattern.Pattern
net.sf.saxon.pattern.AnchorPattern
All Implemented Interfaces:
Serializable, SourceLocator, Container, PatternFinder

public class AnchorPattern extends Pattern
This is a special pattern that matches the "anchor node"; it is not used for XSLT patterns, but for the selectors that arise when evaluating XPath expressions in streaming mode; the anchor node is the context node for the streamed XPath evaluation.
See Also:
  • Constructor Details

    • AnchorPattern

      public AnchorPattern()
  • Method Details

    • analyze

      public Pattern analyze(ExpressionVisitor visitor, ExpressionVisitor.ContextItemType contextItemType) throws XPathException
      Type-check the pattern.
      Overrides:
      analyze in class Pattern
      Parameters:
      visitor - the expression visitor
      contextItemType - the type of the context item at the point where the pattern is defined. Set to null if it is known that the context item is undefined.
      Returns:
      the optimised Pattern
      Throws:
      XPathException - if a static error is discovered
    • matchesBeneathAnchor

      public boolean matchesBeneathAnchor(NodeInfo node, NodeInfo anchor, XPathContext context) throws XPathException
      Determine whether this pattern matches a given Node within the subtree rooted at a given anchor node. This method is used when the pattern is used for streaming.
      Overrides:
      matchesBeneathAnchor in class Pattern
      Parameters:
      node - The NodeInfo representing the Element or other node to be tested against the Pattern
      anchor - The anchor node, which must match any AnchorPattern subpattern
      context - The dynamic context. Only relevant if the pattern uses variables, or contains calls on functions such as document() or key().
      Returns:
      true if the node matches the Pattern, false otherwise
      Throws:
      XPathException - if a dynamic error occurs during pattern matching
    • matches

      public boolean matches(Item item, XPathContext context) throws XPathException
      Determine whether this Pattern matches the given Node. This is the main external interface for matching patterns: it sets current() to the node being tested
      Specified by:
      matches in class Pattern
      Parameters:
      item - The NodeInfo representing the Element or other node to be tested against the Pattern
      context - The dynamic context. Only relevant if the pattern uses variables, or contains calls on functions such as document() or key().
      Returns:
      true if the node matches the Pattern, false otherwise
      Throws:
      XPathException - if a dynamic error occurs during pattern matching
    • internalMatches

      protected boolean internalMatches(NodeInfo node, NodeInfo anchor, XPathContext context) throws XPathException
      Determine whether this Pattern matches the given Node. This is an internal interface used for matching sub-patterns; it does not alter the value of current(). The default implementation is identical to matches().
      Overrides:
      internalMatches in class Pattern
      Parameters:
      node - The NodeInfo representing the Element or other node to be tested against the Pattern
      anchor -
      context - The dynamic context. Only relevant if the pattern uses variables, or contains calls on functions such as document() or key().
      Returns:
      true if the node matches the Pattern, false otherwise
      Throws:
      XPathException - if a dynamic error occurs during pattern matching
    • getItemType

      public ItemType getItemType()
      Get a NodeTest that all the nodes matching this pattern must satisfy
      Specified by:
      getItemType in class Pattern
      Returns:
      a NodeTest, as specific as possible, which all the matching nodes satisfy
    • toString

      public String toString()
      Description copied from class: Pattern
      Get the original pattern text
      Overrides:
      toString in class Pattern