New release of ISO Schematron validator code

By Rick Jelliffe
July 30, 2008 | Comments: 1

I have put a new version of the ISO Schematron validator up at

It is marked as beta but I always do that. Barring unforeseens, this version
will become a final release. (Which does not mean there are not more plans!)

It includes full support for ISO Schematron including abstract patterns, as well as support for community-requested features on trial for the theupdated standard, in particular XSLT2 support.

There is a slightly change to the architecture: there are a series of preprocessors (macro processors) which handle includes and abstract patterns (several more are in the pipeline).In a future version for XSLT2, these will be merged into a single file.

The temporary locations are:

So the basic processing now looks like this:

xslt -stylesheet iso_dsdl_include.xsl theSchema.sch > theSchema1.sch
xslt -stylesheet iso_abstract_expand.xsl theSchema1.sch > theSchema2.sch
xslt -stylesheet iso_svrl.xsl theSchema2.sch > theSchema.xsl
xslt -stylesheet theSchema.xsl myDocument.xml > myResult.xml

This is slightly more complicated with the extra steps, however the benefit is clearer, more modular code, and compatability with XSLT1 and XSLT2.

One of the reasons for adopting this pipeline model is that I have extra stages under development: in particular to support a new attribute on assertions to use XSLT datatypes (see the blog entries on converting from XSD to Schematron) and to support the ISO DSDL Character Repertiore Definition Language standard.

Please let me know of bugs or fixes.

You might also be interested in:


I apologize for posting this here, but I've had trouble signing up for the Schematron mailing list and I haven't been able to find a method for feeding back through the schematron website. I've tried using this latest schematron implementation, but found that not of my xslt processors can compile iso_dsdl_include.xsl - I've used xsltproc on Cygwin, Red Hat, and the xslt Translator class in Java 1.5. Could it be that I'm missing something? This is the 1st error I receieve:

$ xsltproc iso_dsdl_include.xsl
XPath error : Invalid expression
$theDocument//*[@xml:id= $fragment-id | $theDocument/id( $fragment-id) | $theDocument//*[@id= $fragment-id ]
compilation error: file iso_dsdl_include.xsl line 136 element variable
XSLT-variable: Failed to compile the XPath expression '$theDocument//*[@xml:id=
$fragment-id ] | $theDocument/id( $fragment-id) | $
theDocument//*[@id= $fragment-id ]'.

Popular Topics


Or, visit our complete archives.

Recommended for You

Got a Question?