net.sf.saxon.functions

Class KeyFn

public class KeyFn extends SystemFunction

Method Summary
PathMap.PathMapNodeSetaddToPathMap(PathMap pathMap, PathMap.PathMapNodeSet pathMapNodeSet)
Add a representation of a doc() call or similar function to a PathMap.
voidcheckArguments(ExpressionVisitor visitor)
intcomputeSpecialProperties()
Get the static properties of this expression (other than its type).
Expressioncopy()
Copy an expression.
StructuredQNamegetStaticKeyName()
Get the key name, if known statically.
static KeyFninternalKeyCall(KeyDefinitionSet keySet, String name, Expression value, Expression doc)
Non-standard constructor to create an internal call on key() with a known key definition
SequenceIteratoriterate(XPathContext context)
Enumerate the results of the expression
ExpressionpreEvaluate(ExpressionVisitor visitor)
preEvaluate: this method suppresses compile-time evaluation by doing nothing
Expressionsimplify(ExpressionVisitor visitor)
Simplify: add a third implicit argument, the context document
ExpressiontypeCheck(ExpressionVisitor visitor, ItemType contextItemType)
Type-check the expression.

Method Detail

addToPathMap

public PathMap.PathMapNodeSet addToPathMap(PathMap pathMap, PathMap.PathMapNodeSet pathMapNodeSet)
Add a representation of a doc() call or similar function to a PathMap. This is a convenience method called by the addToPathMap() methods for doc(), document(), collection() and similar functions. These all create a new root expression in the path map.

Parameters: pathMap the PathMap to which the expression should be added pathMapNodeSet

Returns: the pathMapNode representing the focus established by this expression, in the case where this expression is the first operand of a path expression or filter expression

checkArguments

public void checkArguments(ExpressionVisitor visitor)

computeSpecialProperties

public int computeSpecialProperties()
Get the static properties of this expression (other than its type). The result is bit-signficant. These properties are used for optimizations. In general, if a property bit is set, it is true, but if it is unset, the value is unknown.

copy

public Expression copy()
Copy an expression. This makes a deep copy.

Returns: the copy of the original expression

getStaticKeyName

public StructuredQName getStaticKeyName()
Get the key name, if known statically. If not known statically, return null.

Returns: the key name if known, otherwise null

internalKeyCall

public static KeyFn internalKeyCall(KeyDefinitionSet keySet, String name, Expression value, Expression doc)
Non-standard constructor to create an internal call on key() with a known key definition

Parameters: keySet the set of KeyDefinitions (always a single KeyDefinition) name the name allocated to the key (first argument of the function) value the value being searched for (second argument of the function) doc the document being searched (third argument)

Returns: a call on the key() function

iterate

public SequenceIterator iterate(XPathContext context)
Enumerate the results of the expression

preEvaluate

public Expression preEvaluate(ExpressionVisitor visitor)
preEvaluate: this method suppresses compile-time evaluation by doing nothing

Parameters: visitor the expression visitor

simplify

public Expression simplify(ExpressionVisitor visitor)
Simplify: add a third implicit argument, the context document

Parameters: visitor the expression visitor

typeCheck

public Expression typeCheck(ExpressionVisitor visitor, ItemType contextItemType)
Type-check the expression. This also calls preEvaluate() to evaluate the function if all the arguments are constant; functions that do not require this behavior can override the preEvaluate method.