Saxonica: Why Saxon?

Why choose Saxon?

The Saxon-EE product includes within a single package:

  • A schema-aware XSLT 3.0 processor
  • A schema-aware XQuery 3.1 processor
  • An XPath processor that can be called from Java applications
  • A free-standing XML Schema 1.1 validator.

Saxon is written in 100% Java and therefore runs on any popular platform. A ported version is available for .NET.

High performance and standards conformance

In the 15 years that Saxon has been available, it has established a reputation for fast performance, the highest level of conformance to the W3C specifications, excellent diagnostics, technical innovation, and responsive technical support direct from the developers.

XSLT 2.0 and 3.0 processing

XSLT 2.0 enables you to tackle more complex transformation problems, and makes many routine tasks vastly simpler. This makes experienced developers more productive, and enables new users to learn the language more quickly. Although Saxon is no longer the only product to implement the XSLT 2.0 specification, it remains the recognized leader.

The XSLT 3.0 specification is now approaching completion, and Saxon is again ahead of the field in providing an implementation of the new features. The main new capabilities are streaming, which enables processing of very large documents, and packaging, which allows large and complex stylesheets to be developed and distributed in a modular way. In addition, XSLT 3.0 provides features for processing JSON alongside XML.

Additional features

Saxon-EE completes the picture by offering the enterprise class features including an advanced optimizer, schema-awareness (giving improved productivity by detecting programming mistakes earlier and diagnosing them more accurately), streaming capability (needed for transforming large documents), bytecode generation for high performance, and improved integration facilities.

Java integration

The Saxon XSLT engine supports standard Java application programming interfaces, which means you only need to change a single environment variable to use Saxon in place of the processor bundled with your Java Development Kit. Many users have reported that this has speeded up applications tenfold.

Saxon integrates with many popular Java XML libraries such as JDOM, DOM4J, XOM, and AXIOM.

XQuery processing

Saxon also provides an XQuery 3.1 processor. This gives you a choice of languages supported by the same underlying engine. Saxon was the first product to offer XSLT and XQuery in an integrated package, allowing you to use each language for the things it does best. The two interfaces are complementary: for example you can write a function library in XQuery, and call the functions from your XSLT stylesheets. Saxon has established a reputation as the XQuery engine of choice, as shown by the number of vendors who are integrating it into their XML development environments.

XQuery 3.1 is the latest version of the language, currently in the final stages of approval as a W3C Recommendation. This version makes XQuery (and also XPath and XSLT) into a full functional programming language, which means it is capable of being used for much larger and more complex applications, with a much higher level of reusability of code.

A word of advice, though: Saxon is not an XML database. Users have successfully used Saxon to process XML datasets up to a gigabyte in size, but the product does not attempt to offer the kind of facilities associated with a traditional database, such as transactions, concurrency, and recovery.

Schema processing

Finally, Saxon-EE offers an alternative choice of XML Schema processor. Again, Saxon is in the lead implementing new W3C standards: its implementation of XML Schema 1.1 is now complete. This version removes many of the frustrations of the previous 1.0 version by adding features such as assertions and conditional type assignment. Users of XML Schema 1.1 report that they are achieving much higher data quality because of the increased ability to set precise validation criteria. The Saxon schema processor also emphasizes usability: since the main aim of schema validation is to detect errors in instance documents, the quality of the error reporting is paramount.