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 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 original home page for Schematron at Academia Sinica. This page has details of various implementations.
We are planning to move Schematron to the Open Source collaborative site Source Forge in 2001.
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. The 1.5 version will also mark the start of the Source Forge open source website as the central location. The 1.5 Specifications, DTDs and Schema resources are not completely stable yet; they will be being upgraded over the next few weeks as feedback and features are improved.
Schematron 1.3 software project and earlier tools and schemas
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.
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:"> ]>