net.sf.saxon.functions

Class Aggregate

public class Aggregate extends SystemFunction

This class implements the sum(), avg(), count() functions,
Field Summary
static intAVG
static intCOUNT
static intSUM
Method Summary
static AtomicValueaverage(SequenceIterator iter, XPathContext context, SourceLocator location)
Calculate average
voidcheckArguments(ExpressionVisitor visitor)
Static analysis: prevent sorting of the argument
intcomputeCardinality()
Determine the cardinality of the function.
static intcount(SequenceIterator iter)
Get the number of items in a sequence identified by a SequenceIterator
ItemevaluateItem(XPathContext context)
Evaluate the function
ItemTypegetItemType(TypeHierarchy th)
Determine the item type of the value returned by the function
static booleanisCountFunction(Expression exp)
Determine whether a given expression is a call to the count() function
static AtomicValuetotal(SequenceIterator iter, XPathContext context, SourceLocator location)
Calculate the total of a sequence.

Field Detail

AVG

public static final int AVG

COUNT

public static final int COUNT

SUM

public static final int SUM

Method Detail

average

public static AtomicValue average(SequenceIterator iter, XPathContext context, SourceLocator location)
Calculate average

Parameters: iter iterator over the items to be totalled context the XPath dynamic context location location of the expression in the source for diagnostics

Returns: the average of the values

checkArguments

public void checkArguments(ExpressionVisitor visitor)
Static analysis: prevent sorting of the argument

computeCardinality

public int computeCardinality()
Determine the cardinality of the function.

count

public static int count(SequenceIterator iter)
Get the number of items in a sequence identified by a SequenceIterator

Parameters: iter The SequenceIterator. This method moves the current position of the supplied iterator; if this isn't safe, make a copy of the iterator first by calling getAnother(). The supplied iterator must be positioned before the first item (there must have been no call on next()).

Returns: the number of items in the underlying sequence

Throws: XPathException if a failure occurs reading the input sequence

evaluateItem

public Item evaluateItem(XPathContext context)
Evaluate the function

getItemType

public ItemType getItemType(TypeHierarchy th)
Determine the item type of the value returned by the function

Parameters: th the type hierarchy cache

isCountFunction

public static boolean isCountFunction(Expression exp)
Determine whether a given expression is a call to the count() function

Parameters: exp an expression to be examined

Returns: true if the expression is a call to the count() function

total

public static AtomicValue total(SequenceIterator iter, XPathContext context, SourceLocator location)
Calculate the total of a sequence.

Parameters: iter iterator over the items to be totalled context the XPath dynamic context location location of the expression in the source for diagnostics

Returns: the total, according to the rules of the XPath sum() function, but returning null if the sequence is empty. (It's then up to the caller to decide what the correct result is for an empty sequence.