public abstract class NodeTest extends java.lang.Object implements ItemType.WithSequenceTypeCache
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.iterateAxis(byte, NodeTest),
it is possible to write a user-defined subclass of NodeTest that implements
a single method, matches(int, NodeName, SchemaType)
ItemType.WithSequenceTypeCache| Constructor and Description |
|---|
NodeTest() |
| Modifier and Type | Method and Description |
|---|---|
NodeTest |
copy()
Copy a NodeTest.
|
java.util.Optional<java.lang.String> |
explainMismatch(Item item,
TypeHierarchy th)
Get extra diagnostic information about why a supplied item does not conform to this
item type, if available.
|
java.lang.String |
generateJavaScriptItemTypeAcceptor(java.lang.String errorCode,
int targetVersion)
Generate Javascript code to convert a supplied Javascript value to this item type,
if conversion is possible, or throw an error otherwise.
|
java.lang.String |
getAlphaCode()
Get an alphabetic code representing the type, or at any rate, the nearest built-in type
from which this type is derived.
|
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 to use if this node-test appears as a match pattern
for a template with no explicit priority attribute.
|
int |
getFingerprint()
Get the name of the nodes matched by this nodetest, if it matches a specific name.
|
Genre |
getGenre()
Determine the Genre (top-level classification) of this type
|
java.util.function.IntPredicate |
getMatcher(NodeVectorTree tree)
Get a matching function that can be used to test whether numbered nodes in a TinyTree
or DominoTree satisfy the node test.
|
StructuredQName |
getMatchingNodeName()
Get the name of the nodes matched by this nodetest, if it matches a specific name.
|
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.
|
java.util.Optional<IntSet> |
getRequiredNodeNames()
Get the set of node names allowed by this NodeTest.
|
boolean |
isAtomicType()
Determine whether this item type is an atomic type
|
boolean |
isAtomizable(TypeHierarchy th)
Ask whether values of this type are atomizable
|
boolean |
isNillable()
Determine whether the content type (if present) is nillable
|
boolean |
isPlainType()
Determine whether this item type is atomic (that is, whether it can ONLY match
atomic values)
|
abstract boolean |
matches(int nodeKind,
NodeName name,
SchemaType annotation)
Test whether this node test is satisfied by a given node.
|
boolean |
matches(Item item,
TypeHierarchy th)
Test whether a given item conforms to this type
|
boolean |
matchesNode(NodeInfo node)
Test whether this node test is satisfied by a given node.
|
SequenceType |
one()
Get a sequence type representing exactly one instance of this atomic type
|
SequenceType |
oneOrMore()
Get a sequence type representing one or more instances of this atomic type
|
java.lang.String |
toShortString() |
SequenceType |
zeroOrMore()
Get a sequence type representing one or more instances of this atomic type
|
SequenceType |
zeroOrOne()
Get a sequence type representing zero or one instances of this atomic type
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgenerateJavaScriptItemTypeTest, getUType, isTrueItemType, toExportString, toStringpublic Genre getGenre()
getGenre in interface ItemTypeGenre.NODEpublic abstract double getDefaultPriority()
public boolean matches(Item item, TypeHierarchy th)
ItemTypepublic ItemType getPrimitiveItemType()
getPrimitiveItemType in interface ItemTypepublic int getPrimitiveType()
getPrimitiveType in interface ItemTypepublic int getFingerprint()
public StructuredQName getMatchingNodeName()
public java.lang.String getAlphaCode()
getAlphaCode in interface ItemTypepublic boolean isAtomicType()
isAtomicType in interface ItemTypepublic boolean isPlainType()
isPlainType in interface ItemTypepublic AtomicType getAtomizedItemType()
getAtomizedItemType in interface ItemTypepublic boolean isAtomizable(TypeHierarchy th)
isAtomizable in interface ItemTypeth - The type hierarchy cachepublic java.util.function.IntPredicate getMatcher(NodeVectorTree tree)
matchesNode(tree.getNode(nodeNr)), but it may well be faster).tree - the tree against which the returned function will operatepublic abstract boolean matches(int nodeKind,
NodeName name,
SchemaType annotation)
nodeKind - The kind of node to be matchedname - identifies the expanded name of the node to be matched.
The value should be null for a node with no name.annotation - The actual content type of the node. Null means no constraint.public boolean matchesNode(NodeInfo node)
matches(int, NodeName, SchemaType)node - the node to be matchedpublic SchemaType getContentType()
public java.util.Optional<IntSet> getRequiredNodeNames()
public boolean isNillable()
public NodeTest copy()
public java.lang.String generateJavaScriptItemTypeAcceptor(java.lang.String errorCode,
int targetVersion)
throws XPathException
generateJavaScriptItemTypeAcceptor in interface ItemTypeerrorCode - the error to be thrown if conversion is not possibletargetVersion - the version of Saxon-JS being targetedXPathExceptionpublic SequenceType one()
one in interface ItemType.WithSequenceTypeCachepublic SequenceType zeroOrOne()
zeroOrOne in interface ItemType.WithSequenceTypeCachepublic SequenceType oneOrMore()
oneOrMore in interface ItemType.WithSequenceTypeCachepublic SequenceType zeroOrMore()
zeroOrMore in interface ItemType.WithSequenceTypeCachepublic java.util.Optional<java.lang.String> explainMismatch(Item item, TypeHierarchy th)
explainMismatch in interface ItemTypeitem - the item that doesn't match this typeth - the type hierarchy cachepublic java.lang.String toShortString()
Copyright (c) 2004-2020 Saxonica Limited. All rights reserved.