The more I think about it, the more that I think that the reason why Schematron (or something like it) will ultimately win (i.e. consolidate into a mainstream place as a schema language with broad vendor support) is that it fundamentally asks a different, and more important, question about documents than the grammar-based validators, such as DTDs and XSD. The question it asks is “What information does a schema need to provide to the user and application?”. And a related question “How do we group that information so that it can be sequenced to the user and application in some useful order?”, which is just as important when there is a large amount of information.

Contrast this with, say XSD, where the question gets morphed into “What canned outcomes can validation have, independent of the schema’s actual semantics and domain?” XSD is crippled in this regard because there is not enough guidance about the appinfo and documentation annotation elements: are they for human end-users, for schema management or what? They are wasted elements.

Now I guess underlying this is the idea that the central issue with building computer systems is ultimately how to relate information to humans in ways they will understand. (I want to use the dreaded word “empower” here, to my shame.) That includes developers, but developers are only the initial target group, not the only ones.