Schematron QuickFix

Posted on March 2, 2017 by Rick Jelliffe

On the YouTube channel for the Schematron meeting at XML Prague 2017 is an update on Schematron QuickFix (SQF).   SWF is an extension layer on top of Schematron that lets you register one or more possible fixes that you can select: each fix is composed of various add, delete, replace and on operations.  The video gives an update and introduction, including some of the known projects and implementations.

Nico Kutscherauer, who came up with it, and Syncro’s Octavian Nadolu (who are the editors of the draft specification at W3C) seem to really get Schematron’s dont-get-in-the-way language design well and are taking the same approach in SQF, so that SQF has many of the same hallmarks: ust as with Schematron, you should be able to do most tasks with just a knowledge of simple XPath, but XSLT elements are available for complex tasks thus keeping the base language small and neat and implementable by a tiny team.

One audience comment was whether SQF should in fact be part of Schematron.  I think this is three questions:

1) Should SQF be the same namespace as Schematron?  I think no, on the grounds that Schematron has enough elements already, we don’t need to complicate the base language, and SQF is better as a layer.

2) Should SQF be part of the standard distribution of Schematron at GitHub?  I am not at all against this: it sounds a great idea. (I have looked through patents to see if there is any likely IP problem: there is an Open Innovation Network patent that looks like it covers SQF so I have no problem with distributing SQF as part of the skeleton implementation in the future.)  SQF is still in flux on some feature, so it is something to look at perhaps later in the year. For the while, I will check that there is a link on the Schematron GitHub site.

3) Should SQF be part of the ISO Standard for Schematron?  If you want it, lobby your local ISO JTC1 SC34 representative, or the ISO Schematron standard editor Andrew Sales (who helped organize the Schematron meeting.)  I doubt it would be considered until it was stable, and it may be that the W3C stamp and procedures are better for its intended users. And I am not sure it fits in with the rest of ISO Document Semantics and Description Languages (DSDL).  So that is a maybe.

There are some people in this world who do not think Schematron is all that. The typical criticism is that grammar-based schema languages provide better guidance as to what to do next: I agree politely, and point out that with Schematron messages you can give specific and ordered instructions about some missing thing or the possibilities in a location.  However, the same people who think getting grammar-dependent messages is important are often the same people who also have the (surely contradictory) position that custom validation messages are not important because the user never sees the XML only the developer. I would counter that users who don’t see the XML still have the information mediated by some application, in which case the error messages need to be expressed in terms of the application not the XML: the grammar is subatomic to the user.

So SQF gives a much better story: not only can Schematron detect non-regular structures, it can also do many kinds of fixes to them, including guided markup.