Here’s some of the recent news on ISO Schematron!
- My XSLT “skeleton” implementation (the latest version of the most commonly used version of Schematron) is available in beta from Schematron.com, as open source, non-viral. This version fully supports ISO Schematron (except for abstract patterns, for which a preprocessor has been contributed) and has a lot of input from members of the schematron-love-in maillist, it is shaping up nicely I think. (Notable contrabutions are from Ken Holman, Dave Pawson and Florent Georges.) A variety of different output formats are available as backends, including an ISO SVRL (Schematron Validation Report Language) XML format and a terminate-on-first-error backend.
- Topologi’s Ant Task for Schematron is available now in beta from Schematron.com. The code will be available as open source, non-viral. Thanks for Allette System’s Christophe Lauret and Willi Ekasalim for doing the programming on this. It can output text to standard error or collate all the SVRLs into a single XML file.
- Dave Pawson is writing a little online book ISO Schematron tutorial concentrating on using Schematron with XSLT2. I haven’t reviewed it thoroughly yet, but Dave has a good track record.
- Mitre’s Roger Costello written up two pages Usage and Features of Schematron and Best way to phrase the Schematron assertion text that seem pretty sensible to me. Roger followed his usual method of asking people on the XML-DEV maillist and compiling the results.
- Murata Makoto has been preparing the Japanese translation of ISO Schematron, to be used as the text for the Japanese Industrial Standard. He has also been translating other parts of ISO DSDL. The great thing about diligent translators such as Dr Murata and Dr Komachi is that they uncover many practical issues; in Schematron’s case there are a couple of paragraphs in the ISO standard that seem completely reasonable when you know what they are supposed to mean, but actually are pretty cryptic. Murata-san also has pointed out an improvement to the formal specification of Schematron in predicate logic. These are corrections not changes to the semantics, so they might be put through as a corrigendum (corrections procedure) at ISO; however, if the query binding for XSLT2 and EXLT becomes clear in the next month, I might just go for an addendum (a slightly different procedure) or newly dated version. (No existing stylesheets using the default bindings would become incorrect.) Of course, where a country’s national standards system works by adopting translations of international standards, it becomes really important to keep standards in synch: this requires both prompt action to correct problems in the original standard that the translation uncovers, as well as basic stability of the original standard: a moving target complicates life for translators and standardizers.


Thanks for this useful stuff.
How can I send feedback to Roger Costello the "Best way to phrase the Schematron assertion text"? (without subscribing to yet another dev list)
His summary says, "In the case where the Assertion Text is to be seen and used only by developers, alternative (a) may be appropriate: 1. The meeting's start time is before its end time."
I would add that, depending on how the assertion text is displayed, alternative (d), 'should', can be less confusing (even to developers) and thus safer. In a common case, violated assertions are presented in a validation report without any explicit indication that the assertions were violated. Thus if you have an assertion with text "The meeting's start time is before its end time" and this assertion is violated by the document under validation, the developer will see simply "The meeting's start time is before its end time", which is false. If the developer does not realize from the context that "these statements are false", the developer will be very confused (or else may assume that all is well and the document is valid). This is especially problematic if the assertion text is expressed in domain-oriented terms, whose correspondence to elements and attributes is not completely unambiguous.
The wording "The meeting's start time should be before its end time" is much less misleading in this situation. Even in a report that explicitly says, "The follow assertions were violated", the 'should' wording remains clear and accurate.
My 2c, from my experience using Schematron validation in a real-world project.
Rick,
I realize that an XSLT1 template should work fine in an XSLT2 processor, but I was wondering whether you or anyone has built a schematron processor specifically on XSLT2? I ask only because I suspect it'd be lexically cleaner and terser. If you don't know of any efforts underway to do that I my write one myself based upon your code, if that is all right with you.
Kurt Cagle
Kurt: I think Florent Georges has a variant that runs the compiler on XSLT2. The main difference is the namespace handling is one line rather than a couple of lines: no dummy attributes needed. If you are thinking of doing something, actually the the thing that I really would like to see is someone maintain Jing's Schematron stylesheet to bring it up to ISO Schematron. James used a different implementation technique than my one, and it would be great for Jing users.
Another thing to consider is how to combine Schematron, NVDL, DSRL and DTTL processing into one set of stylesheets. That is ultimately where things may head. Indeed, compiling RELAX NG into XSLT would be neat too, and usually possible.