Schematron is an ISO/IEC Standard.
  • ISO/IEC 19757-3:2006 Information technology -- Document Schema Definition Language (DSDL) -- Part 3: Rule-based validation -- Schematron
  • Available free at the ISO website
  • Royalty-free
  • Next version due 1Q2011!
Mature public implementation
  • Available free here at Schematron.com
  • 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.
  • In continuous development since 1999.
  • Extend with API or use XML output
  • Tracks the ISO standard.
  • Localized to Czech, Dutch, English, French and German.
Much tutorial material on the WWW
Uses by Government and International Agencies Adoption
Uses by Government and International Agencies (Europe)
Uses by Industry and Consortia
Used to enforce Naming and Design Rules or Methodologies
Community
  • The Schematron-Love-In mail list is a mail list dedicated to Schematron, hosted courtesy of eec.net. UPDATE: This list seems to be available again, after a period of dormancy in 2009, and its archives are available.
  • In the early 2000s, a different Schematron-Love-In mail list was hosted at sourceforge.net. This list is now closed due to spam but archives may be available. (Update: it seems to be accepting posts but should not be used.)
  • Most Schematron questions relate to XPath. The XSLT list at Mulberry is an excellent source of expertise.
  • Another source of expertise is the XML-DEV mail list.
  • For comments relating to the standard, use the dsdl-comment mail list at dsdl.org
  • NIEMatron is a blog for discussing Schematron and NIEM.
  • Rick Jelliffe's blog on O'Reilly.com often has Schematron-related articles.
Commercial Training


Software

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.

The basic processing now looks 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
    

Schematron Skeleton

2010-04-21 - Include preprocessor now reports some common XPath errors at compile time

2010-04-15 - Distibution now includes Dutch and Czech localization. Distribution now includes ISO Schematron versions of Eddie Robertsson's stylesheets for extracting embedded Schematron patterns from XSD and RELAX NG schemas.

Updated version of Schematron for Ant released (Java JAR file, beta). This allows ISO Schematron and Schematron 1.5 validation from an ANT task, with many options available.

2010-04-14 - The ISO Schematron here is now available as two distributions:

The distributions feature the new pipeline arrangement: Schematron validation now takes four XSLT stages, but they are all similar. 1) Process inclusions. 2) Process abstract patterns. 3) Compile the schema. 4) Validate.

I am moving to this distribution system, in order to make life easier for downloaders to figure out what is needed.

It includes full support for ISO Schematron including abstract patterns, as well as support for community-requested features on trial for the the updated standard, in particular XSLT2 support.

Enhancements in this version include features for smarter SVRL output, and parameters for better internationalization, and better integration with toolchains. As well there is better support for XSLT2 and the preprocessors to provide full support of ISO Schematron. (I believe it is a 100% coverage of the ISO standard now, but it also allows various experimental and requested extensions to gain experience for an updated version of the ISO Standard.)

Experimental: let expressions can contain element content directly as an alternative to the value attribute. This is more like XSLT, and allows factoring out of systematic data into lists: previously this could only be done by having an external document, which is overkill and cumbersome sometimes.

Please send comments and fixes. Implementers of metastylesheets should note that the skeleton API signatures have slightly changed: in particular, to support properties on rule, assert and report elements. Other metastylesheets are available elsewhere on this site. If you want to make your own meta-stylesheet or adapt one here, see this documentation.

2009-05-18 - minor fix of XSLT2 version needed for a certain XSLT engine (tunnel)

2009-02-19 - release

2009-02-25 - update to resolve XSLT1 variable scope issue

2009-03-18 - update for minor fix, + fr and de translations