## com.icl.saxon.functions
Class Key

    java.lang.Object
      com.icl.saxon.expr.Expression
          com.icl.saxon.expr.Function
              com.icl.saxon.functions.Key

public class Key
extends Function

Field Summary

Fields inherited from class com.icl.saxon.expr.Function
`argument`

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

Constructor Summary
`Key()`

Method Summary
`NodeEnumeration` `enumerate(Context context, boolean sorted)` Enumerate the expression
`Value` `evaluate(Context context)` Evaluate the expression
`int` `getDataType()` Determine the data type of the expression
`int` `getDependencies()` Determine which aspects of the context the expression depends on.
`java.lang.String` `getName()` Get the name of the function.
`boolean` `isContextDocumentNodeSet()` Determine, in the case of an expression whose data type is Value.NODESET, whether all the nodes in the node-set are guaranteed to come from the same document as the context node.
`Expression` `reduce(int dep, Context context)` Remove specified dependencies.
`Expression` `simplify()` Simplify and validate

Methods inherited from class com.icl.saxon.expr.Function
`addArgument, checkArgumentCount, display, getNumberOfArguments`

Methods inherited from class com.icl.saxon.expr.Expression
`containsReferences, evaluateAsBoolean, evaluateAsNodeSet, evaluateAsNumber, evaluateAsString, getStaticContext, indent, make, outputStringValue, setStaticContext, usesCurrent`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### Key

    public Key()

Method Detail

### getName

    public java.lang.String getName()

  Description copied from class: `Function`
  Get the name of the function. This method must be implemented in all subclasses.

  Specified by:
    `getName` in class `Function`
  Returns:
    the name of the function, as used in XSL expressions, but excluding its namespace prefix

### getDataType

    public int getDataType()

  Determine the data type of the expression

  Specified by:
    `getDataType` in class `Expression`
  Returns:
    Value.NODESET

### isContextDocumentNodeSet

    public boolean isContextDocumentNodeSet()

  Determine, in the case of an expression whose data type is Value.NODESET, whether all the nodes in the node-set are guaranteed to come from the same document as the context node. Used for optimization.

  Overrides:
    `isContextDocumentNodeSet` in class `Expression`

### simplify

    public Expression simplify()
                        throws XPathException

  Simplify and validate

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

### evaluate

    public Value evaluate(Context context)
                   throws XPathException

  Evaluate the expression

  Specified by:
    `evaluate` in class `Expression`
  Parameters:
    `context` - The context in which the expression is to be evaluated
  Returns:
    the value of the expression, evaluated in the current context
  Throws:
    `XPathException`

### enumerate

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

  Enumerate the expression

  Overrides:
    `enumerate` in class `Expression`
  Parameters:
    `context` - The context in which the expression is to be evaluated
    `sorted` - Indicates whether the nodes are required in document order. If this is false, they may come in any order, but there will be no duplicates.
  Throws:
    `XPathException` - when the expression does not return a nodeset.

### 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 dep,
                             Context context)
                      throws XPathException

  Remove specified dependencies.

  Specified by:
    `reduce` in class `Expression`
  Parameters:
    `dep` - The dependencies to be removed, e.g. Context.VARIABLES
    `context` - The context to be used for the partial evaluation
  Returns:
    a new expression (or Value) that does not have any of the specified dependencies
  Throws:
    `XPathException`