diff --git a/trunk/schematron/code/README.md b/trunk/schematron/code/README.md new file mode 100644 index 0000000..1709392 --- /dev/null +++ b/trunk/schematron/code/README.md @@ -0,0 +1,96 @@ +# ISO SCHEMATRON 2010 + +XSLT implementation by Rick Jelliffe with assistance from members of Schematron-love-in maillist. + +## 2010-04-21 + +##### Two distributions are available. One is for XSLT1 engines. The other is for XSLT2 engines, such as SAXON 9. + + +This version of Schematron splits the process into a pipeline of several different XSLT stages. + +1) First, preprocess your Schematron schema with `iso_dsdl_include.xsl`. +This is a macro processor to assemble the schema from various parts. +If your schema is not in separate parts, you can skip this stage. +This stage also generates error messages for some common XPath syntax problems. + +2) Second, preprocess the output from stage 1 with `iso_abstract_expand.xsl`. +This is a macro processor to convert abstract patterns to real patterns. +If your schema does not use abstract patterns, you can skip this +stage. + +3) Third, compile the Schematron schema into an XSLT script. +This will typically use `iso_svrl_for_xslt1.xsl` or `iso_svrl_for_xslt2.xsl` +(which in turn invoke `iso_schematron_skeleton_for_xslt1.xsl` or `iso_schematron_skeleton_for_saxon.xsl`) +However, other "meta-stylesheets" are also in common use; the principle of operation is the same. +If your schema uses Schematron phases, supply these as command line/invocation parameters +to this process. + +4) Fourth, run the script generated by stage 3 against the document being validated. +If you are using the SVRL script, then the output of validation will be an XML document. +If your schema uses Schematron parameters, supply these as command line/invocation parameters +to this process. + + +The XSLT2 distribution also features several next generation features, +such as validating multiple documents. See the source code for details. + +Schematron assertions can be written in any language, of course; the file +`sch-messages-en.xhtml` contains the diagnostics messages from the XSLT2 skeleton +in English, and this can be used as template to localize the skeleton's +error messages. Note that typically programming errors in Schematron are XPath +errors, which requires localized messages from the XSLT engine. + +## ANT + +To give an example of how to process a document, here is a sample ANT task. + +```XML + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## Extracting Schematron from XSD or RELAX NG + + The following files allow extracting of embedded schematron patterns + in XML Schemas or RELAX NG schemas. For details, see the at + article http://www.topologi.com/resources/schtrn_xsd_paper.html + + The following files are provided: + +- `ExtractSchFromRNG.xsl` - Generate a Schematron schema from patterns embedded in a RELAX NG schema. The schema uses XSLT1. +- `ExtractSchFromXSD.xsl` - Generate a Schematron schema from patterns embedded in a W3C XML Schemas schema. The schema uses XSLT1. +- `ExtractSchFromRNG-2.xsl` - Generate a Schematron schema from patterns embedded in a RELAX NG schema. The schema uses XSLT2. +- `ExtractSchFromXSD-2.xsl` - Generate a Schematron schema from patterns embedded in a W3C XML Schemas schema. The schema uses XSLT2.