# 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 the JAXP 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 XSLT 2.0, XPath 2.0, and XQuery 1.0 as defined in the Candidate Recommendations of 3 November 2005. It also includes an implementation of the XML Schema 1.0 Recommendation.

New features in XSLT 2.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

Full details of Saxon's conformance to the specifications are provided in the Conformance section.

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. This API conforms to (and extends) the JAXP 1.3 API. A separate API is available for XQuery 1.0, reflecting differences in the way the context is set up. This is a Saxon-specific API, since there are no standards in this area yet.

Next