fn:number
Returns the value indicated by $arg or, if $arg is not
specified, the context item after atomization, converted to an xs:double.
Signatures
fn:number() as xs:doublefn:number($arg as xs:anyAtomicType?) as xs:doubleProperties
The zero-argument form of this function is deterministic, context-dependent, and focus-dependent.
The one-argument form of this function is deterministic, context-independent, and focus-independent.
Rules
Calling the zero-argument version of the function is defined to give the same result
as
calling the single-argument version with the context item (.). That is,
fn:number() is equivalent to fn:number(.), as defined by
the rules that follow.
If $arg is the empty sequence or if $arg cannot be converted
to an xs:double, the xs:double value NaN is
returned.
Otherwise, $arg is converted to an xs:double following the
rules of Casting to xs:double. If the conversion to xs:double
fails, the xs:double value NaN is returned.
Error Conditions
A dynamic error is raised [ERRXPDY0002]
if $arg is omitted and the context item is absent.
As a consequence of the rules given above, a type error occurs if the context item cannot be atomized, or if the result of atomizing the context item is a sequence containing more than one atomic value.
Notes
XSD 1.1 allows the string +INF as a representation of positive infinity;
XSD 1.0 does not. It is implementation-defined whether XSD 1.1 is
supported.
Generally fn:number returns NaN rather than raising a dynamic
error if the argument cannot be converted to xs:double. However, a type
error is raised in the usual way if the supplied argument cannot be atomized or if
the
result of atomization does not match the required argument type.
Examples
The expression fn:number($item1/quantity) returns 5.0e0.
The expression fn:number($item2/description) returns xs:double('NaN').
Assume that the context item is the xs:string value "15".
Then fn:number() returns 1.5e1.