Class Aggregate

All Implemented Interfaces:
Serializable, SourceLocator, LocationProvider, SaxonLocator, EvaluableItem, SequenceIterable, InstructionInfo, Locator

public class Aggregate extends SystemFunction
This class implements the sum(), avg(), count() functions,
See Also:
  • Field Details

  • Constructor Details

    • Aggregate

      public Aggregate()
  • Method Details

    • checkArguments

      public void checkArguments(ExpressionVisitor visitor) throws XPathException
      Static analysis: prevent sorting of the argument
      Overrides:
      checkArguments in class SystemFunction
      Parameters:
      visitor - the expression visitor
      Throws:
      XPathException
    • getItemType

      public ItemType getItemType(TypeHierarchy th)
      Determine the item type of the value returned by the function
      Overrides:
      getItemType in class SystemFunction
      Parameters:
      th - the type hierarchy cache
      Returns:
      a value such as Type.STRING, Type.BOOLEAN, Type.NUMBER, Type.NODE, or Type.ITEM (meaning not known at compile time)
    • computeCardinality

      public int computeCardinality()
      Determine the cardinality of the function.
      Overrides:
      computeCardinality in class SystemFunction
      Returns:
      the computed cardinality, as one of the values StaticProperty.ALLOWS_ZERO_OR_ONE, StaticProperty.EXACTLY_ONE, StaticProperty.ALLOWS_ONE_OR_MORE, StaticProperty.ALLOWS_ZERO_OR_MORE
    • evaluateItem

      public Item evaluateItem(XPathContext context) throws XPathException
      Evaluate the function
      Specified by:
      evaluateItem in interface EvaluableItem
      Overrides:
      evaluateItem in class Expression
      Parameters:
      context - The context in which the expression is to be evaluated
      Returns:
      the node or atomic value that results from evaluating the expression; or null to indicate that the result is an empty sequence
      Throws:
      XPathException - if any dynamic error occurs evaluating the expression
    • total

      public static AtomicValue total(SequenceIterator iter, XPathContext context, SourceLocator location) throws XPathException
      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.
      Throws:
      XPathException
    • average

      public static AtomicValue average(SequenceIterator iter, XPathContext context, SourceLocator location) throws XPathException
      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
      Throws:
      XPathException
    • count

      public static int count(SequenceIterator iter) throws XPathException
      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
    • 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