Class SubstitutionGroupTest

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

    public class SubstitutionGroupTest
    extends NodeTest
    NodeTest is an interface that enables a test of whether a node has a particular name and type. A SubstitutionGroupTest matches element nodes whose name is one of a given set of names: it is used for KindTests of the form schema-element(N) where all elements in a substitution group are to be matched.
    Author:
    Michael H. Kay
    See Also:
    Serialized Form
    • Constructor Detail

      • SubstitutionGroupTest

        public SubstitutionGroupTest​(int fingerprint,
                                     IntHashSet group)
        Constructor
        Parameters:
        group - An IntSet containing Integer values representing the fingerprints of element names included in the substitution group
    • 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.
        Specified by:
        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.
        Specified by:
        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
      • 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
      • getNodeKindMask

        public int getNodeKindMask()
        Get a mask indicating which kinds of nodes this NodeTest can match. This is a combination of bits: 1<
        Specified by:
        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
      • getHeadFingerprint

        public int getHeadFingerprint()
        Get the fingerprint of the head of the substitution group
        Returns:
        the fingerprint of the head of the substitution group
      • 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)
        Overrides:
        equals in class java.lang.Object