## net.sf.saxon.pattern
Class SubstitutionGroupTest

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

All Implemented Interfaces:
  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 Summary
`SubstitutionGroupTest(int fingerprint, IntHashSet group)` Constructor

Method Summary
`boolean` `equals(Object other)`
`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.
`IntHashSet` `getRequiredNodeNames()` Get the set of node names allowed by this NodeTest.
`int` `hashCode()` Returns a hash code value for the object.
`boolean` `matches(int nodeKind, 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.
`boolean` `matches(TinyTree tree, int nodeNr)` Test whether this node test is satisfied by a given node on a TinyTree.
`String` `toString(NamePool pool)` Display the type descriptor for diagnostics

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

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

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<<Type.ELEMENT for element nodes, 1<<Type.TEXT for text nodes, and so on.

  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

### toString

    public 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.

  Overrides:
    `hashCode` in class `Object`

### equals

    public boolean equals(Object other)

  Overrides:
    `equals` in class `Object`

Copyright (C) Michael H. Kay. All rights reserved.