SAXONICA

Saxon Documentation
Full Contents
About Saxon
Changes in this Release
| Version 8.7 (2006-02-24)
| Version 8.6.1 (24 November 2005)
| Version 8.6 (3 November 2005)
| Version 8.5.1 (26 August 2005)
| Version 8.5 (2 August 2005)
| Version 8.4 (4 April 2005)
| Version 8.3 (11 February 2005)
| Version 8.2 (21 December 2004)
| Version 8.1.1 (8 October 2004)
| Version 8.1 (24 September 2004)
» | Version 8.0 (1 June 2004)
Conditions of Use
Using XSLT 2.0
Using XQuery
Handling Source Documents
XML Schema Processing
The XPath API
Saxon on .NET
Extensibility
Saxon Extensions
Sample Saxon Applications
The Saxon SQL Extension
XSLT Elements
XPath 2.0 Expression Syntax
Function Library
Standards Conformance

# Functions and Operators

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.

Next