Good quote from Kurt Cagle on XML-DEV “Simplicity is good - it makes interoperability far easier. However, simplicity in one place usually comes at the expense of complexity somewhere else.”
The trick is to move the complexity to areas that only get programmed once: libraries and languages, I suppose. So that day-to-day work is done using the simple technologies.
This issue has come up in a way on the Schematron mail list (beta implementation of the ISO Schematron validator. Some people on the list don’t want the code to get too complex; certainly it is getting more complex than a minimal implementation needs, but it is not intended as a minimal implementation but a fairly complete framework. But I think it shows that, in order to be implemented for a broad range of serious uses, a Schematron-to-XSLT compiler is not a trivial or super-thin layer; as Kurt says, the simplicity of Schematron comes at the expense of the complexity of the compiler, which is exactly the way it should be, by and large.
The XML-DEV thread is about the W3C Technical Advisory Group’s The Rule of Least Power document, which in fact pretty much describes Schematron’s design approach. Rather than saying “Lets devise the perfect, most powerful constraint language”, Schematron says “Lets make a constraint language that presents declaratively the kind of constraints that people otherwise would have to use XSLT for, and abstract out all the XSLT machinery.”
So Schematron scores on the principle of least power (well, the principle of avoiding the most power, at least: Schematron still manages to be the most powerful schema language), but also on the other points in that TAG document: scalable (you can flip over to XSLT2 queries or even to XSLT if Schematron with the default XSLT1 runs out of steam) and usage of web technologies.