This version: December 18, 2006
Editor:
NOTE: Schematron is now an ISO Standard . Schematron 1.5 users should consider moving over to Schematron 1.6 (which has variables and abstract patterns) in 2006 and to ISO Schematron (which has a different namespac) in 2007.

The Schematron is a language and toolkit for making assertions about patterns found in XML documents. It can be used as a friendly validation language and for automatically generating external annotation (links, RDF, perhaps Topic Maps). Because it uses paths rather than grammars, it can be used to assert many constraints that cannot be expressed by DTDs or XML Schemas.
Schematron 1.5 can be trivially implemented using XSLT in two stages.
A range of implementations are available for various situations:
Schematron can be used in any language for which there is an XSLT implementation available (e.g. FourThought's Python version of XSLT, Java, C++, Perl) and it is also possible to create a native implementation without using XSLT. Early versions were prototyped using OmniMark.
This document is a RDDL Resource Directory Description for Schematron 1.5, which is an XHTML document with special XLinks that locate various resources useful for Schematron, including schemas (Schematron, DTD, XML Schema).
The Schematron 1.5 spec
The well known URI for Schematron is http://www.ascc.net/xml/schematron.
http://www.ascc.net/xml/schematron is the namespace of the root
element of a schematron schema.
The original home page for Schematron at Academia Sinica. This page has details of various implementations.
The reference implementation is a software project based around skeleton1-5.xsl. It has been tried on 12 different and the test results are available on that page, togther with API documentation and samples of .BAT files for running the code with various XSLT processors.
Various tools include an error browser and a validator for interactive debugging in editors.
Schematron 1.5 tools are still being ported from 1.3. Some implementations at the Sinica site are pre-1.5 (see below). These are should be fine for schemas that just use patterns, rules, asserts, reports and names.
Schematron 1.3 software project and earlier tools and schemas
A Schematron Schema for Schematron 1.5. If possible, please use your own local or cached copy.
An XML Schema for Schematron 1.5. If possible, please use your own local or cached copy.
To help systems that do not understand RDDL, put the following attributes on the sch:schema element:
xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
xsi:schemaLocation="http://www.ascc.net/xml/schematron
http://www.ascc.net/xml/schematron/schematron1-5.xsd"
A DTD for Schematron1.5. If possible, please use your own local or cached copy.
We do not recommend using the DTD except for document creation, because some implementations of XSLT do not handle relative file location correctly.
If you are not using namespace prefixes, put the following document type declaration at the top of your schema (after any XML declaration and stylesheet declaration):
<!DOCTYPE schema PUBLIC "http://www.ascc.net/xml/schematron" "http://www.ascc.net/xml/schematron/schematron1-5.dtd">
If you
<!DOCTYPE sch:schema PUBLIC "http://www.ascc.net/xml/schematron" "http://www.ascc.net/xml/schematron/schematron1-5.dtd" [ <!ENTITY % sp "sch:"> ]>