<?xml-stylesheet href="../make-menu.xsl?cache=20250912" type="text/xsl"?>

<html>
    <head>
        <this-is section="products" page="index" folder="saxonjs" subpage=""></this-is>
        <title>Saxonica: SaxonJS product information</title>
        <meta name="title" content="Saxonica: SaxonJS product information" />
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <meta name="description" content="" />
        <meta name="keywords" content="XSLT, XQuery, XPath, Processor, XSD Schema, Saxonica, license, validator, XML, Saxon, EXPath, JavaScript" />
        <meta name="coverage" content="Worldwide" />
        <meta name="copyright" content="Copyright Saxonica Ltd" />
        <meta name="robots" content="index, follow" />
    </head>
    <body class="main">
        <h1>SaxonJS</h1>

        <div id="fixed-aside">
            <h2>On this page:</h2>
            <ul>
                <li>
                    <a href="#saxonjs3" class="title">What's new in SaxonJS 3?</a>
                </li>
                <li>
                    <a href="#new" class="title">What's new in SaxonJS 2?</a>
                </li>
                <li>
                    <a href="#releases" class="title">Releases</a>
                </li>
                <li>
                    <a href="#documentation" class="title">Documentation</a>
                </li>
                <li>
                    <a href="#examples" class="title">Sample applications</a>
                </li>
                <li>
                    <a href="#license" class="title">License</a>
                </li>
                <li>
                    <a href="#installation" class="title">Installation</a>
                </li>
                <li>
                    <a href="#support" class="title">Support</a>
                </li>
                <li>
                    <a href="#compatibility" class="title">Saxon-EE compatibility</a>
                </li>

            </ul>
            <h2>See also:</h2>
            <ul>
                <li>
                    <a href="../download/javascript.xml" class="title">Download page</a>
                </li>
                <li>
                    <a href="release-notes.xml" class="title">Release notes</a>
                </li>
                <li>
                    <a href="archive.xml" class="title">Archive page for SaxonJS 1 information</a>
                </li>
            </ul>
        </div>
        <p>
            <b>SaxonJS is a high-performance XSLT 3.0 processor that runs either in the browser, or
                on Node.js. It conforms with the latest W3C specifications (notably XSLT 3.0 and
                XPath 3.1), together with extensions designed to meet the needs of modern web
                applications.</b>
        </p>
        <p>SaxonJS works with JSON as well as XML, and is ideally suited for applications that need
            to handle both.</p>
        <ul>
            <li>In the <b>browser</b>, SaxonJS goes well beyond the traditional XSLT role of
                converting static XML content to HTML pages. By means of interactive XSLT
                extensions, it can deliver the rich user experience of a modern web application
                without the need for low-level JavaScript coding.</li>
            <li>On <b>Node.js</b>, SaxonJS provides the ideal vehicle for content publishing,
                taking full advantage of the high performance architecture that is making Node.js
                such a popular platform for sites that require high throughput and reliability.</li>
        </ul>
        <p>And by offering both client-side and server-side capability, SaxonJS allows you to reuse
            code between the two environments and deploy it in a flexible way for maximum
            performance.</p>
        
        <a id="download" class="anchor"></a>
        <!--<h2>Download</h2>-->
        <table class="buttons border" id="one-button">
            <tr class="buttons border">
                <td>
                    <a class="bodylink" href="../download/javascript.xml">
                        <div class="MainPageButton brown">DOWNLOAD</div>
                    </a>
                </td>
                <td>
                    <p>Download the latest SaxonJS releases from the JavaScript platform download
                        page.</p>
                </td>
            </tr>
        </table>
        
        <h3>Latest XML technologies</h3>
        <p>If you've used XSLT 1.0 and XPath 1.0 in the past, you'll find that the latest versions
            of the standards open up a new world. They now offer much richer data manipulation
            (grouping, regular expressions, date-and-time handling, URI manipulation), modern
            programming constructs such as higher order functions, and support for data formats
            other than XML, most notably JSON, plain text files, and HTML5. SaxonJS further extends
            this capability with support for asynchronous HTTP requests and handling of user
            interaction.</p>
        <h3>Invocation and serialization</h3>
        <p>SaxonJS can be invoked either from the Node.js command line, or from JavaScript code
            running either client-side or server-side. As well as allowing XSLT transformations to
            be scheduled, the API allows direct invocation of XPath expressions against DOM Nodes,
            allowing it to be used as a replacement for the aging XPath 1.0 engine bundled with the
            JavaScript DOM. It also provides a standalone serializer allowing the results of queries
            (whether coded in XPath or JavaScript) to be output as XML, HTML5, or JSON.</p>
        <a href="#top" class="top-of-page">
            <p>Return to top of page</p>
        </a>
        
        <a id="saxonjs3" class="anchor"></a>
        <h2>What's new in SaxonJS 3?</h2>
        
        <p>SaxonJS 3 is a major upgrade. The first beta releases in December 2024 and June 2025 are
            preview releases of the free Home Edition product, available on Node.js and the browser.
            An Enterprise Edition for Node.js with advanced features is also in the works.</p>
        
        <p>The most significant changes are:</p>
        <ul>
            <li>On Node.js, SaxonJS 3 is available in two editions: Home and Enterprise. The
                Enterprise Edition will provide advanced features, and requires a valid license.</li>
            <li>The IXSL extensions for asynchronous processing have been updated to be more
                promise-like; making this more extensible, and better integrated with JavaScript.</li>
            <li>New APIs are introduced enabling extension functions to be defined in JavaScript
                which can then be called directly from XPath.</li>
        </ul>
        
        <a href="#top" class="top-of-page">
            <p>Return to top of page</p>
        </a>

        

        <a id="new" class="anchor"></a>
        <h2>What's new in SaxonJS 2?</h2>

        <p>SaxonJS 2 is a major upgrade.</p>

        <p>The most noticeable differences are:</p>

        <ul>
            <li>It runs on Node.js as well as in the browser</li>
            <li>It comes with its own XSLT compiler, rather than relying on stylesheets being
                cross-compiled using the Java product</li>
        </ul>

        <p>There are many other enhancements. Some of the most important are:</p>

        <ul>
            <li>Improved conformance with the latest W3C Recommendations: full support for all the
                mandatory features and many of the optional features of XSLT 3.0 and XPath 3.1</li>
            <li>Support for higher-order functions</li>
            <li>Full implementation of the W3C Serialization standard</li>
            <li>Performance improvements (in areas such as result tree building, pattern matching,
                expression execution, and asynchronous resource access)</li>
            <li>Support for natural-language collations</li>
        </ul>

        <p>Although SaxonJS now has its own XSLT compiler and XPath parser, it is still possible to
            use it with code generated by the optimizing compiler in the Saxon-EE product.</p>

        <a href="#top" class="top-of-page">
            <p>Return to top of page</p>
        </a>

        <a id="releases" class="anchor"></a>
        <h2>Releases</h2>
        
        <p>
            <b>SaxonJS 3.0.0-beta2 released 2 June 2025, preview release for web browsers and Node.js.</b>
        </p>
        
        <p>SaxonJS 3.0.0-beta1 released 18 December 2024, preview release for web browsers and Node.js.</p>
        
        <p>
            <b>SaxonJS 2.7 released 17 October 2024, bug fixing maintenance release for web browsers and Node.js.</b>
        </p>
        
        <p>SaxonJS 2.6 released 13 October 2023, bug fixing maintenance release for web browsers and Node.js.</p>
        
        <p>SaxonJS 2.5 released 4 October 2022, bug fixing maintenance release for web browsers and Node.js.</p>
        
        <p>SaxonJS 2.4 released 12 May 2022, bug fixing maintenance release for web browsers and Node.js.</p>
        
        <p>SaxonJS 2.3 released 20 August 2021, bug fixing maintenance release for web browsers and Node.js.</p>
        
        <p>SaxonJS 2.2 released 11 May 2021, bug fixing maintenance release for web browsers and Node.js.</p>
        
        <p>SaxonJS 2.1 released 2 March 2021, bug fixing maintenance release for web browsers and Node.js.</p>

        <p>SaxonJS 2.0 released 12 June 2020, for web browsers and Node.js.</p>

        <p>For SaxonJS 2+, there are two XSLT-to-SEF (stylesheet export file) compilers available:
            the XJ compiler in Saxon-EE 10+, and the XX compiler integrated into SaxonJS 2+ for
            Node.js. XJ-compiled SEFs for SaxonJS 2 must be produced using Saxon-EE 10+, SEFs
            produced by earlier versions of Saxon-EE will not work with SaxonJS 2. To use all latest
            features for SaxonJS 3, XJ-compiled SEFs must be produced using Saxon-EE 12.5+.</p>

        <p>For information on earlier releases, go to <a href="archive.xml#releases" class="bodylink">Saxon-JS
                1 releases</a>.</p>

        <a id="notes" class="anchor"></a>
        <h3>Release notes</h3>
        <p>For detailed information on all SaxonJS releases, see the <a href="release-notes.xml"
                class="bodylink">Release notes</a>.</p>

        <a href="#top" class="top-of-page">
            <p>Return to top of page</p>
        </a>

        <a id="documentation" class="anchor"></a>
        <h2>Documentation</h2>

        <p>Full documentation is available for the latest versions of the product, SaxonJS 3 and 2,
            containing information about the 
            capabilities of the product, the different product components for Node.js and browsers,
            instructions for installing the product and writing applications, details of the API and
            how to run from the Node command line, and sample applications:</p>

        <ul>
            <li>
                <a class="bodylink"
                    href="https://www.saxonica.com/saxonjs/documentation3/index.html">SaxonJS 3 documentation</a>
            </li>
            <li>
                <a class="bodylink"
                    href="https://www.saxonica.com/saxonjs/documentation2/index.html">SaxonJS 2 documentation</a>
            </li>
        </ul>

        <a href="#top" class="top-of-page">
            <p>Return to top of page</p>
        </a>
        
        <a id="examples" class="anchor"></a>
        <h2>Examples and sample applications</h2>
        
        <p>The <a href="https://github.com/Saxonica/SaxonJS-Tutorial-2021" class="bodylink"
            target="_blank">SaxonJS tutorial</a>, presented at Declarative Amsterdam 2021, provides
            a hands-on introduction to getting started with SaxonJS, with plenty of exercises and
            code samples. Further examples of sample applications and demos are described in the <a
                class="bodylink"
                href="https://www.saxonica.com/saxonjs/documentation2/index.html#!samples">Samples</a>
            section of the SaxonJS documentation.</p>
        
        <p><a href="https://atomgraph.com/products/linkeddatahub/" class="bodylink"
            target="_blank">LinkedDataHub</a> is an open-source, RDF-native Knowledge Graph notebook
            developed by AtomGraph. All of its UI is rendered using XSLT 3.0 and IXSL, with SaxonJS
            in the browser. For more information, see the <a class="bodylink" target="_blank"
                href="https://atomgraph.github.io/LinkedDataHub/">LinkedDataHub project
                homepage</a>.</p>
        
        <a href="#top" class="top-of-page">
            <p>Return to top of page</p>
        </a>

        <a id="license" class="anchor"></a>
        <h2>License</h2>

        <p>SaxonJS is free of charge but not open source. Details of the license can be found in
            the <a class="bodylink"
                href="https://www.saxonica.com/saxonjs/documentation2/index.html#!conditions"
                >Licensing</a> section of the documentation.</p>

        <p>For enterprise users who want additional support, Saxonica provides a subscription
            service for an annual fee: see <a class="bodylink"
                href="https://www.saxonica.com/shop/shop.xml#!/SaxonJS-Enterprise-Services/p/224061038/category=0">SaxonJS
                Enterprise Services</a> in the Saxonica online store. As well as traditional
            support, this provides access to source code, add-on development and debugging tools,
            and (in due course) additional product functionality. Details of this service are
            provided in the <a href="https://www.saxonica.com/license/saxon-js-es-terms.pdf"
                target="_blank" class="bodylink">SaxonJS Enterprise
                Services product definition and licensing terms</a> (PDF).
            Please contact us by email to <email
                address="saxon-orders@saxonica.com" title="saxon-orders@saxonica.com"></email> if you would
            like more information.</p>

        <a href="#top" class="top-of-page">
            <p>Return to top of page</p>
        </a>

        <a id="installation" class="anchor"></a>
        <h2>Installation</h2>

        <p>SaxonJS for the browser is issued in the form of compressed JavaScript code that is
            mounted on your web server to be fetched and executed from HTML pages running in a web
            browser. The software is issued as a zip file that you will first need to unzip into
            your chosen location (the relevant section of your web server filestore). See the <a
                class="bodylink"
                href="https://www.saxonica.com/saxonjs/documentation/index.html#!starting/installing"
                >Installing and running client-side</a> page of the documentation for more
            details.</p>

        <p>Run <code>npm install saxon-js</code> to install SaxonJS 2 for Node.js, and <code>npm
                install xslt3</code> to install the command line interface. For further details see
                <a class="bodylink"
                href="https://www.saxonica.com/saxonjs/documentation2/index.html#!starting/installing-nodejs"
                >Installing and running in Node.js</a> in the SaxonJS 2 documentation.</p>
        
        <p>Run <code>npm install saxonjs-he</code> to install SaxonJS 3 for Node.js, and <code>npm
            install xslt3-he</code> to install the command line interface. For further details see
            <a class="bodylink"
                href="https://www.saxonica.com/saxonjs/documentation3/index.html#!starting/installing-nodejs"
                >Installing and running in Node.js</a> in the SaxonJS 3 documentation.</p>

        <a href="#top" class="top-of-page">
            <p>Return to top of page</p>
        </a>

        <a id="support" class="anchor"></a>
        <h2>Support</h2>

        <p>Please use the help forums and bug trackers in the <a class="bodylink" target="_blank"
                href="https://saxonica.plan.io/projects/saxon-js">SaxonJS project</a> at the
            Saxonica community site if you need help or advice.</p>

        <p>For more specialized advice, Saxonica may be able to offer consultancy.</p>

        <a href="#top" class="top-of-page">
            <p>Return to top of page</p>
        </a>
        
        <a id="compatibility" class="anchor"></a>
        <h2>Saxon-EE compatibility</h2>

        <p>The following table gives an overview of the compatibility between SaxonJS releases and
            the Saxon-EE version used to generate SEFs.</p>

        <p>In particular, note that from Saxon 10, SEFs generated for use with SaxonJS are in JSON
            format, and require SaxonJS 2. Saxon 9.9 and earlier produce SEFs in XML format, which
            will not work with SaxonJS 2.</p>
        
        <p>If using Saxon 11, please use 11.3 or later, as a number of bugs in compiling to SEF were
            fixed in the 11.3 maintenance release.</p>
        
        <p>To be able to use all the new features of SaxonJS 3, SEFs must be produced with Saxon-EE
            12.5 or later, specifying <code>-target:JS3</code> on the command line. Note that the
            preview release SaxonJS 3.0.0-beta1 only works with SEFs produced by Saxon-EE 12.5, and
            does not work with SEFs produced by 12.6 or later. SaxonJS 3.0.0-beta2 works with SEFs
            produced by Saxon-EE 12.6 or later.</p>

        <table class="feature-matrix" style="margin-left:40px;">
            <thead>
                <tr class="feature-heading">
                    <td>Saxon-EE</td>
                    <td colspan="8">SaxonJS</td>
                </tr>
                <tr class="feature-heading">
                    <td></td>
                    <td>1.0.0</td>
                    <td>1.0.1</td>
                    <td>1.0.2</td>
                    <td>1.1.0</td>
                    <td>1.2.0</td>
                    <td>2.0+</td>
                    <td>3.0.0-beta1</td>
                    <td>3.0.0-beta2+</td>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td style="text-align:left;">
                        <div>9.7.0.15+</div>
                    </td>
                    <td>
                        <p>&#x25cf;</p>
                    </td>
                    <td>
                        <p>*</p>
                    </td>
                    <td>
                        <p>*</p>
                    </td>
                    <td>
                        <p>*</p>
                    </td>
                    <td>
                        <p>*</p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                </tr>
                <tr>
                    <td style="text-align:left;">
                        <div>9.8.0.1+</div>
                    </td>
                    <td>
                        <p>&#x25cf;</p>
                    </td>
                    <td>
                        <p>&#x25cf;</p>
                    </td>
                    <td>
                        <p>&#x25cf;</p>
                    </td>
                    <td>
                        <p>*</p>
                    </td>
                    <td>
                        <p>*</p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                </tr>
                <tr>
                    <td style="text-align:left;">
                        <div>9.8.0.12+</div>
                    </td>
                    <td>
                        <p>&#x25cf;</p>
                    </td>
                    <td>
                        <p>&#x25cf;</p>
                    </td>
                    <td>
                        <p>&#x25cf;</p>
                    </td>
                    <td>
                        <p>&#x25cf;</p>
                    </td>
                    <td>
                        <p>&#x25cf;</p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                </tr>
                <tr>
                    <td style="text-align:left;">
                        <div>9.9.0.1+</div>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p>&#x25cf;</p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                </tr>
                <tr>
                    <td style="text-align:left;">
                        <div>10.0+</div>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p>&#x25cf;</p>
                    </td>
                    <td>
                        <p>*</p>
                    </td>
                    <td>
                        <p>*</p>
                    </td>
                </tr>
                <tr>
                    <td style="text-align:left;">
                        <div>11.3+</div>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p>&#x25cf;</p>
                    </td>
                    <td>
                        <p>*</p>
                    </td>
                    <td>
                        <p>*</p>
                    </td>
                </tr>
                <tr>
                    <td style="text-align:left;">
                        <div>12.0-12.4</div>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p>&#x25cf;</p>
                    </td>
                    <td>
                        <p>*</p>
                    </td>
                    <td>
                        <p>*</p>
                    </td>
                </tr>
                <tr>
                    <td style="text-align:left;">
                        <div>12.5</div>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p>&#x25cf;</p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                </tr>
                <tr>
                    <td style="text-align:left;">
                        <div>12.6+</div>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p>&#x25cf;</p>
                    </td>
                    <td>
                        <p></p>
                    </td>
                    <td>
                        <p>&#x25cf;</p>
                    </td>
                </tr>
            </tbody>
        </table>

        <p>&#x25cf; = all features of the SaxonJS release are available for SEFs generated by
            this version of Saxon-EE.</p>
        <p>* = SaxonJS can run SEFs generated by this Saxon-EE version, but not all of its features
            will be available.</p>
        <p>Otherwise, there is no guarantee that SEFs will work correctly with the SaxonJS
            release.</p>

        <a href="#top" class="top-of-page">
            <p>Return to top of page</p>
        </a>


        

        <h3>2 June 2025</h3>

    </body>
</html>
