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

Fields inherited from class com.icl.saxon.expr.Expression
`staticContext`

Constructor Summary
`SortedSelection(Expression s, int k)` Constructor

Method Summary
`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:
    `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

### 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
  Overrides:
    `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.
  Overrides:
    `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

### enumerate

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

  Evaluate the expression by sorting the base nodeset using the supplied key.
  Overrides:
    `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

### display

    public void display(int level)

  Diagnostic print of expression structure
  Overrides:
    `display` in class `Expression`