## net.sf.saxon.pattern
Class SubstitutionGroupTest

    java.lang.Object
      net.sf.saxon.pattern.NodeTest
          net.sf.saxon.pattern.SubstitutionGroupTest

All Implemented Interfaces:
  ItemType, java.io.Serializable

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 element(N) where all elements in a substitution group are to be matched.

See Also:
  Serialized Form

Constructor Summary
`SubstitutionGroupTest(int fingerprint, java.util.Set group)` Constructor

Method Summary
`double` `getDefaultPriority()` Determine the default priority of this node test when used on its own as a Pattern
`int` `getHeadFingerprint()` Get the fingerprint of the head of the substitution group
`int` `getNodeKindMask()` Get a mask indicating which kinds of nodes this NodeTest can match.
`int` `getPrimitiveType()` Determine the types of nodes to which this pattern applies.
`java.util.Set` `getRequiredNodeNames()` Get the set of node names allowed by this NodeTest.
`int` `hashCode()` Returns a hash code value for the object.
`boolean` `matches(int nodeType, int nameCode, 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.
`java.lang.String` `toString(NamePool pool)` Display the type descriptor for diagnostics

Methods inherited from class net.sf.saxon.pattern.NodeTest
`getAtomizedItemType, getContentType, getFingerprint, getPrimitiveItemType, getSuperType, matchesItem`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### SubstitutionGroupTest

    public SubstitutionGroupTest(int fingerprint,
                                 java.util.Set group)

  Constructor

Parameters:
  `group` - A HashSet containing Integer values representing the fingerprints of element names included in the substitution group

Method Detail

### matches

    public boolean matches(int nodeType,
                           int nameCode,
                           int annotation)

  Test whether this node test is satisfied by a given node

  Specified by:
    `matches` in class `NodeTest`
  Parameters:
    `nodeType` - 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(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<<Type.ELEMENT for element nodes, 1<<Type.TEXT for text nodes, and so on.

  Specified by:
    `getNodeKindMask` in class `NodeTest`

### getRequiredNodeNames

    public java.util.Set 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

### toString

    public java.lang.String toString(NamePool pool)

  Description copied from class: `NodeTest`
  Display the type descriptor for diagnostics

  Specified by:
    `toString` in interface `ItemType`
  Overrides:
    `toString` in class `NodeTest`

### hashCode

    public int hashCode()

  Returns a hash code value for the object.