saxonica.com

Choosing a software package

Saxon is distributed in three packages: Saxon-HE, Saxon-PE, and Saxon-EE, each of which is available for both the Java and .NET platforms. Saxon-HE is available under an open-source license and all its features are available to all users. Saxon-PE and Saxon-EE require activation by a license key. There is also a restricted license that works with Saxon-EE but restricts the capability to Schema Validation only; this is referred to below as Saxon-VE (Validation Edition). The functionality of these variants is summarized in the table below.

This table is not exhaustive. Other features described in this documentation may be specific to a particular Saxon edition. This is always indicated as part of the documentation.

Feature

Saxon-HE

Saxon-PE

Saxon-EE

Saxon-VE

Basic XSLT

yes

yes

yes

yes

Basic XQuery 1.0 including XQJ interface

yes

yes

yes

yes

Schema-Aware XSLT

no

no

yes

no

Schema-Aware XQuery

no

no

yes

no

XQuery Updates 1.0

no

no

yes

no

XQuery 1.1 (subset)

no

yes

yes

no

Schema Validation

no

no

yes

yes

Java Code Generation from XQuery

no

no

yes

no

Separate compilation of XQuery modules

no

no

yes

no

Extensibility using integrated extension functions

yes

yes

yes

yes

Extensibility using reflexive extension functions

no

yes

yes

no

Extensibility using XSLT extension instructions

no

yes

yes

no

Saxon Extension Functions (see Note 1)

no

yes

yes

no

Saxon Extension Instructions in XSLT (see Note 2)

no

yes

yes

no

Advanced Optimizer (see Note 3)

no

no

yes

no

Built-in support for JDOM, XOM, and DOM4J (see Note 4)

no

yes

yes

yes

Built-in localization support for date and number formatting (see Note 5)

no

yes

yes

yes

Streaming Extensions for Large Documents

no

no

yes

no

Binary Document Storage (PTree)

no

yes

yes

no

Note 1: Extension functions in the Saxon namespace, together with EXSLT extension functions where available, require Saxon-PE, with a few exceptions such as saxon:stream() that relate to functionality only available in Saxon-EE. Details of these extensions, together with the Saxon edition they require, are in Extension functions

Note 2: This covers the availability of extension instructions in the Saxon namespace (for example, saxon:assign and saxon:while); extension instructions in the SQL namespace (for example, sql:connect and sql:insert; and the basic mechanisms for extending Saxon with new extension elements.

Note 3: This includes a number of optimizations, notable in the handling of joins. Saxon-HE and Saxon-PE always implement joins using a nested-loop strategy, which takes increasingly long as the documents become larger. Saxon-EE where possible uses a hash-join algorithm. This applies whether the join is expressed as a path expression, an XQuery FLWOR expression, or a nested set of xsl:for-each instructions in XSLT. In some of the queries in the XMark benchmark, the effect is to reduce query time on a 10Mb source document from 16 seconds to 45 milliseconds.

Note 4: Saxon-PE and Saxon-EE provide support for access to (and in some cases output of) DOM, JDOM, DOM4J, and XOM object models "out of the box", as well as allowing user-defined object models to be supported by writing an adapter. Saxon-HE supports DOM "out of the box", and allows user-written adapters; the adapters for JDOM, DOM4J and XOM are available as open-source code which can be compiled and integrated in the same way as a user-written adapter.

Note 5: All editions allow support for languages other than English in xsl:number and format-date() by means of a user-written adapters. Saxon-PE and Saxon-EE include adapters for a number of European languages "out of the box". Currently these adapters are all available as open-source code, which means they can also be used in conjunction with Saxon-HE.

For commercial information including prices, terms and conditions, maintenance and upgrade offerings, site licensing, and redistribution licensing, see the online store.

Next