The Schematroll (new mascot?)

The Schematron

An XML Structure Validation Language using
Patterns in Trees

The Schematron is a simple and powerful Structural Schema Language available now with an error-browser, interface for interactive debuggers, and tutorial !!!

Current version of this document: 2001-02-15

The current implementations include code for the extensions we are planning for v.1.3 for keys and namespaces.

If you want to contribute any schemas, please email
If you want to contribute any tutorial patterns, please email Dr Miloslav Nic [announcement]

Implementation and Rationale Notes

The Schematron represents a radical break from conventional schema language design:

There is a legitimate question: is this really a schema language or simply a validation language? Well, it is a schema language, but the subject of the schema is not the surface markup of elements, attributes and values, but rather the patterns that combine these. In other words, what we are defining through this schema language is cohesion rather than merely parent-child coupling.

Other background material can be found at

User Questions

Various people have made useful suggestions or reported problems.

Extensions In Schematron 1.5

See the page DTD and Schematron for details on the 1.5 version on Schematron which is prepared but not tested yet. The code for keys and namespaces is already out.

Related Material

Unrelated Material

I have been asked how Schematron relates to various other technologies. Schematron is used entirely to detect patterns in an XML document and to associate those patterns with various labels: text, role identifiers, etc. The two areas targeted for this are for document validation and for automated markup systems (where the former is considered a particular case of the latter, at heart). So it is targeted at usage schemas rather than definitional schemas. These definitional schema languages implement particular data-modeling paradigms (e.g., the data is a tree, the data is a table, the data is a particular kind of graph) while Schematron only takes the view that there are patterns that exist atop more regular structures. A definitional schema answers the question "what is this element or attribute or record?" while a usage schema answers the question "what constraints are imposed in this data by its context?"

Alternatives to Schematron?

Here are some alternatives to Schematron.

Copyright 1999,2000 (C) Rick Jelliffe, Academia Sinica Computing Centre, Taibei. The Schematron software and this page are available for any public use, under the conditions of the zlib/libpng license (the least restrictive), but please mention our names in any documentation or About screens for any products that uses it. Comments, fixes and upgrades welcome: email