SingletonNodeSet
Date: 2016-07-03

com.icl.saxon.expr

## Class SingletonNodeSet

- java.lang.Object
- - com.icl.saxon.expr.Expression
  - - com.icl.saxon.expr.Value
    - - com.icl.saxon.expr.NodeSetValue
      - - com.icl.saxon.expr.SingletonNodeSet

- All Implemented Interfaces:
    org.w3c.dom.NodeList
  Direct Known Subclasses:
    FragmentValue, TextFragmentValue

      public class SingletonNodeSet
      extends NodeSetValue
      implements org.w3c.dom.NodeList

  A node-set value containing zero or one nodes

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected boolean` | `generalUseAllowed`
    `protected NodeInfo` | `node`

    - ### Fields inherited from class com.icl.saxon.expr.Value

      `ANY, BOOLEAN, NODESET, NUMBER, OBJECT, STRING`

    - ### Fields inherited from class com.icl.saxon.expr.Expression

      `staticContext`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SingletonNodeSet()` Create an empty node-set
    `SingletonNodeSet(NodeInfo node)` Create a node-set containing one node

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `allowGeneralUse()` Allow general use as a node-set.
    `boolean` | `asBoolean()` Evaluate as a boolean.
    `java.lang.String` | `asString()` Convert to string value
    `NodeEnumeration` | `enumerate()` Return an enumeration of this nodeset value.
    `boolean` | `equals(Value other)` Test whether a nodeset "equals" another Value
    `Value` | `evaluate(Context context)` Evaluate the Node Set.
    `NodeSetValue` | `evaluateAsNodeSet(Context context)` Evaluate an expression as a NodeSet.
    `int` | `getCount()` Count the nodes in the node-set.
    `NodeInfo` | `getFirst()` Get the first node in the nodeset (in document order)
    `int` | `getLength()` return the number of nodes in the list (DOM method)
    `boolean` | `isGeneralUseAllowed()` Determine if general use as a node-set is allowed
    `boolean` | `isSorted()` Test whether the value is known to be sorted
    `org.w3c.dom.Node` | `item(int index)` Return the n'th item in the list (DOM method)
    `boolean` | `notEquals(Value other)` Test whether a nodeset "not-equals" another Value
    `void` | `setSorted(boolean isSorted)` Set a flag to indicate whether the nodes are sorted.
    `Expression` | `simplify()` Simplify the expression
    `NodeSetValue` | `sort()` Sort the nodes into document order.

    - ### Methods inherited from class com.icl.saxon.expr.NodeSetValue

      `asNumber, compare, conversionPreference, convertToJava, display, enumerate, getDataType`

    - ### Methods inherited from class com.icl.saxon.expr.Value

      `getDependencies, inverse, numericCompare, reduce, stringToNumber`

    - ### Methods inherited from class com.icl.saxon.expr.Expression

      `containsReferences, evaluateAsBoolean, evaluateAsNumber, evaluateAsString, getStaticContext, indent, isContextDocumentNodeSet, make, outputStringValue, setStaticContext, usesCurrent`

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

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

- - ### Field Detail

    - #### node

          protected NodeInfo node

    - #### generalUseAllowed

          protected boolean generalUseAllowed

  - ### Constructor Detail

    - #### SingletonNodeSet

          public SingletonNodeSet()

      Create an empty node-set

    - #### SingletonNodeSet

          public SingletonNodeSet(NodeInfo node)

      Create a node-set containing one node

  - ### Method Detail

    - #### allowGeneralUse

          public void allowGeneralUse()

      Allow general use as a node-set. This is required to lift the 1.0 restrictions on use of result tree fragments

    - #### isGeneralUseAllowed

          public boolean isGeneralUseAllowed()

      Determine if general use as a node-set is allowed

    - #### simplify

          public Expression simplify()

      Simplify the expression
      Overrides:
        `simplify` in class `Value`
      Returns:
        the simplified expression

    - #### evaluate

          public Value evaluate(Context context)

      Evaluate the Node Set. This guarantees to return the result in sorted order.
      Overrides:
        `evaluate` in class `NodeSetValue`
      Parameters:
        `context` - The context for evaluation (not used)
      Returns:
        the value, unchanged

    - #### evaluateAsNodeSet

          public NodeSetValue evaluateAsNodeSet(Context context)

      Evaluate an expression as a NodeSet.
      Overrides:
        `evaluateAsNodeSet` in class `NodeSetValue`
      Parameters:
        `context` - The context in which the expression is to be evaluated
      Returns:
        the value of the expression, evaluated in the current context

    - #### setSorted

          public void setSorted(boolean isSorted)

      Set a flag to indicate whether the nodes are sorted. Used when the creator of the node-set knows that they are already in document order.
      Specified by:
        `setSorted` in class `NodeSetValue`
      Parameters:
        `isSorted` - true if the caller wishes to assert that the nodes are in document order and do not need to be further sorted

    - #### isSorted

          public boolean isSorted()

      Test whether the value is known to be sorted
      Specified by:
        `isSorted` in class `NodeSetValue`
      Returns:
        true if the value is known to be sorted in document order, false if it is not known whether it is sorted.

    - #### asString

          public java.lang.String asString()

      Convert to string value
      Specified by:
        `asString` in class `NodeSetValue`
      Returns:
        the value of the first node in the node-set if there is one, otherwise an empty string

    - #### asBoolean

          public boolean asBoolean()

      Evaluate as a boolean.
      Specified by:
        `asBoolean` in class `NodeSetValue`
      Returns:
        true if the node set is not empty

    - #### getCount

          public int getCount()

      Count the nodes in the node-set. Note this will sort the node set if necessary, to make sure there are no duplicates.
      Specified by:
        `getCount` in class `NodeSetValue`

    - #### sort

          public NodeSetValue sort()

      Sort the nodes into document order. This does nothing if the nodes are already known to be sorted; to force a sort, call setSorted(false)
      Specified by:
        `sort` in class `NodeSetValue`
      Returns:
        the same NodeSetValue, after sorting. (Historic)

    - #### getFirst

          public NodeInfo getFirst()

      Get the first node in the nodeset (in document order)
      Specified by:
        `getFirst` in class `NodeSetValue`
      Returns:
        the first node

    - #### equals

          public boolean equals(Value other)
                         throws XPathException

      Test whether a nodeset "equals" another Value
      Overrides:
        `equals` in class `NodeSetValue`
      Returns:
        a boolean giving the value of the expression, evaluated in the current context
      Throws:
        `XPathException`

    - #### notEquals

          public boolean notEquals(Value other)
                            throws XPathException

      Test whether a nodeset "not-equals" another Value
      Overrides:
        `notEquals` in class `NodeSetValue`
      Returns:
        a boolean giving the value of the expression, evaluated in the current context
      Throws:
        `XPathException`

    - #### enumerate

          public NodeEnumeration enumerate()
                                    throws XPathException

      Return an enumeration of this nodeset value.
      Specified by:
        `enumerate` in class `NodeSetValue`
      Throws:
        `XPathException`

    - #### getLength

          public int getLength()

      return the number of nodes in the list (DOM method)
      Specified by:
        `getLength` in interface `org.w3c.dom.NodeList`

    - #### item

          public org.w3c.dom.Node item(int index)

      Return the n'th item in the list (DOM method)
      Specified by:
        `item` in interface `org.w3c.dom.NodeList`