Rick Jelliffe has posted a beta implementation of ISO Schematron. Schematron is an XPath based schema language that focuses on assertions rather than grammars. It is liberal (anything not forbidden is permitted) where other languages are conservative (everything not permitted is forbidden). According to Jelliffe, this release:
is the successor to the "skeleton" XSLT meta-stylesheet implementation used widely for Schematron 1.5 and 1.6. It implements all of ISO Schematron (http://www.schematron.com) except "abstract patterns", which will be folded in this month or added using a pre-processor.
Oliver Becker's skeleton design provides an XSLT API for the output templates. So it is very easy to override the default templates and make your own customized validator, if you are an experienced XSLT programmer. Existing validators built using the old skeleton API will probably work unchanged with the new one.
The site also contains two new (beta) validators built on the skeleton. Schematron SVRL generates XML output, using the Schematron Validation Report Language that is Annex D of ISO Schematron. Schematron Terminator will terminate after the first error is found. Example scripts are on the site to show how you can validate a document using SVRL output, then use a further "testing" Schematron schema to look at the validation results and report their significance or set error codes.
Comments and testers are very welcome. The code is early beta (not recommended for republishing or commercial use:) and is being revised daily in response to feedback from the Schematron-love-in mail list
http://eccnet.eccnet.com/mailman/listinfo/schematron-love-inIt is open source, with a non-viral license.
I expect it will be tested enough for serious use by the beginning of February, but it will stay in beta status until:
- A small but full-coverage test suite has been created and passed
- The suite passes running over Saxon 8, Saxon 6, Xerces and MSXML engines
- The validator accepts the EXSLT and XSLT2 query bindings as well as XSLT1.
- Issues arising from user comments and feature requests are handled. (I have already gone back over about five years of feature requests and suggestions to improve the code.)
- Abstract patterns are implemented