https://github.com/Schematron
This is basically the 2010 distribution from https://code.google.com/archive/p/schematron/. The XSLT1 skeleton code supports ISO Schematron 2006. The XSLT skeleton code also supports the features in ISO Schematron 2016. An updated version is in the works: as a first step, the issues list has been updated.
Features
- Open Source (OSI compliant zlib/libpng license or Apache License)
- Available for XSLT1 and XSLT2
- Trivially runnable in Java, .NET, C++, Bat files, XProc, etc. Ant task available.
- Stable: In continuous development from 1999 to 2010, 2013. (Watch this page for notice of developments starting again.)
- Extend with API or SVRL use XML output
- Tracks the ISO standard.
- Localized to Czech, Dutch, English, French and German.
Under the Hood
The ‘Skeleton’ implementation of ISO Schematron at Schematron.com is a four-stage XSLT pipeline. The first two stages are macro-processors and only necessary if expert features are being used. Your software will look after running this pipeline.
Here is a UML diagram from a real project, showing how Schematron was integrated using a commercial XSLT engine. (Note that there is lots of opportunity for caching of compiled schemas.)
The basic processing now like this, as a shell script or BAT file:
xslt -stylesheet iso_dsdl_include.xsl theSchema.sch > theSchema1.sch xslt -stylesheet iso_abstract_expand.xsl theSchema1.sch > theSchema2.sch xslt -stylesheet iso_svrl_for_xsltn.xsl theSchema2.sch > theSchema.xsl xslt -stylesheet theSchema.xsl myDocument.xml > myResult.xml
You can hook your own custom output code using the http://www.schematron.com/schematron-skeleton-api.htm API, however for most validation developers usually find the XML output files (in ISO Standard Schematron Validation Reporting Language SVRL) allows a more convenient fit into their XML-based tool chain.
See the following articles:
Resources
Some of these resources are out of sync with the latest version. As they are verified, they will be moved into the particular distributions.
- Other Validators built using this skeleton, in particular a validator producing ISO SVRL (Link broken)
- API documentation for the skeleton
- Universal Tests: a simple schema for testing implementations (Link broken)
- RELAX NG Schemas:
- ISO Schematron 2016
- ISO SVRL 2016