1. Setting up the environment

You must have Java 1.7 or later installed in order to run XML Calabash.

In addition to Java, you need a set of jar files on your classpath. At a minimum, you need to include the calabash.jar file and the jar files in the lib directory of the distribution.

Starting with version 1.1.0, XML Calabash has been broken into several modules:


Supports the Delta XML comparison step. You'll also need the commercial Delta XML jars and a license.

Available from http://github.com/ndw/xmlcalabash1-deltaxml.


Supports the ditaa drawing step.

Available from http://github.com/ndw/xmlcalabash1-ditaa.


Supports MathML to SVG conversions with the JEuclid renderer.

Available from http://github.com/ndw/xmlcalabash1-mathml-to-svg.


Supports the image metadata extractions step with the Metadata Extractor library.

Available from http://github.com/ndw/xmlcalabash1-metadata-extractor.


Supports the PlantUML drawing step.

Available from http://github.com/ndw/xmlcalabash1-plantuml.


Supports printing with XSL Formatting Objects or CSS. Support is included for XSL FO processing with FOP, AntennaHouse, or RenderX and CSS processing with AntennaHouse, or PrinceXML.

Printing with XML Calabash requires the libraries in this module in addition to any commercial libraries and licences required. (No additional libraries are required for FOP.)

Available from http://github.com/ndw/xmlcalabash1-print.


Supports the extension steps that can read, write, and query RDF.

Available from http://github.com/ndw/xmlcalabash1-rdf.


Supports the step that sends email.

Available from http://github.com/ndw/xmlcalabash1-sendmail.


Supports the MarkLogic XCC steps.

Available from http://github.com/ndw/xmlcalabash1-xcc.


Supports XML comparison with the XMLUnit library.

Available from http://github.com/ndw/xmlcalabash1-xmlunit.

To use any of these modules, simply download them (or get them through Maven) and place them on your classpath. No other configuration is necessary.

With the introduction of modules, XML Calabash version numbers move somewhat in the direction of semantic versioning. Modules with version numbers of the form 1.1.x are designed to work with XML Calabash version 1.1.x, modules with version numbers of the form 1.2.x with XML Calabash version 1.2.x, etc.