Technical details

This section provides information on the design of this application, which is implemented using XSLT 3.0 running in the browser under SaxonJS, plus a very small amount of Javascript (mainly to do highlighting of search terms).

The underlying documents are maintained largely in XHTML5 (plus a few custom extensions) throughout their lifecycle. The workflow is as follows:

  1. At publishing time, there is a complex set of XSLT stylesheets to assemble the XHTML5 text. Much of the narrative text is authored in XHTML5, but some parts (notably the specifications of function libraries, the definitions of configuration properties, and the Java and C# API documentation) are assembled from more structured XML sources. The publishing-time workflow is controlled using a Gradle build script. The workflow also includes validation, for example to check the integrity of links.
  2. At this stage, two versions of the text are created, one for delivery as static HTML pages, one for interactive delivery in the browser.
  3. The responsibility for formatting the text in the browser, and for handling interaction, is split between the browser and the SaxonJS XSLT stylesheets. Routine text rendition of static text is done using standard CSS; XSLT is used to handle more complex interactions such as maintaining of breadcrumbs, cross-section linking, and filtering of the change history section by topic and version history.

For details on the resource files that generate this application, see the next section: