Class FormatNumber

All Implemented Interfaces:
Serializable, SourceLocator, LocationProvider, SaxonLocator, CallableExpression, InstructionInfo, Locator

public class FormatNumber extends SystemFunction implements CallableExpression
XSLT 2.0 implementation of format-number() function - removes the dependence on the JDK.
See Also:
  • Constructor Details

    • FormatNumber

      public FormatNumber()
  • Method Details

    • setNamespaceResolver

      public void setNamespaceResolver(SavedNamespaceContext savedNamespaceContext)
    • checkArguments

      public void checkArguments(ExpressionVisitor visitor) throws XPathException
      Description copied from class: SystemFunction
      Method called during static type checking
      Overrides:
      checkArguments in class SystemFunction
      Parameters:
      visitor - the expression visitor
      Throws:
      XPathException - if the arguments are incorrect
    • preEvaluate

      public Expression preEvaluate(ExpressionVisitor visitor) throws XPathException
      preEvaluate: this method suppresses compile-time evaluation by doing nothing. We can't evaluate early because we don't have access to the DecimalFormatManager.
      Overrides:
      preEvaluate in class FunctionCall
      Parameters:
      visitor - the expression visitor
      Returns:
      the result of the early evaluation, or the original expression, or potentially a simplified expression
      Throws:
      XPathException - if evaluation fails
    • copy

      public Expression copy()
      Copy an expression. This makes a deep copy.
      Overrides:
      copy in class SystemFunction
      Returns:
      the copy of the original expression
    • equals

      public boolean equals(Object o)
      Determine whether two expressions are equivalent
      Overrides:
      equals in class SystemFunction
    • evaluateAsString

      public CharSequence evaluateAsString(XPathContext context) throws XPathException
      Evaluate in a context where a string is wanted
      Overrides:
      evaluateAsString 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. The expression must return a string or (); if the value of the expression is (), this method returns "".
      Throws:
      XPathException - if any dynamic error occurs evaluating the expression
    • evaluateItem

      public Item evaluateItem(XPathContext c) throws XPathException
      Evaluate in a general context
      Overrides:
      evaluateItem in class Expression
      Parameters:
      c - 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
    • adjustToDecimal

      public static BigDecimal adjustToDecimal(double value, int precision)
      Convert a double to a BigDecimal. In general there will be several BigDecimal values that are equal to the supplied value, and the one we want to choose is the one with fewest non-zero digits. The algorithm used is rather pragmatic: look for a string of zeroes or nines, try rounding the number down or up as approriate, then convert the adjusted value to a double to see if it's equal to the original: if not, use the original value unchanged.
      Parameters:
      value - the double to be converted
      precision - 2 for a double, 1 for a float
      Returns:
      the result of conversion to a double
    • call

      public SequenceIterator call(SequenceIterator[] arguments, XPathContext context) throws XPathException
      Description copied from interface: CallableExpression
      Evaluate the expression
      Specified by:
      call in interface CallableExpression
      Parameters:
      arguments - the values of the arguments, supplied as SequenceIterators
      context - the dynamic evaluation context
      Returns:
      the result of the evaluation, in the form of a SequenceIterator
      Throws:
      XPathException - if a dynamic error occurs during the evaluation of the expression