Functions, operators, and data types for XPath 2.0
The normalize-space()
function now returns a zero-length string if the argument is an empty sequence.
Casting from xs:anyURI
to xdt:untypedAtomic
is now allowed.
Integers of unlimited size are now supported when using the xs:integer
data type.
The full range of xs:unsignedLong
is now supported.
Decimal division has been changed. The scale of the result (the number of digits after the decimal point) is now the maximum of (18, s1, s2) where s1 is the scale of the first operand and s2 is the scale of the second. An extension function decimal-divide() has been introduced to perform decimal division to a user-specified precision.
The idiv
operator now allows operands of any numeric type.
A negative year is allowed in values of type xs:dateTime
, xs:gYear
,
and xs:gYearMonth
. (Negative years were allowed in xs:date
in Saxon 7.9.1)
Division of one duration by another to produce a double is implemented.
Some operations on durations are now performed using long arithmetic rather than double arithmetic, which improves the precision of the result.
The eq
, gt
... family of operators now allow either operand to be an empty
sequence, in which case the result is an empty sequence.
The id()
function now accepts a second parameter, this is a node that identifies the
document to be searched to find the required ID value. (The corresponding change to other functions
such as idref()
, lang()
, and key()
has not yet been made)
The deep-equals()
function now compares attributes using their typed value rather than
their string value.
If the fragment identifier included in a URI reference passed to the document()
function is not a valid
NCName, it is now ignored, and the function returns the document node. Previously an empty sequence would
be returned.