Schematron Ant Task

Installation and configuration

We should package it all in one jar file (schematron-ant.jar) so that it is just as simple as dropping the jar file in the Ant lib directory.

In other words, it should contain the Java classes and the required XSLT meta-template, so that there is no dependency on anything else.

It should not be trivial, it should be Monkey-proof!

The configuration of the XSLT transformer should be inherited from the JAXP properties.

Possible future extensions

They should allow the Ant task to:

References

How to write an Ant Task
http://ant.apache.org/manual/develop.html#writingowntask
http://ant.apache.org/manual/tutorial-writing-tasks.html

Schematron Ant Task

Description

This task checks that the XML are valid against a set of ISO Schematron constraints.
The task uses the XSLT transformer implementation provided by JAXP by default.

To use the schematron task, you must include a taskdef in your project file.

    <taskdef name="schematron" classname="com.topologi.ant.Schematron"/>
  

Alternatively, you can add the schematron task to your list of ant task definitions.

Parameters

Attribute Description Required
schema the path to the schematron schema file. Yes
file the file(s) you want to check. (optionally can use an embedded fileset) Only if no fileset is defined
phase the ISO Schematron phase to use (ignored if no phase was specified in the schema) No
queryLanguageBinding the expresion language or schema language version to use. values: "xslt" (default), "xslt2", "xpath" "xpath2", "1.5", "1.6", "old" No

Nested elements

A fileset Ant concept can be used in order to process a list of files.

Examples

        
  

Validates test.xml against the set of Schematron constraints in test.sch.

    <schematron schema="test.sch">
      <fileset dir="test" includes="**/*.xml"/>
    </schematron>
  

Validates all the XML files in the 'test' directory using the ISO Schematron constraints defined in test.sch.

    <schematron schema="test.sch" phase="critical">
      <fileset dir="test" includes="**/*.xml"/>
    </schematron>
  

Validates all the XML files in the 'test' directory using the ISO Schematron constraints defined in test.sch and specifying the phase critical

    <?xml version="1.0"?>
    <project name="SchematronExample" default="validate" basedir=".">
    
      <target name="validate">
        <taskdef name="schematron" classname="com.topologi.ant.SchematronTask"
                                      classpath="../lib/ant-schematron.jar"/>
        <schematron schema="test.sch">
          <fileset dir="xml" includes="**/*.xml"/>
        </schematron>
      </target>

   </project>
  

Complete example of a project validating files with Schematron.