<?xml-stylesheet href="../make-menu.xsl?cache=20260710" type="text/xsl"?>
<html>
    <head>
        <this-is section="products" page="why-saxon" subpage=""></this-is>
        <title>Saxonica: Why Saxon?</title>
        <meta name="title" content="Saxonica: Why Saxon?" />
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <meta name="description" content="the full range of Saxon products and features implementing four W3C defined languages on four technology platforms such as Java, .NET, Native, JavaScript" />
        <meta name="keywords" content="XSLT, XQuery, XSD, XPath, Java, .NET, Native, JavaScript" />
        <meta name="coverage" content="Worldwide" />
        <meta name="copyright" content="Copyright Saxonica Ltd" />
        <meta name="robots" content="follow" />

    </head>
    <body class="main">
        <h1>Why choose Saxon?</h1>
        <p>The Saxon-EE product includes within a single package:</p>
        <ul>
            <li>A schema-aware XSLT 3.0 processor</li>
            <li>A schema-aware XQuery 3.1 processor</li>
            <li>An XPath processor that can be called from applications written in Java, C#, C, C++,
                PHP, Python or JavaScript</li>
            <li>A free-standing XML Schema 1.1 validator</li>
        </ul>
        <p>The main Saxon product is written in 100% Java and therefore runs on any popular
            platform. SaxonCS for .NET and SaxonC for C/C++, PHP, and Python are produced by
            cross-compiling the code and adding custom APIs to further extend the range of platforms
            supported. SaxonJS provides a JavaScript XSLT processor enabling XSLT 3.0 code to run in
            the browser or Node.js.</p>
        <table class="support-table">
            <tr>
                <td><b>High performance and standards conformance</b></td>
                <td><p>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.</p></td>
            </tr>
            <tr>
                <td><b>XSLT 2.0 and 3.0 processing</b></td>
                <td><p>Many XSLT processors (for example the default processors that come bundled
                    with your web browser, or with Java, .NET, PHP, or Python) only support the XSLT 1.0
                    standard, which dates back to 1999. The web has moved on since then, and so has
                    XSLT, with the XSLT 2.0 specification published in 2007, and XSLT 3.0 following
                    in 2017.  Saxon has always been ahead of the pack in implementing new versions
                    of the W3C standards, as you would expect, given that Saxon's lead developer,
                    Michael Kay, was the editor of both the XSLT 2.0 and 3.0 specifications.</p>
                    <p>XSLT 2.0 and 3.0 offer order-of-magnitude improvements in functionality,
                        performance, and productivity compared with 1.0. Popular features introduced
                        in 2.0 include grouping capability, regular expressions for text processing,
                        date-and-time manipulation, and creation of multiple output files; while 3.0
                        brings support for processing JSON alongside XML. As a measure of the
                        increase in capability, the standard function library for XSLT 1.0 contains
                        just 36 functions, which increases to 126 in XSLT 2.0, and 215 in XSLT 3.0.
                        The new features added to the language not only make it possible to write
                        applications that would be inconceivable under XSLT 1.0 (an example would be
                        a stylesheet to render complex datasets graphically using SVG), but they
                        also make the code more compact, readable, and maintainable, all of which
                        improves developer productivity.</p>
                </td>
            </tr>
            <tr>
                <td><b>Additional features</b></td>
                <td><p>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.</p></td>
            </tr>
            <tr>
                <td><b>Java integration</b></td>
                <td><p>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.</p>
                <p>Saxon integrates with many popular Java XML libraries such as JDOM, DOM4J, XOM, and AXIOM.</p>
                </td>
            </tr>
            <tr>
                <td><b>XQuery processing</b></td>
                <td><p>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.</p>
                    <p>XQuery 3.1 is the latest version of the language, approved as a W3C
                        Recommendation in March 2017. This version makes XQuery (and also XPath and XSLT)
                into a full <b>functional programming language</b>, which means it is capable of
                being used for much larger and more complex applications, with a much higher level of
                reusability of code.</p></td>
            </tr>
            <tr>
                <td></td>
                <td><p><i>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.</i></p></td>
            </tr>
            <tr>
                <td><b>Schema processing</b></td>
                <td><p>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.</p></td>
            </tr>
            <tr>
                <td><b>XSLT in the browser</b></td>
                <td><p>When XSLT was first introduced, it was seen as the perfect way to gain the
                    full benefits of XML, separating content from presentation and allowing
                    information assets to be repurposed for different devices and different
                    audiences. The ideal place to perform device-specific processing is in the
                    device itself, so XSLT-in-the-browser was a natural fit. Unfortunately, though,
                    it took many years for all the browser vendors to reach an acceptable level of
                    XSLT 1.0 standards conformance, and by the time it happened, the web had moved
                    on from displaying static pages to fully interactive content delivery. The
                    SaxonJS product fills this gap. Written in JavaScript, it provides the full
                    capabilities of XSLT 3.0 in any modern browser, taking advantage of server-side
                    precompilation and optimization to prepare the code for fast execution. In
                    addition SaxonJS includes extensions to the XSLT language that enable fully
                    interactive applications to be written without dropping down into low-level
                    JavaScript event-handling code.</p></td>
            </tr>
        </table>
        <div id="fixed-aside">
            <h2>See also:</h2>
            <ul>
                <li>
                    <a class="title" href="../about/testimonials.xml">Client testimonials</a>
                </li>
                <li>
                    <a class="title" href="../technology/w3c.xml">W3C standards conformance
                        information</a>
                </li>
                <li>
                    <a class="title" href="../technology/questions.xml">Frequently asked questions section
                        for more about Saxon product functionality</a>
                </li>
            </ul>
        </div>
    </body>
</html>
