# What is Saxon?

The Saxon package is a collection of tools for processing XML documents. The main components are:

- An XSLT 2.0 processor, that can be used from the command line, or invoked from a Java application by use of the standard JAXP API. Saxon can be integrated with Java applications using the JAXP API, which means it is possible for a Java application to switch between different XSLT processors without changing the application code. As well as conforming closely with the XSLT 2.0 specification, Saxon offers a number of powerful extensions.

- An XPath 2.0 processor accessible via an API to Java applications.

- An XQuery 1.0 processor that can be used from the command line, or invoked from a Java application by use of an API.

- An XML Schema 1.0 processor. This can be used on its own to validate a schema for correctness, or to validate a source document against the definitions in a schema. It is also used to support the schema-aware functionality of the XSLT and XQuery processors.

So you can use Saxon to process XML by writing XSLT stylesheets, by writing XQuery queries, by writing Java applications, or by combinations of the approaches.

Saxon implements the XSLT 1.0 recommendation, including XPath 1.0, in its entirety. Saxon 8.0 also implements nearly all the features defined in the XSLT 2.0, XPath 2.0, and XQuery 1.0 working drafts. New features beyond XSLT 1.0 include:

- Support for multiple output files using `xsl:result-document`

- Full processing capability on temporary trees (previously known as result tree fragments)

- Support for sequences of nodes and simple values

- Grouping facilities

- Regular expression processing

- Support for new XPath constructs such as `if`, `for`, `some` and `every`

- Support for named collating sequences

- Many new functions and operators

- Support for new data types, such as dates, times, and durations

The small number of features not yet supported are listed on the Conformance page.

In addition, Saxon provides an extensive library of extension elements and extension functions, all implemented in conformance with the XSLT Recommendation to ensure that portable stylesheets can be written. These include the EXSLT extension libraries common, sets, math, and dates-and-times. Many of these extensions were pioneered in Saxon and have since become available in other products.

These extension functions are in general accessible from XQuery as well as XSLT, except where they depend on stylesheet information.

Saxon also provides an API allowing a Java application to execute XPath expressions and process the results. The XPath API is modelled on the proposed DOM Level 3 API, but adapted to the requirements of XPath 2.0. A separate API is available for XQuery 1.0, reflecting differences in the way the context is set up.

Expand | Next