com.saxonica.schema
Class PathSelection

java.lang.Object
  extended bycom.saxonica.schema.PathSelection
All Implemented Interfaces:
Selection, java.io.Serializable

public class PathSelection
extends java.lang.Object
implements Selection, java.io.Serializable

A PathSelection is a Selection that applies a NodeTest to each element between the context element and the node being tested, and returns true if they all match. This class is used internally in the validation of instance documents against uniqueness and identity constraints; it is not intended for use by user applications.

See Also:
Serialized Form

Constructor Summary
PathSelection(NodeTest[] tests, boolean anchored, NodeTest attributeTest)
          Create a PathSelection - a limited form of XPath expression that can be evaluated on-the-fly
 
Method Summary
 boolean canMatchAttributes()
          Determine whether the selection can match attribute nodes
 boolean canMatchElementContent()
          Determin whether the selection can match element content
 NodeTest getAttributeTest()
           
 ItemType getItemType()
          Determine the item type of the nodes matched by the last NodeTest
 boolean matchesAttribute(int fingerprint)
          Determine whether a given attribute matches the Selection
 boolean matchesElement(int[] stack, int length, int contextPosition)
          Determine whether the selector matches a given element.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PathSelection

public PathSelection(NodeTest[] tests,
                     boolean anchored,
                     NodeTest attributeTest)
Create a PathSelection - a limited form of XPath expression that can be evaluated on-the-fly

Parameters:
tests - an array of node tests, representing a sequence of axis steps; these are all tests on the child axis, except possibly the last, which is a test on the attribute axis if attributeTest is true
anchored - if true, the first test applies to children of the root node; if false, it applies to descendants of the root node
attributeTest - if true, the last test applies to attributes rather than elements.
Method Detail

matchesElement

public boolean matchesElement(int[] stack,
                              int length,
                              int contextPosition)
Determine whether the selector matches a given element. The element is identified by an array of integers representing the fingerprints of the names of this element and each of its ancestors, in document order (i.e., root element first, matched element last).

Specified by:
matchesElement in interface Selection
Parameters:
stack - the array of name fingerprints
length - the effective length of the array; any items beyond this position are ignored
contextPosition - the position in this array of the context element for the selection.
Returns:
true if the element matches

getAttributeTest

public NodeTest getAttributeTest()

matchesAttribute

public boolean matchesAttribute(int fingerprint)
Determine whether a given attribute matches the Selection

Specified by:
matchesAttribute in interface Selection
Returns:
true if it matches, false if it does not match

canMatchAttributes

public boolean canMatchAttributes()
Determine whether the selection can match attribute nodes

Specified by:
canMatchAttributes in interface Selection

canMatchElementContent

public boolean canMatchElementContent()
Determin whether the selection can match element content

Specified by:
canMatchElementContent in interface Selection

getItemType

public ItemType getItemType()
Determine the item type of the nodes matched by the last NodeTest