Class FormatNumber
java.lang.Object
com.icl.saxon.expr.Expression
com.icl.saxon.expr.Function
com.icl.saxon.functions.FormatNumber
-
Field Summary
Fields inherited from class Expression
staticContext -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionEvaluate in a general contextevaluateAsString(Context context) Evaluate in a context where a string is wantedformatNumber(double n, String format, DecimalFormatSymbols dfs) Here is the method that does the work.intDetermine the data type of the exprEssionintDetermine the dependenciesgetName()Get the name of the function.Reduce the dependenciessimplify()Simplify and validateMethods inherited from class Function
addArgument, checkArgumentCount, display, getNumberOfArgumentsMethods inherited from class Expression
containsReferences, enumerate, evaluateAsBoolean, evaluateAsNodeSet, evaluateAsNumber, getStaticContext, indent, isContextDocumentNodeSet, make, outputStringValue, setStaticContext, usesCurrent
-
Constructor Details
-
FormatNumber
public FormatNumber()
-
-
Method Details
-
getName
-
getDataType
public int getDataType()Determine the data type of the exprEssion- Specified by:
getDataTypein classExpression- Returns:
- Value.STRING
-
simplify
Simplify and validate- Overrides:
simplifyin classExpression- Returns:
- the simplified expression
- Throws:
XPathException
-
evaluateAsString
Evaluate in a context where a string is wanted- Overrides:
evaluateAsStringin classExpression- 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
-
evaluate
Evaluate in a general context- Specified by:
evaluatein classExpression- Parameters:
c- The context in which the expression is to be evaluated- Returns:
- the value of the expression, evaluated in the current context
- Throws:
XPathException
-
formatNumber
Here is the method that does the work. It needs to be synchronized because it remembers information from one invocation to the next; it doesn't matter if these are in different threads but it can't be interrupted. The reason for remembering information is that getting a new DecimalFormatSymbols each time is incredibly expensive, especially with the Microsoft Java VM. Actually the synchronization is unnecessary if there is a bound Controller.- Throws:
XPathException
-
getDependencies
public int getDependencies()Determine the dependencies- Specified by:
getDependenciesin classExpression
-
reduce
Reduce the dependencies- Specified by:
reducein classExpression- Parameters:
dep- The dependencies to be removed, e.g. Context.VARIABLESc- 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
-