Class NameTest

  • All Implemented Interfaces:
    java.io.Serializable, ItemType

    public class NameTest
    extends NodeTest
    NodeTest is an interface that enables a test of whether a node has a particular name and type. A NameTest matches the node kind and the namespace URI and the local name.
    Author:
    Michael H. Kay
    See Also:
    Serialized Form
    • Constructor Summary

      Constructors 
      Constructor Description
      NameTest​(int nodeKind, int nameCode, NamePool namePool)
      Create a NameTest to match nodes by their nameCode allocated from the NamePool
      NameTest​(int nodeKind, java.lang.String uri, java.lang.String localName, NamePool namePool)
      Create a NameTest to match nodes by name
      NameTest​(NodeInfo node)
      Create a NameTest for nodes of the same type and name as a given node
    • Constructor Detail

      • NameTest

        public NameTest​(int nodeKind,
                        java.lang.String uri,
                        java.lang.String localName,
                        NamePool namePool)
        Create a NameTest to match nodes by name
        Parameters:
        nodeKind - the kind of node, for example Type.ELEMENT
        uri - the namespace URI of the required nodes. Supply "" to match nodes that are in no namespace
        localName - the local name of the required nodes. Supply "" to match unnamed nodes
        namePool - the namePool holding the name codes
        Since:
        9.0
      • NameTest

        public NameTest​(int nodeKind,
                        int nameCode,
                        NamePool namePool)
        Create a NameTest to match nodes by their nameCode allocated from the NamePool
        Parameters:
        nodeKind - the kind of node, for example Type.ELEMENT
        nameCode - the nameCode representing the name of the node
        namePool - the namePool holding the name codes
        Since:
        8.4
      • NameTest

        public NameTest​(NodeInfo node)
        Create a NameTest for nodes of the same type and name as a given node
        Parameters:
        node - the node whose node kind and node name will form the basis of the NameTest
    • Method Detail

      • matches

        public boolean matches​(int nodeKind,
                               int nameCode,
                               int annotation)
        Test whether this node test is satisfied by a given node
        Specified by:
        matches in class NodeTest
        Parameters:
        nodeKind - The type of node to be matched
        nameCode - identifies the expanded name of the node to be matched
        annotation - The actual content type of the node
      • matches

        public boolean matches​(TinyTree tree,
                               int nodeNr)
        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.
        Overrides:
        matches in class NodeTest
        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
      • matches

        public boolean matches​(NodeInfo node)
        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.
        Overrides:
        matches in class NodeTest
        Parameters:
        node - the node to be matched
      • getDefaultPriority

        public final double getDefaultPriority()
        Determine the default priority of this node test when used on its own as a Pattern
        Specified by:
        getDefaultPriority in class NodeTest
      • getFingerprint

        public int getFingerprint()
        Get the fingerprint required
        Overrides:
        getFingerprint in class NodeTest
      • getPrimitiveType

        public int getPrimitiveType()
        Determine the types of nodes to which this pattern applies. Used for optimisation. For patterns that match nodes of several types, return Type.NODE
        Specified by:
        getPrimitiveType in interface ItemType
        Overrides:
        getPrimitiveType in class NodeTest
        Returns:
        the type of node matched by this pattern. e.g. Type.ELEMENT or Type.TEXT
      • getSuperType

        public ItemType getSuperType​(TypeHierarchy th)
        Get the type from which this item type is derived by restriction. This is the supertype in the XPath type heirarchy, as distinct from the Schema base type: this means that the supertype of xs:boolean is xs:anyAtomicType, whose supertype is item() (rather than xs:anySimpleType).

        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.

        Specified by:
        getSuperType in interface ItemType
        Overrides:
        getSuperType in class NodeTest
        Parameters:
        th - the type hierarchy cache
        Returns:
        the supertype, or null if this type is item()
      • getNodeKindMask

        public int getNodeKindMask()
        Get a mask indicating which kinds of nodes this NodeTest can match. This is a combination of bits: 1<
        Overrides:
        getNodeKindMask in class NodeTest
      • getRequiredNodeNames

        public IntHashSet getRequiredNodeNames()
        Get the set of node names allowed by this NodeTest. This is returned as a set of Integer fingerprints. A null value indicates that all names are permitted (i.e. that there are no constraints on the node name. The default implementation returns null.
        Overrides:
        getRequiredNodeNames in class NodeTest
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • hashCode

        public int hashCode()
        Returns a hash code value for the object.
        Overrides:
        hashCode in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object other)
        Determines whether two NameTests are equal
        Overrides:
        equals in class java.lang.Object