net.sf.saxon.pattern
public abstract class NodeTest extends Object implements ItemType, Serializable
As well as being used to support XSLT pattern matching, NodeTests act as predicates in axis steps, and also act as item types for type matching.
For use in user-written application calling NodeInfo,
it is possible to write a user-defined subclass of NodeTest
that implements
a single method, NodeTest
Method Summary | |
---|---|
AtomicType | getAtomizedItemType()
Get the item type of the atomic values that will be produced when an item
of this type is atomized (assuming that atomization succeeds) |
SchemaType | getContentType()
Get the content type allowed by this NodeTest (that is, the type annotation of the matched nodes).
|
abstract double | getDefaultPriority()
Determine the default priority of this node test when used on its own as a Pattern |
int | getFingerprint()
Get the name of the nodes matched by this nodetest, if it matches a specific name.
|
int | getNodeKindMask()
Get a mask indicating which kinds of nodes this NodeTest can match. |
ItemType | getPrimitiveItemType()
Get the primitive item type corresponding to this item type. |
int | getPrimitiveType()
Get the basic kind of object that this ItemType matches: for a NodeTest, this is the kind of node,
or Type.Node if it matches different kinds of nodes. |
IntHashSet | getRequiredNodeNames()
Get the set of node names allowed by this NodeTest. |
ItemType | getSuperType(TypeHierarchy th)
Get the type from which this item type is derived by restriction. |
boolean | isAtomicType()
Determine whether this item type is atomic (that is, whether it can ONLY match
atomic values)
|
boolean | isAtomizable()
Ask whether values of this type are atomizable |
boolean | isNillable()
Determine whether the content type (if present) is nillable |
boolean | matches(TinyTree tree, int nodeNr)
Test whether this node test is satisfied by a given node on a TinyTree. |
abstract boolean | matches(int nodeKind, int fingerprint, int annotation)
Test whether this node test is satisfied by a given node. |
boolean | matches(NodeInfo node)
Test whether this node test is satisfied by a given node. |
boolean | matchesItem(Item item, boolean allowURIPromotion, Configuration config)
Test whether a given item conforms to this type. |
String | toString(NamePool pool)
Display the type descriptor for diagnostics |
Returns: the node kind matched by this node test
In fact the concept of "supertype" is not really well-defined, because the types form a lattice rather than a hierarchy. The only real requirement on this function is that it returns a type that strictly subsumes this type, ideally as narrowly as possible.
Parameters: th the type hierarchy cache
Returns: the supertype, or null if this type is item()
Returns: false: this is not ANY_ATOMIC_TYPE or a subtype thereof
Returns: true unless it is known that these items will be elements with element-only content, in which case return false
Returns: true if the content test (when present) can match nodes that are nilled
Parameters: tree the TinyTree containing the node nodeNr the number of the node within the TinyTree
Returns: true if the node matches the NodeTest, otherwise false
Parameters: nodeKind The kind of node to be matched fingerprint identifies the expanded name of the node to be matched. The value should be -1 for a node with no name. annotation The actual content type of the node
Parameters: node the node to be matched
Parameters: item The item to be tested allowURIPromotion config
Returns: true if the item is an instance of this type; false otherwise