net.sf.saxon.pattern.EmptySequenceTest Maven / Gradle / Ivy
package net.sf.saxon.pattern;
import net.sf.saxon.Configuration;
import net.sf.saxon.om.Item;
import net.sf.saxon.om.NodeInfo;
import net.sf.saxon.tinytree.TinyTree;
import net.sf.saxon.type.ItemType;
import net.sf.saxon.type.Type;
/**
* NodeTest is an interface that enables a test of whether a node has a particular
* name and type. An EmptySequenceTest matches no nodes or atomic values: it corresponds to the
* type empty-sequence().
*
* @author Michael H. Kay
*/
public final class EmptySequenceTest extends NodeTest {
private static EmptySequenceTest THE_INSTANCE = new EmptySequenceTest();
/**
* Get a NoNodeTest instance
*/
public static EmptySequenceTest getInstance() {
return THE_INSTANCE;
}
/**
* Private constructor
*/
private EmptySequenceTest() {}
public final int getPrimitiveType() {
return Type.EMPTY;
}
/**
* Get the primitive item type corresponding to this item type. For item(),
* this is Type.ITEM. For node(), it is Type.NODE. For specific node kinds,
* it is the value representing the node kind, for example Type.ELEMENT.
* For anyAtomicValue it is Type.ATOMIC_VALUE. For numeric it is Type.NUMBER.
* For other atomic types it is the primitive type as defined in XML Schema,
* except that INTEGER is considered to be a primitive type.
*/
public ItemType getPrimitiveItemType() {
return this;
}
/**
* Test whether a given item conforms to this type
* @param item The item to be tested
* @param allowURIPromotion
* @param config
* @return true if the item is an instance of this type; false otherwise
*/
public boolean matchesItem(Item item, boolean allowURIPromotion, Configuration config) {
return false;
}
/**
* Test whether this node test is satisfied by a given node
* @param nodeType The type of node to be matched
* @param fingerprint identifies the expanded name of the node to be matched
*/
public boolean matches(int nodeType, int fingerprint, int annotation) {
return false;
}
/**
* Test whether this node test is satisfied by a given node on a TinyTree. The node
* must be a document, element, text, comment, or processing instruction node.
* This method is provided
* so that when navigating a TinyTree a node can be rejected without
* actually instantiating a NodeInfo object.
*
* @param tree the TinyTree containing the node
* @param nodeNr the number of the node within the TinyTree
* @return true if the node matches the NodeTest, otherwise false
*/
public boolean matches(TinyTree tree, int nodeNr) {
return false;
}
/**
* Test whether this node test is satisfied by a given node. This alternative
* method is used in the case of nodes where calculating the fingerprint is expensive,
* for example DOM or JDOM nodes.
* @param node the node to be matched
*/
public boolean matches(NodeInfo node) {
return false;
}
/**
* Determine the default priority of this node test when used on its own as a Pattern
*/
public final double getDefaultPriority() {
return -0.5;
}
/**
* Get a mask indicating which kinds of nodes this NodeTest can match. This is a combination
* of bits: 1<
© 2015 - 2025 Weber Informatics LLC | Privacy Policy