Wendell Piez, Mulberry Technologies
Assertion-based schema language. A way to test XML documents. Rule-based validation language. Cool report generator. Good for capturing edge cases.
Same architecture as XSLT. (Schematron specifies, does not perform)
<schema xmlns="http://purl.cclc.org/dsdl/schematron"> <title>Check sections 12/07</title> <pattern id="section-check"> <rule context="section"> <assert test="title">This section has no title</assert> <report test="p">This section has paragraphs</report> ...
Demo. OxygenXML has support. Assert vs. Report – essentially opposites. Assert means “tell me if this if false”. Report means “tell me if this is true”.
“Almost as if Schematron is a harness for XPath testing.”
More examples:
<rule context="note"> <report test="ancestor::note">A note appears in a note. OK?</report> </rule>
Binding: Default is XSLT 1, but flexible enough to allow other query langauges via attribute @queryBinding at the top. Many processors allow mix-and-match between XSLT and Schematron. Examples showing just that.
Some tests can be very useful:
test=”every $line in tokenize(., $newline) satisfies string-length($line) le 72″
Q: What if the destination is not a human, but another part of a pipeline? Varies by implementation, but SVRL is standardized as an annex in the ISO spec, part of DSDL.
Use as little or as much as you want, at different times in the document lifecycle. “Schematron is a feather duster that reaches areas other schema languages cannot.” – Rick Jelliffe
As time permits section of the talk:
Other top-level elements: title, pattern, ns, let, p, include, phase, diagnostics.
-m