SAXONICA |
Saxon is distributed in two packages: Saxon-B and Saxon-SA. 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 product prices, see the online store.