David Maus

Release of SchXslt Schematron v1.5

I am pleased to announce the release of SchXslt 1.5, a modern XSLT-based Schematron processor.

You can download this version SchXslt from its project page. Developers using SchXslt in a Java-based project can add or update the Maven artifact to version 1.5.


Improved tracking of the context node

SchXslt groups patterns whose rules can run in a single XSLT mode using the xsl:next-match instruction. Version 1.5 of SchXslt improves the code that is used to track the context node in a chain of xsl:next-match calls such that it removes a call to generate-id() for every node matched by a rule.

Typed variables

SchXslt implements typed variables as outline in the Schematron Enhancement Proposal 1. A Schematron variable now has an optional as attribute with the same semantics as described in section 9.3 of the XSLT 2.0 and XSLT 3.0 specification respectively.

Structured Metadata about processors

The validation stylesheet and the SVRL report now contain structured metadata about the processor configuration. SchXslt uses striped RDF/XML to give information about the version of the XSLT processor, the version of SchXslt and any SchXslt compiler options. The RDF/XML adheres to the following grammar.

namespace dc = "http://purl.org/dc/elements/1.1/"namespace dct = "http://purl.org/dc/terms/"namespace rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"namespace skos = "http://www.w3.org/2004/02/skos/core#"namespace schxslt = "https://doi.org/10.5281/zenodo.1495494#"start =    element rdf:Description {        SchXsltProcessor | XsltProcessor    }SchXsltProcessor =    element dct:creator {        element dct:Agent {            element skos:prefLabel {                text            } &            element schxslt:schxslt.compile.typed-variables {                xsd:boolean            } &            empty        } &        empty    } &    element dct:created {        xsd:dateTime    } &    emptyXsltProcessor =    element dct:creator {        element dct:Agent {            element skos:prefLabel {                text            } &            empty        } &        empty    } &    element dct:created {        xsd:dataTime    } &    element dct:source {        SchXsltProcessor    } &    empty


The steps include, expand, and compile are integrated in a micro-pipeline such that a single stylesheet can be used to create the validation stylesheet. The pipeline stylesheets are called pipeline.xsl and pipeline-for-svrl.xsl respectively.

Build process

This version of SchXslt also marks a complete overhaul of the build process. The Ant step and the commandline validation tool have been merged to the main repository which is now set up as a Maven multi-module project. The XQuery modules for BaseX and eXist are moved to module subdirectories, too. Packaging SchXslt now creates the following artifacts:

Special thanks to Duncan Paterson who helped setting up the modular Maven project.

Fixed bugs