org.apache.xpath.patterns

## Class NodeTest

- java.lang.Object
- - org.apache.xpath.Expression
  - - org.apache.xpath.patterns.NodeTest

- All Implemented Interfaces:
    java.io.Serializable, javax.xml.transform.SourceLocator, ExpressionNode, XPathVisitable
  Direct Known Subclasses:
    PredicatedNodeTest, StepPattern

      public class NodeTest
      extends Expression

  This is the basic node test class for both match patterns and location path steps.
  See Also:
    Serialized Form
  Usage:
    **For advanced use only**

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static XNumber` | `SCORE_NODETEST` The match score if the pattern consists of just a NodeTest.
    `static XNumber` | `SCORE_NONE` The match score if no match is made.
    `static XNumber` | `SCORE_NSWILD` The match score if the pattern pattern has the form NCName:*.
    `static XNumber` | `SCORE_OTHER` The match score if the pattern consists of something other than just a NodeTest or just a qname.
    `static XNumber` | `SCORE_QNAME` The match score if the pattern has the form of a QName optionally preceded by an @ character.
    `static int` | `SHOW_BYFUNCTION` Special bitmap for match patterns starting with a function.
    `static java.lang.String` | `SUPPORTS_PRE_STRIPPING` The URL to pass to the Node#supports method, to see if the DOM has already been stripped of whitespace nodes.
    `static java.lang.String` | `WILD` The namespace or local name for node tests with a wildcard.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `NodeTest()` Null argument constructor.
    `NodeTest(int whatToShow)` Construct an NodeTest that doesn't test for node names.
    `NodeTest(int whatToShow, java.lang.String namespace, java.lang.String name)` Construct an NodeTest that tests for namespaces and node names.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `callVisitors(ExpressionOwner owner, XPathVisitor visitor)` This will traverse the heararchy, calling the visitor for each member.
    `static void` | `debugWhatToShow(int whatToShow)` Do a diagnostics dump of a whatToShow bit set.
    `boolean` | `deepEquals(Expression expr)` Compare this object with another object and see if they are equal, include the sub heararchy.
    `XObject` | `execute(XPathContext xctxt)` Test the current node to see if it matches the given node test.
    `XObject` | `execute(XPathContext xctxt, int context)` Tell what the test score is for the given node.
    `XObject` | `execute(XPathContext xctxt, int context, DTM dtm, int expType)` Tell what the test score is for the given node.
    `void` | `fixupVariables(java.util.Vector vars, int globalsSize)` Node tests by themselves do not need to fix up variables.
    `double` | `getDefaultScore()` Get the score that this test will return if a test succeeds.
    `java.lang.String` | `getLocalName()` Return the local name to be tested.
    `java.lang.String` | `getNamespace()` Return the namespace to be tested.
    `static int` | `getNodeTypeTest(int whatToShow)` Tell what node type to test, if not DTMFilter.SHOW_ALL.
    `XNumber` | `getStaticScore()` Get the static score for this node test.
    `int` | `getWhatToShow()` This attribute determines which node types are accepted.
    `void` | `initNodeTest(int whatToShow)` Initialize this node test by setting the whatToShow property, and calculating the score that this test will return if a test succeeds.
    `void` | `initNodeTest(int whatToShow, java.lang.String namespace, java.lang.String name)` Initialize this node test by setting the whatToShow property and the namespace and local name, and calculating the score that this test will return if a test succeeds.
    `void` | `setLocalName(java.lang.String name)` Set the local name to be tested.
    `void` | `setNamespace(java.lang.String ns)` Set the namespace to be tested.
    `void` | `setStaticScore(XNumber score)` Set the static score for this node test.
    `void` | `setWhatToShow(int what)` This attribute determines which node types are accepted.

    - ### Methods inherited from class org.apache.xpath.Expression

      `asIterator, asIteratorRaw, asNode, assertion, bool, canTraverseOutsideSubtree, error, execute, executeCharsToContentHandler, exprAddChild, exprGetChild, exprGetNumChildren, exprGetParent, exprSetParent, getColumnNumber, getExpressionOwner, getLineNumber, getPublicId, getSystemId, isNodesetExpr, isStableNumber, num, warn, xstr`

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### WILD

          public static final java.lang.String WILD

      The namespace or local name for node tests with a wildcard.
      See Also:
        the XPath NameTest production., Constant Field Values

    - #### SUPPORTS_PRE_STRIPPING

          public static final java.lang.String SUPPORTS_PRE_STRIPPING

      The URL to pass to the Node#supports method, to see if the DOM has already been stripped of whitespace nodes.
      See Also:
        Constant Field Values

    - #### SHOW_BYFUNCTION

          public static final int SHOW_BYFUNCTION

      Special bitmap for match patterns starting with a function. Make sure this does not conflict with `NodeFilter`.
      See Also:
        Constant Field Values

    - #### SCORE_NODETEST

          public static final XNumber SCORE_NODETEST

      The match score if the pattern consists of just a NodeTest.
      See Also:
        XSLT Specification - 5.5 Conflict Resolution for Template Rules

    - #### SCORE_NSWILD

          public static final XNumber SCORE_NSWILD

      The match score if the pattern pattern has the form NCName:*.
      See Also:
        XSLT Specification - 5.5 Conflict Resolution for Template Rules

    - #### SCORE_QNAME

          public static final XNumber SCORE_QNAME

      The match score if the pattern has the form of a QName optionally preceded by an @ character.
      See Also:
        XSLT Specification - 5.5 Conflict Resolution for Template Rules

    - #### SCORE_OTHER

          public static final XNumber SCORE_OTHER

      The match score if the pattern consists of something other than just a NodeTest or just a qname.
      See Also:
        XSLT Specification - 5.5 Conflict Resolution for Template Rules

    - #### SCORE_NONE

          public static final XNumber SCORE_NONE

      The match score if no match is made.
      See Also:
        XSLT Specification - 5.5 Conflict Resolution for Template Rules

  - ### Constructor Detail

    - #### NodeTest

          public NodeTest(int whatToShow,
                          java.lang.String namespace,
                          java.lang.String name)

      Construct an NodeTest that tests for namespaces and node names.
      Parameters:
        `whatToShow` - Bit set defined mainly by `NodeFilter`.
        `namespace` - The namespace to be tested.
        `name` - The local name to be tested.

    - #### NodeTest

          public NodeTest(int whatToShow)

      Construct an NodeTest that doesn't test for node names.
      Parameters:
        `whatToShow` - Bit set defined mainly by `NodeFilter`.

    - #### NodeTest

          public NodeTest()

      Null argument constructor.

  - ### Method Detail

    - #### getWhatToShow

          public int getWhatToShow()

      This attribute determines which node types are accepted. These constants are defined in the `NodeFilter` interface.
      Returns:
        bitset mainly defined in `NodeFilter`.

    - #### setWhatToShow

          public void setWhatToShow(int what)

      This attribute determines which node types are accepted. These constants are defined in the `NodeFilter` interface.
      Parameters:
        `what` - bitset mainly defined in `NodeFilter`.

    - #### getNamespace

          public java.lang.String getNamespace()

      Return the namespace to be tested.
      Returns:
        The namespace to be tested for, or `WILD`, or null.

    - #### setNamespace

          public void setNamespace(java.lang.String ns)

      Set the namespace to be tested.
      Parameters:
        `ns` - The namespace to be tested for, or `WILD`, or null.

    - #### getLocalName

          public java.lang.String getLocalName()

      Return the local name to be tested.
      Returns:
        the local name to be tested, or `WILD`, or an empty string.

    - #### setLocalName

          public void setLocalName(java.lang.String name)

      Set the local name to be tested.
      Parameters:
        `name` - the local name to be tested, or `WILD`, or an empty string.

    - #### deepEquals

          public boolean deepEquals(Expression expr)

      Description copied from class: `Expression`
      Compare this object with another object and see if they are equal, include the sub heararchy.
      Specified by:
        `deepEquals` in class `Expression`
      Parameters:
        `expr` - Another expression object.
      Returns:
        true if this objects class and the expr object's class are the same, and the data contained within both objects are considered equal.
      See Also:
        `Expression.deepEquals(Expression)`

    - #### initNodeTest

          public void initNodeTest(int whatToShow)

      Initialize this node test by setting the whatToShow property, and calculating the score that this test will return if a test succeeds.
      Parameters:
        `whatToShow` - Bit set defined mainly by `NodeFilter`.

    - #### initNodeTest

          public void initNodeTest(int whatToShow,
                                   java.lang.String namespace,
                                   java.lang.String name)

      Initialize this node test by setting the whatToShow property and the namespace and local name, and calculating the score that this test will return if a test succeeds.
      Parameters:
        `whatToShow` - Bit set defined mainly by `NodeFilter`.
        `namespace` - The namespace to be tested.
        `name` - The local name to be tested.

    - #### getStaticScore

          public XNumber getStaticScore()

      Get the static score for this node test.
      Returns:
        Should be one of the SCORE_XXX constants.

    - #### setStaticScore

          public void setStaticScore(XNumber score)

      Set the static score for this node test.
      Parameters:
        `score` - Should be one of the SCORE_XXX constants.

    - #### getDefaultScore

          public double getDefaultScore()

      Get the score that this test will return if a test succeeds.
      Returns:
        the score that this test will return if a test succeeds.

    - #### getNodeTypeTest

          public static int getNodeTypeTest(int whatToShow)

      Tell what node type to test, if not DTMFilter.SHOW_ALL.
      Parameters:
        `whatToShow` - Bit set defined mainly by `DTMFilter`.
      Returns:
        the node type for the whatToShow. Since whatToShow can specify multiple types, it will return the first bit tested that is on, so the caller of this function should take care that this is the function they really want to call. If none of the known bits are set, this function will return zero.

    - #### debugWhatToShow

          public static void debugWhatToShow(int whatToShow)

      Do a diagnostics dump of a whatToShow bit set.
      Parameters:
        `whatToShow` - Bit set defined mainly by `DTMFilter`.

    - #### execute

          public XObject execute(XPathContext xctxt,
                                 int context)
                          throws javax.xml.transform.TransformerException

      Tell what the test score is for the given node.
      Overrides:
        `execute` in class `Expression`
      Parameters:
        `xctxt` - XPath runtime context.
        `context` - The node being tested.
      Returns:
        `SCORE_NODETEST`, `SCORE_NONE`, `SCORE_NSWILD`, `SCORE_QNAME`, or `SCORE_OTHER`.
      Throws:
        `javax.xml.transform.TransformerException`

    - #### execute

          public XObject execute(XPathContext xctxt,
                                 int context,
                                 DTM dtm,
                                 int expType)
                          throws javax.xml.transform.TransformerException

      Tell what the test score is for the given node.
      Overrides:
        `execute` in class `Expression`
      Parameters:
        `xctxt` - XPath runtime context.
        `context` - The node being tested.
        `dtm` - The DTM of the current node.
        `expType` - The expanded type ID of the current node.
      Returns:
        `SCORE_NODETEST`, `SCORE_NONE`, `SCORE_NSWILD`, `SCORE_QNAME`, or `SCORE_OTHER`.
      Throws:
        `javax.xml.transform.TransformerException`

    - #### execute

          public XObject execute(XPathContext xctxt)
                          throws javax.xml.transform.TransformerException

      Test the current node to see if it matches the given node test.
      Specified by:
        `execute` in class `Expression`
      Parameters:
        `xctxt` - XPath runtime context.
      Returns:
        `SCORE_NODETEST`, `SCORE_NONE`, `SCORE_NSWILD`, `SCORE_QNAME`, or `SCORE_OTHER`.
      Throws:
        `javax.xml.transform.TransformerException`

    - #### fixupVariables

          public void fixupVariables(java.util.Vector vars,
                                     int globalsSize)

      Node tests by themselves do not need to fix up variables.
      Specified by:
        `fixupVariables` in class `Expression`
      Parameters:
        `vars` - List of QNames that correspond to variables. This list should be searched backwards for the first qualified name that corresponds to the variable reference qname. The position of the QName in the vector from the start of the vector will be its position in the stack frame (but variables above the globalsTop value will need to be offset to the current stack frame). NEEDSDOC @param globalsSize

    - #### callVisitors

          public void callVisitors(ExpressionOwner owner,
                                   XPathVisitor visitor)

      Description copied from interface: `XPathVisitable`
      This will traverse the heararchy, calling the visitor for each member. If the called visitor method returns false, the subtree should not be called.
      Parameters:
        `owner` - The owner of the visitor, where that path may be rewritten if needed.
        `visitor` - The visitor whose appropriate method will be called.
      See Also:
        `XPathVisitable.callVisitors(ExpressionOwner, XPathVisitor)`

Copyright © 2023 Apache XML Project. All Rights Reserved.