Talk:Saxon XSLT

Latest comment: 1 year ago by Barefootliam in topic Rewrite needed

Version HE 9.5.0.5 edit

I am currently using Saxon Version HE 9.5.0.5 which does not appear as a column in the featuers table. How does this version compare to those described in the feature table? Thanks! --Lbeaumont (talk) 02:44, 21 January 2013 (UTC)Reply

Saxon-HE replaced Saxon-B from release 9.2 on. (But there is no 9.5.0.5 - the current latest release is 9.4.0.6). I guess the page needs updating. However, there is a link to the features matrix published by Saxonica, which is a more authoritative source than Wikipedia! As developer of Saxon, I've tried to leave users to write this material rather than doing it myself, but I guess we need to try and ensure it's accurate. Mhkay (talk) 12:29, 21 January 2013 (UTC)Reply

Rewrite needed edit

The information presented here is becoming rather out of date and needs rewriting. As an interested party I'm a little reluctant to edit it directly, but I'm also reluctant to allow it to become out of date.

So could I suggest the following changes and ask someone who doesn't have a vested interest to verify the information and make the edits?

The article is rather dominated by describing versions and variants, and it does this in a rather unstructured way - it's a complex subject and difficult to present clearly. I think I would start by describing the current product line, and then have a history section describing how we got to where we are. Something like:

CURRENT PRODUCT LINE

There are two separate source bases: the Java source, and the Javascript source.

The Java source is used to generate products for three platforms: SaxonJ (for Java and other JVM languages such as Scala), SaxonCS (for C# and other .NET languages such as VB.NET), and SaxonC (with APIs for C, C++, Python, and PHP).

The Javascript source base is used to generate SaxonJS, which runs in the browser and under Node.js.

Products built from the Java source base implement the full W3C specifications for XSLT 3.0, XQuery 3.1, XPath 3.1, and XSD 1.1, plus vendor-specific extensions. The functionality is offered at three levels:

Home Edition offers the minimal level of standards conformance defined in the specifications, as an open-source product. Professional Edition adds vendor-specific functionality not required by the standards, for example a range of extension functions and serialisation options. Enterprise Edition adds advanced features (defined in the W3C standards as optional) including schema-awareness and streaming, as well as performance-related features such as multi-threaded execution and bytecode generation.

The SaxonCS product is built from the Java source base by means of a custom Java-to-C# transpiler written in XSLT (see https://markupuk.org/webhelp/index.html#ar04.html). As of April 2022, only the Enterprise Edition is offered on this platform. Prior to Saxon version 11, Saxonica offered a product for .NET Framework built from the Java source base using the now-obsolescent IKVM toolkit.

The SaxonC product is built from the Java source base (as of April 2022) using the now-defunct Excelsior JET technology. The developers have indicated (https://stackoverflow.com/questions/70989784/saxon-ee-java-in-a-graalvm-native-image) that they are exploring the use of GraalVM for a future replacement product.

The Javascript source base is used to generate products to run either on browser platforms or on Node.js. This product supports XSLT 3.0 and XPath 3.1 (but not XQuery or XSD). Typically with SaxonJS, compilation (static analysis) of stylesheets is done separately from run-time execution; this means that a compiled stylesheet can be hosted on a web server for execution in the browser, without needing to run the compiler itself on the client side. Two compilers are available: the SaxonJ compiler written in Java, and a separate compiler written primarily in XSLT. SaxonJS offers interactive extensions to the XSLT 3.0 language so that an XSLT stylesheet can be used not only for a one-off rendition of XML data into HTML presentation, but also to define how the HTML page should respond to user input events such as mouse clicks.

SaxonJS is available free of charge, but is not open source.

HISTORY

[ Could reference http://saxon.sourceforge.net/saxon6.4.3/history.html http://saxon.sourceforge.net/saxon6.4.3/changes5.html and http://saxon.sourceforge.net/saxon6.4.3/changes.html for authoritative information on the early history. More readable is the section on Saxon's history in the documentation at https://www.saxonica.com/documentation11/index.html#!about/historical ]

Here I suggest keeping a subset of the existing "Versions" section, perhaps as follows: (but might be more readable structured as a timeline?)

The original development phase of Saxon from 1998 to 2005 took it from version 1 to version 6.5.5. This was a series of XSLT 1.0 processors. This branch is no longer developed or maintained. These products were only available for the Java programming language. Version 7.0 (http://saxon.sourceforge.net/saxon7.0/index.html) released in December 2001, was the first of a series of releases that closely tracked the developing W3C XSLT and XPath standards (first 1.1, then 2.0). Version 7.6 in June 2003 (http://saxon.sourceforge.net/saxon7.7/changes.html) added support for the draft XQuery specification, and version 8.0 in June 2004 (https://markmail.org/thread/o4x2mvkrztgau3na) added XML Schema (XSD) support, including schema-aware XSLT and XQuery. This version (the first from the new Saxonica company) also introduced a repackaging as two products: an open source Saxon-B with basic functionality, and a commercial Saxon-SA product which added schema-aware processing. "Schema-Awareness" was a new feature in the XSLT 2.0 and XQuery 1.0 specifications. A processor that is "schema-aware" is able to use a W3C XML Schema to define the data types of the various elements in the source XML document(s). These data types can then be used in XPath 2.0 and XSLT 2.0 commands. A "basic" XSLT 2.0 processor is unable to use data typing information.

With the release of version 9.2 in August 2009, the packaging changed to create three versions: home edition (HE), professional edition (PE), and enterprise edition (EE). The home edition is open source and free, the other versions are available under commercial licenses. The renaming from SA to EE was done to emphasize that the commercial product by now included many additional features beyond schema awareness, including a more advanced optimizer and the capability for streamed processing of XSLT and XQuery, enabling very large source documents to be processed without correspondingly large amounts of memory.

The Saxon source code is written in Java. During 2005-6 M. David Peterson and others demonstrated that Saxon could be cross-compiled to run on .NET using the IKVM.NET cross-compiler. Their prototype was adopted by Saxonica and incorporated into the product line from the release of Saxon 8.7 in February 2006 (https://markmail.org/thread/s3ixskimawe2ahd6). The .NET version of the product omitted features specific to the Java platform (such as integration with JDOM, Dom4j, and XOM) and instead provided features to integrate with the XML processing capabilities of the .NET platform. The IKVM technology, however, failed to keep pace with the introduction of .NET Core, so from Saxon 11 in October 2021 (https://markmail.org/thread/fmgjcxul5vvrs7tc) the new SaxonCS product replaced it with use of a custom Java to C# source code transpiler.

In 2012, following a series of prototypes, Saxonica released Saxon Client Edition (Saxon-CE), a version of the product adapted to run within the browser environment. This was achieved by adapting the Java source code so that it can be cross-compiled to Javascript using the GWT cross-compiler produced by Google. Saxon-CE provided the first implementation of XSLT 2.0 running on the browser, and also extended the language so that rather than merely generating HTML, it can directly handle user interaction. In February 2016 Michael Kay announced that Saxonica was working on a replacement for Saxon-CE written in pure Javascript, and dubbed Saxon-JS; this product was released for browser platforms in February 2017, followed by a version for Node.js in June 2020.

FEATURES

The product line-up is now rather multi-dimensional so it's increasingly difficult to present this as a simple table. The approach we adopted in the product documentation at https://www.saxonica.com/products/feature-matrix-11.xml was the best we could come up with: but perhaps someone here could do better?

Mhkay (talk) 21:28, 17 April 2022 (UTC)Reply

I've started to redo the page using the information you've provided and the background i have. I'm thinking that a table of versions and dates would be useful to people, but that the specific feature list belongs on the Saxonica Web site.
The page also needs to give a little more context to how Saxon fits in, so i'll give that a go too. Barefootliam (talk) 18:40, 29 May 2022 (UTC)Reply