SortedSelection
Date: 2016-07-03

com.icl.saxon.expr

## Class SortedSelection

- java.lang.Object
- - com.icl.saxon.expr.Expression
  - - com.icl.saxon.expr.NodeSetExpression
    - - com.icl.saxon.expr.SortedSelection

-     public class SortedSelection
      extends NodeSetExpression

  A NodeSetExpression that retrieves nodes in order according to a specified sort key.
  Note there is no direct XSL expression syntax that generates this.
  The expression sorts a base NodeSet according to the value of a specified sort key. The sort key may be composite. The base NodeSet will always be in document order.

- - ### Field Summary

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

      `staticContext`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SortedSelection(Expression s, int k)` Constructor

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `display(int level)` Diagnostic print of expression structure
    `NodeEnumeration` | `enumerate(Context context, boolean sort)` Evaluate the expression by sorting the base nodeset using the supplied key.
    `int` | `getDependencies()` Determine which aspects of the context the expression depends on.
    `Expression` | `reduce(int dependencies, Context context)` Perform a partial evaluation of the expression, by eliminating specified dependencies on the context.
    `void` | `setSortKey(SortKeyDefinition sk, int k)` Add a sort key and other sorting parameters
    `Expression` | `simplify()` Simplify an expression

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

      `evaluate, evaluateAsBoolean, evaluateAsNodeSet, evaluateAsString, getDataType, outputStringValue, selectFirst`

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

      `containsReferences, evaluateAsNumber, getStaticContext, indent, isContextDocumentNodeSet, make, setStaticContext, usesCurrent`

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

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

- - ### Constructor Detail

    - #### SortedSelection

          public SortedSelection(Expression s,
                         int k)

      Constructor
      Parameters:
        `s` - An expression whose value is the base nodeset to be sorted
        `k` - the number of sort keys

  - ### Method Detail

    - #### setSortKey

          public void setSortKey(SortKeyDefinition sk,
                        int k)

      Add a sort key and other sorting parameters
      Parameters:
        `sk` - A SortKeyDefinition
        `k` - The index of this SortKeyDefinition. The first sort key in major-to-minor order is numbered 0 (zero), the others are 1, 2, ... in sequence.
      Throws:
        `java.lang.ArrayIndexOutOfBoundsException` - if the sort key index is out of range, according to the number of sort keys defined when the SortedSelection was initialized.

    - #### simplify

          public Expression simplify()
                              throws XPathException

      Simplify an expression
      Overrides:
        `simplify` in class `Expression`
      Returns:
        the simplified expression
      Throws:
        `XPathException`

    - #### getDependencies

          public int getDependencies()

      Determine which aspects of the context the expression depends on. The result is a bitwise-or'ed value composed from constants such as Context.VARIABLES and Context.CURRENT_NODE
      Specified by:
        `getDependencies` in class `Expression`

    - #### reduce

          public Expression reduce(int dependencies,
                          Context context)
                            throws XPathException

      Perform a partial evaluation of the expression, by eliminating specified dependencies on the context.
      Specified by:
        `reduce` in class `Expression`
      Parameters:
        `dependencies` - The dependencies to be removed
        `context` - The context to be used for the partial evaluation
      Returns:
        a new expression that does not have any of the specified dependencies
      Throws:
        `XPathException`

    - #### enumerate

          public NodeEnumeration enumerate(Context context,
                                  boolean sort)
                                    throws XPathException

      Evaluate the expression by sorting the base nodeset using the supplied key.
      Specified by:
        `enumerate` in class `NodeSetExpression`
      Parameters:
        `context` - The context for the evaluation
        `sort:` - must be false (because document order would be meaningless)
      Returns:
        the sorted nodeset
      Throws:
        `XPathException` - when the expression does not return a nodeset.

    - #### display

          public void display(int level)

      Diagnostic print of expression structure
      Specified by:
        `display` in class `Expression`