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

# XPath Changes

The "?" in the SequenceType syntax `element(N, T?)` or `element(*, T?)` is now implemented. Without the "?", the test does not match an element that has `xsi:nil="true"`. Similarly, the syntax `schema-element(N)` no longer matches an element with `xsi:nil="true"`.

The SequenceType syntax `document-node(element(N,T))` or `document-node(schema-element(N))` is now supported in all contexts, including within a step of a path expression.

The SequenceType syntax `void()` (previously `empty()`) has changed again: it is now `empty-sequence()`. Saxon currently allows `void()` and `empty-sequence()` as synonyms.

The tokenizer now disallows constructs of the form `10div 3`: that is, a numeric literal must now be separated by whitespace from a following operator keyword.

The expression optimizer now recognizes constructs that can be speeded up by indexing, and builds the necessary indexes automatically. This works both in XSLT and in XQuery. This optimization is available in Saxon-SA only. There are two constructs that are recognized as candidates for indexing. Firstly, the optimizer recognizes an absolute path expression (one starting at a document node) containing a predicate that is an equality match between a value that depends on the context node and a value that doesn't depend on the path, or an equivalent FLWOR expression in XQuery. This causes a document-level index to be built - in effect, an implicit `xsl:key` declaration. Such indexes last as long as the document stays in memory, and can be shared by multiple queries executing against the same document. Secondly, the optimizer recognizes similar path expressions whose first term is a variable reference, provided that the path expression is itself in a loop relative to the variable binding. This causes the value of the variable to be indexed: this index lasts only as long as the variable itself.

Next