Late last year, Schematron turned 10.
Over the last 10 years, Schematron has been one of those projects where there have only been nice people involved and good memories. No empires have been built and no corporations have used it for proxy battles for markets: it has chugged away in the shade of the Magnetic Grandiosity and survived on its merits alone. It has been very gratifying personally as well as professionally to pioneer this area. I get email regularly asking questions that show Schematron is used on many complex problems, and people can seem to muddle through using it. I almost only see references which are positive, and I am not aware of any projects where it has been a hindrance.
Some aspects of Schematron are now quite mainstream (the use of XPath assertions) while some have been resisted (the absolute centrality of communication with humans, the idea that that our documents are no longer self-contained but a web, the idea that schemas need to be parameterized, the idea of progressive or phased validation, that patterns are a better generalization than conventional 'types' for structural schemas, and so on.) But if they are good ideas they will surface sooner or later. It is not that good ideas always come out on top (i.e., that the status quo necessarily reflects the best) but I do think that good ideas are buoyant: they will keep trying to surface. (Why should I fret? If they didn't listen to Knuth talking about literate programming, why should anyone listen to me about what is largely the same thing? If I have fallen flat on my face, it is into the imprint of the faces of giants!)
Two things that have surprised me about Schematron. The first that the native implementations have not taken off: it seems that in fact the XSLT-based implementation is good enough for most uses. The second is that there has not been more academic interest in it: I think the move from grammars on sequences (e.g., regular expressions) to grammars on trees (e.g. tree-regular grammars) is interesting, but I would have expected the move to grammars on graphs (e.g., Schematron) would have sparked more interest. I think the future is still open for someone to do with Schematron what RELAX NG did with DTDs.
My XSLT1/XSLT2 -based FOSS implementations of ISO Schematron are now available at Schematron.com. The basic code has been maintained and used for 10 years now, so it should be quite mature and stable.
When I ported the code to support ISO Schematron (Schematron 1.5 is now obsolescent, please drop it if you are using it!), I marked the distributions as beta (and last year Candidate Release), which makes perhaps the longest gestation of any FOSS project! :-) My reason for still marking it as some kind of pre-release was merely to be responsible, given that it could be used for sensitive or mission-critical purposes. Over the years I have tried to take a hands-off approach, partly out of laziness, partly because of my health crises, and mainly to let it have its own life (since I am a fairly passionate if not combatative—though not combative&,mdash;person): this has kept it quite minimal, I think, and Schematron enjoys a pretty good reputation.
However, there have been no significant bugs reported for months or years, I put in a slightly better test or management regime, and I have added in the experimental features that I hope will be part of the new version of ISO Schematron. So it seems perverse to call it beta still.
The code has had many contributors over the years, many through the various incarnations of the Schematron-Love-In mail list. (This was up at SourceForge, then disappeared. Then we started another at ECC, but it has disappeared too.) In particular, it owes its design to Oliver Becker —Thanks Oliver!— and I'd also like to call out Dave Pawson for his support over the years. Dave has written a very good ISO Schematron tutorial. And the biggest thanks is to the people with the vision to support me over the years: Academia Sinica Computing Centre, Geotempo, Allette Systems and Topologi. And to Jimmy and Ali, on a personal level.