1. Two Types of XML Validation
  2. Usage and Features
  3. Overview
  4. Co-Constraints
  5. Cardinality
  6. Algorithmic Validation
  7. Assertions
  8. Diagnostics
  9. Namespaces
  10. Progressive Validation
  11. Dynamic Validation
  12. ISO Schematron
  13. Variables
  14. Using XPath 2.0
  15. Traceable Constraints
  16. Factoring Constraints
  17. Embedded vs Separate
  18. Include
  19. Abstract Patterns
  20. Abstract Rules
  21. Miscellaneous
  22. Naming Schemas
  23. Summary (Powerpoint)

I recommend viewing the tutorials using the Firefox browser.

George Bina has a nice Flash video of using Schematron in Oxygen XML.

Navigating the Tutorials

The tutorials are HTML documents. Some of them appear as slide shows. I am using S5 for this.

To move forward in the slide show click on your keyboard's right arrow key. To move backward, click on the left arrow key. Here are other ways to navigate the tutorials

Download the Tutorials

You can download the tutorials, including all the examples and lab exercises (zip file, about 1MB).

Contact Info

Roger Costello
202 Burlington Road
Bedford, MA, 01730-1420 U.S.A.


Schematron is an XML-based language for validating XML instance documents. Schematron is used to make assertions about data in an XML document. Schematron is used to express operational and business rules.

Schematron is an ISO standard.

Use Schematron to verify data interdependencies (co-constraints), check data cardinality, and perform algorithmic checks. A co-constraint is a dependency between data within an XML document or across XML documents. Cardinality refers to the presence or absence of data. An algorithmic check determines data validity by performing an algorithm on the data.

Invitation to Contribute

These tutorials teach the core concepts of Schematron. However, there are some aspects that are not covered, such as the use of abstract patterns, <report> versus <assert>, and performance of the different Schematron tools. I invite you to create a short tutorial on some aspect of Schematron and I will incorporate it here, and, of course, you will be acknowledged as the author. (Please format it as an S5 document)


I would like to thank George Cristian Bina for reviewing these tutorials. I would like to thank Rob Simmons for co-authoring a couple of the tutorials, and for keeping me focussed on objective facts. Also, I would like to thank Rick Jelliffe for his help explaining to me the proper use of Schematron, and for making all this possible (Rick is the creator of Schematron).

Book on Schematron

Eric van der Vlist has written an O'Reilly e-book on Schematron.

Another Tutorial

Dave Pawson has written a very fine Schematron Tutorial. Between his tutorial, Eric's book, and my tutorial you should have all the information you need!

Printing the Tutorials

This is a nice cover page.

Print this page using this print version.

The tutorials should be printed in Landscape orientation.

Change Log

Interested in seeing how this tutorial is evolving? See the change log.


Last Updated: January 1, 2008