SAXONICA

Saxon Documentation
Full Contents
About Saxon
| Introduction
| Getting Started
| What is Saxon?
» | Choosing a software package
| Installation: Java platform
| Installation: .NET platform
| Historical Note
| Technical Support
| Related Products
Changes in this Release
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

# Choosing a software package

Saxon is distributed in two packages: Saxon-B and Saxon-SA, each of which is available for both the Java and .NET platforms. Saxon-B is available under an open-source license and all its features are available to all users. Saxon-SA requires activation by a license key, and it is possible to purchase various subsets of the functionality. These are summarized in the table below.

Feature | Saxon-B | Saxon-SA
| all | SA001 (Full) | SA030 (XSLT) | SA040 (XQuery) | SA050 (Schema)
Basic XSLT | yes | yes | yes | yes | yes
Basic XQuery | yes | yes | yes | yes | yes
Schema-Aware XSLT | no | yes | yes | no | no
Schema-Aware XQuery | no | yes | no | yes | no
Schema Validation | no | yes | yes | yes | yes
Advanced Extension Functions (see Note 1) | no | yes | yes | yes | no
Advanced Optimizer (see Note 2) | no | yes | yes | yes | no
Serial Processing of Large Documents | no | yes | yes | no | no
Binary Document Storage (PTree) | no | yes | yes | yes | no

Note 1: Extension functions in this category include `saxon:try()`, which provides the ability to catch run-time errors; `saxon:function()` which provides higher-order functions; `saxon:analyze-string()` and `saxon:for-each-group()` which provide XQuery users with an equivalent to the `xsl:analyze-string` and `xsl:for-each-group` instructions in XSLT; and `saxon:index()` and `saxon:find()` which provide a "manual" indexing capability for XQuery, similar to the `xsl:key` construct in XSLT.

Note 2: Saxon-B always implements joins using a nested-loop strategy, which takes increasingly long as the documents become larger. Saxon-SA 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.

For some of these products, it is also possible for existing users to purchase an upgrade license.

For product prices, see the online store.

Next