Download XML Calabash

The most recent release of XML Calabash is now maintained on the project's GitHub releases page. The information on this page is several years old and aging at the rate of 60 minutes/hour ever hour.

Releases are numbered 1.x.y-9z where 9z is indicative of the required Saxon version.

The .jar versions of the release come with an IzPack installer that you can run with java -jar calabash-1.x.y-9z.jar; the .zip versions are the same, they just don't include the installer.

Alternatively, you can get it through Maven. (It sometimes takes a few hours for releases to turn up there, if it's been longer than that, feel free to give me a nudge or file an issue.)

Recent changes

Changes in XML Calabash 1.2.5

XML Calabash 1.2.5 fixes a few bugs by applying a few pull requests. Thank you, contributors!

Changes in XML Calabash 1.2.4

XML Calabash 1.2.4 fixes a few bugs.

  • Improve XInclude processing by quickly checking for the presence of xi:include elements.

  • Fixed: #298 by improving the performance of tree copying. (The preceding fix was also an attempt to fix this error but it wasn’t enough.)

  • Fixed: #309 by ignoring an XProcException (as well as FileNotFound errors).

  • Fixed: #313 by working around a change in an underlying Saxon API.

Changes in XML Calabash 1.2.1—1.2.3

The 1.2.1, 1.2.2, and 1.2.3 releases were mostly about getting support for Saxon 10.x working. There were no functional changes.

Changes in XML Calabash 1.2.0

In previous releases, the mapping from step types to implementation classes was performed by searching the classpath for annotations. This is, in many respects, a clever and convenient solution. However, in some environments, changes to the class loader prevent this from working.

Given I’ve got no control over the class loaders used but I still want XML Calabash to work, I’ve adopted a properties file approach. Properties files named found on the classpath will be loaded for the mapping. See the default file for the syntax.

Changes in XML Calabash 1.1.30

Added an option to ignore invalid base URIs. (The underlying Saxon interface has become more pedantic about them.)

Changes in XML Calabash 1.1.29

The only feature in this release is a change to how extension functions are instantiated so that it’s possible to pass the processor context to them.

The other changes are all in the build system and dependencies. The version of Log4J was updated to address a vulnerability discovered in the logger.

Changes in XML Calabash 1.1.28

There was no 1.1.28 release.

Changes in XML Calabash 1.1.27

XML Calabash 1.1.27 continues to try to sort out various Saxon 9.9 incompatibilities.

  • Fixed: #290 by upgrading to more recent versions of the Apache HttpClient libraries. These libraries appear to force the content-disposition header to be “form-data”. If this causes anyone problems, please let me know.

  • Stopped attempting to parse the Java system file. It’s been removed in JDK9.

  • Issue #288 has been resolved by a combination of changes in XML Calabash and bug fixes in Saxon 9.9.

Changes in XML Calabash 1.1.26

The Maven release of 1.1.26 for Saxon 9.9 seems to have been mangled and it’s not clear that the bug I was trying to fix was adequately fixed.

Changes in XML Calabash 1.1.25

XML Calabash 1.1.25 is the first release to support Saxon 9.9. Several incompatibilities between XML Calabash and Saxon have been worked out. I think. You should not use Saxon 9.9.0-* or Saxon 9.9.1-1. You will get anomalous results in the areas of base URIs and namespaces. Saxon 9.9.1-2 or later is required.

Other changes in 1.1.25 are:

  • Fixed: #248 by correcting the library declaration.

  • Fixed #272 by encoding URL paths before attempting to resolve them (first patch, second patch).

  • Fixed bug with encodings, avoid deprecated method.

  • Added debug log message to identify which extension functions were loaded.

  • Use XML Resolver 1.0.1.

Changes in XML Calabash 1.1.24

XML Calabash 1.1.24 fixes a few bugs.

  • Added a cx:commonmark step

  • Fixed: #286 by using UUIDs for p:episode strings.

  • Fixed bug where missing classs-name attributes caused NPEs.

  • Fixed: #285 by making send-authorization work again

Changes in XML Calabash 1.1.23

XML Calabash 1.1.23 fixes a few bugs.

  • Fixed: #273 by making sure XInclude is completed before attempting to resolve pointers.

  • Fixed: #240 with #284. Make sure the runtime object is initialized.

  • Cleaned up the build script. Updated version of Jing.

Changes in XML Calabash 1.1.22

XML Calabash 1.1.22 fixes a few bugs.

  • Fixed issue #278 by making a successful report also raise an assertion.

  • Fixed issue #279 by making it an error to have sequence or kind on a p:input that is not being used to declare a port.

    Fixed issue #280 by switching from to

Changes in XML Calabash 1.1.21

XML Calabash 1.1.21 has a new extension step, p:hash-document. This step computes a hash of a document. It’s conceptually a combination of p:store and p:hash.

I have not created a Saxon 9.6 release for this version. I’m not saying I couldn’t, just that I haven’t. I’m testing the waters, as it were. Anyone care?

Changes in XML Calabash 1.1.20

XML Calabash 1.1.20 fixes two bugs.

  • Fixed issue #266 by more aggressively making sure that the Saxon Configuration has our entity and URI resolvers.

  • Fixed issue #270 by improving resolution of catalog files from the class path. Catalogs found in jar files are now converted into absolute URIs (should fix the Windows problem) and catalogs in directories on the classpath are now used (fixing an oversight).

XML Calabash 1.1.19 fixes a significant bug in p:xslt with Saxon 9.8 and introduces a new ‘show-messages’ option.

  • Fix bug in base URI handling of XSLT output in Saxon 9.8.

  • Added show-messages. If true, xsl:message output and schema validation output (and perhaps other things over time) will be written to stderr.

Changes in XML Calabash 1.1.18

XML Calabash 1.1.18 fixes a few bugs, including the awful bug where RELAX NG validation errors gave no information about the error.

  • Fixed issue #185 by manually applying the PR to provide better URI-to-File conversion.

  • Fixed issue #186 by manually applying the PR to make the system property function extensible.

  • Fixed issue #178 by manually applying the PR to report NPEs more explicitly.

  • Fixed issue #269 by manually applying the PR to support HTTP PATCH.

  • Fixed the awful bug where RELAX NG validation error reporting accidentally swallowed the actual error.

Changes in XML Calabash 1.1.17

XML Calabash 1.1.17 fixes a few bugs and adds support for Saxon 9.8.

  • Attempted to fix issue #265 by converting all of the dependent repositories to HTTPS. Doesn’t work on Travis CI for the “restlet” jars. Not sure what to do about that.

  • Reworked XProcURIResolver so that it can cache the first catalog resolver that it sees.

  • Attempted to work around base URI issues in Saxon 9.8. Unsuccessful: please upgrade to 1.1.19!

  • Only set a single cookie because cookies aren’t ordered.

  • Update to support the Saxon 9.8 APIs.

  • Replace deprecated calls to set whitespace stripping.

  • Add method for compatability with Saxon 9.8.

  • Fixed two tests for Saxon 9.8.

  • Fixed issue #256 by fixing a memory leak in cx:eval.

Changes in XML Calabash 1.1.16

XML Calabash 1.1.16 fixes a few bugs.

  • Fixed issue #229 by conditionally using ZipFile.

  • Fixed issue #257 by working around a bug in Zip entries.

  • Fixed issue #251 by not allowing non-WF XML in t:input/t:output.

  • Fixed issue #253 by testing for null in StepAvailable.

  • Fixed issue #252 by URI escaping the characters in the URI.

  • Fixed issue #249 by not masking the exception. (So a more useful exception is thrown.)

  • Improved charset handling in p:http-request.

Changes in XML Calabash 1.1.15

XML Calabash 1.1.15 fixes a few bugs.

  • Fixed issues #241 and #242. This corrects a bug where p:http-request would corrupt binary uploads. Also fixed a few lingering issues related to the Apache HTTP Client upgrade.

  • Replaced the deprecated CollectionResolver class with the CollectionFinder class. (In the Saxon 9.7 branch only.)

  • Fixed issue #247 by incorporating Florent’s fix: don’t reset the module URI resolver if it was set by the configurator.

  • (Re)fixed issue #220 in p:escape-markup.

Changes in XML Calabash 1.1.14

XML Calabash 1.1.14 uses a more recent version of the Apache HTTP Client. This required reworking some internals. The updated client will perform https: with sites using Let’s Encrypt certificates.

Changes in XML Calabash 1.1.13

XML Calabash 1.1.13 is the first release that attempts to support Saxon 9.7. There are no other changes from 1.1.12.

Changes in XML Calabash 1.1.12

The 1.1.12 release fixes the following issues.

Changes in XML Calabash 1.1.11

The 1.1.11 release fixes the following issues.

  • Fixed: issue #238 by adding support for @cx:message on steps.

  • Merge: PR 239 to fix OSGi Bundle-SymoblicName.

  • Merged the rest of PR 236 by hand. Attempting to fix something about Maven POM files. (This seems to have broken deployment to Maven.)

  • Merged: PR 221 to give default Sonatype username and password.

  • Fixed issue #233 by checking for null.

  • Fixed issue #234 by delaying file creation until runtime.

  • Fixed all sorts of JavaDoc problems.

  • Fix bug where nested xi:include elements were not detected as an error.

  • Perform XInclude fallback for unrecognized parse value.

  • Support barename xpointers in XInclude.

  • Attempt to handle missing/empty href as same-document reference in XInclude.

  • Fix bug where multiple xi:fallback elements were allowed if the include succeeded.

  • Check for invalid characters in accept and accept-language attributes in XInclude.

  • Test for invalid placement of xi:fallback elements.

  • Fixed bug where a null message was sometimes written in p:catch.

  • Fix POM to have transitive dependency on Closes #228.

Changes in XML Calabash 1.1.10

There was no 1.1.10 release due to build issues.

Changes in XML Calabash 1.1.9

The 1.1.9 release fixes the following issues.

  • Fixed bug where parameters got passed as string instead of untypedAtomic. (This caused problems, for example, when numeric values were passed to Schematron, XQuery, or XSLT).

Changes in XML Calabash 1.1.8

The 1.1.8 release fixes the following issues.

  • Added runMethod to to allow other applications running pipelines to catch exceptions.

  • Fixed issue #224 by adding --serialize command-line parameter.

  • Fixed: issue #226 by making the p: namespace implicit and removing the bogus source input.

Changes in XML Calabash 1.1.7

The 1.1.7 release fixes the following issues.

  • Updated CSS processor interface to allow stylesheet URIs.

Changes in XML Calabash 1.1.6

The 1.1.6 release fixes the following issues.

  • Fixed issue #223 by fixing the bug where the default namespace is accidentally inherited for the parameter name.

Changes in XML Calabash 1.1.5

The 1.1.5 release fixes a few bugs.

  • Fixed issue #222 by carefully serializing text content. This fixes the bug where text output from XSLT has escaped XML markup characters.

  • Fixed issues #216, #217 and #218 by decoding parameters correctly and handling the empty string case.

  • Fixed: issue #215 by making sure option scopes don't get commingled.

  • Reordered some code so that the report is written to the error output before we throw a failed assertion error; this way the error port in the catch has something useful!

  • Added to the list of dependencies (for some aspect of Saxon Unicode support).

Changes in XML Calabash 1.1.4

The 1.1.4 release uses a newer release of XML Resolver by default. It also fixes a few bugs.

  • Use XML Resolver 0.12.3. This release searches the classpath for a file and has a bootstrap resolver for catalog files that contain doctype declarations.

  • Fixed bug where System.exit() was being called even if the return code was zero. This had the consequence that if you integrated XML Calabash into your application by the cheap and cheerful expediency of calling main(), it'd terminate your app. Now it just returns if the return code is zero.

  • Fixed issue #212 by looking for both /catalog.xml and /META-INF/catalog.xml in jar files.

  • Not a code fix, but I did add a section to the reference guide about how to configure Java logging.

Changes in XML Calabash 1.1.3

There was no 1.1.3 release.

Changes in XML Calabash 1.1.2

The 1.1.2 release introduces a couple of new features: support for text results from p:xslt and p:xquery steps, support for XML catalog files in jar files, and adds some implementation features. It also fixes a few bugs.

  • Fixed issue #211 by adding an allow-text-results extension and turning text output into encoded XML that's decoded by p:store.

  • Fixed issue #210 by adding code to search JAR files for catalog.xml files and using them. Requires XML Resolver version 0.12.2 or later.

  • Fixed issue #208 by refactoring the initialization code; fixed issue #209 by moving the property changes to apply only to processors constructed by XML Calabash.

  • Fixed issue #187 by making sure a method name without a colon is always in no namespace

  • Fixed issue #201 by using the file.encoding system property or UTF-8 by default.

  • Added accessors to XProcURIResolver to obtain the underlying resolvers.

  • Did some cleanup with respect to outputs; removed some dead code, don't output the divider if there's only one document.

  • Added static step initialization. If a step implementation class has a static configureStep method, it will be called once during XML Calabash startup.

  • Updated notices.

  • Point explicitly to the 1.1.1 versions of extensions; Maven doesn't like '1+' versions.

Changes in XML Calabash 1.1.1

This release is just 1.1.0 repackaged a little.

Changes in XML Calabash 1.1.0

The 1.1.0 release officially introduces the “modular” version of XML Calabash. Several things are now implementedin separate modules. You can get these modules through Maven or from the releases pages for the following repositories:


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

Available from


Supports the ditaa drawing step.

Available from


Supports MathML to SVG conversions with the JEuclid renderer.

Available from


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

Available from


Supports the PlantUML drawing step.

Available from


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


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

Available from


Supports the step that sends email.

Available from


Supports the MarkLogic XCC steps.

Available from


Supports XML comparison with the XMLUnit library.

Available from

To use any of these modules, simply download them 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.

Changes in XML Calabash 1.0.32

XML Calabash 1.0.25 fixes a serious memory leak introduced in in the 1.0.20 timeframe. I also moved the cx:ditaa step to a separate repository.

  • Fixed issue #183 by fixing use of the RuntimeRegistry and making sure runtime.close is called appropriately.


    If you are using XML Calabash through its Java API, be sure that you call close on any XProcRuntime object that you create when you are finished with it.

  • Moved the DiTAA step to a separate extension repository.

Changes in XML Calabash 1.0.31

XML Calabash 1.0.31 is an experimental release. You probably want 1.0.25 unless you're interested in playing with the bleeding edge.

The 1.0.31 release is available for Saxon 9.5 and Saxon 9.6. The Saxon 9.6 release requires Saxon or later.

All of the changes in 1.0.31 are supposed to be “behind the scenes” with two exceptions:

  1. The Java version: I was willing to try to continue to support Java 1.6, but it hasn't turned out to be practical. So as of XML Calabash 1.0.30, Java 1.7 is required. Apologies if that's inconvienient.

  2. The MarkLogic XCC and RDF steps are now distributed separately. This reduces the size of the distribution by almost one third. And its an experiment in separately distributed extension steps.

The other changes should all be “behind the scenes”:

  • I've switched to Gradle for builds. This has had a couple of consequences:

    • Java 1.7 (because Gradle won't compile with 1.6 when there are dependent libraries that require 1.7; can't say that's entirely unreasonable).

    • The return of Maven distribution. I can make it work in Gradle. So there.

  • I've switched to a class annotation mechanism for finding step implementations. This should be invisible to ordinary users, but it means extension step authors can simply add an annotation to the step implementation class and XML Calabash will find the implementation if it's on the class path. It's no longer necessary to update XML Calabash's configuration XML. (Pipelines still need to provide a declaration for the step, of course.)

    This means that I've been able to divide XML Calabash's extension steps into separate projects. Some steps, for example the RDF steps, carry a lot of baggage (in terms of required libraries) which add significant bloat to the XML Calabash distribution even for the 99% of users who probably never use the RDF steps.

    It also means that extension steps can be installed more easily by tools like Jim Fuller’s Depify.

  • There's also an annotation for Saxon extension functions, so all you have to do is put them on your class path. I’ve repackaged the DocBook XSLT extension functions in this way.

The MarkLogic XCC steps for XML Calabash 1.0.31 are available on the releases page at GitHub or through Maven. Putting them on your class path is all all that should be necessary to make them work.

The RDF steps steps for XML Calabash 1.0.31 are available on the releases page at GitHub or through Maven. Putting them on your class path is all all that should be necessary to make them work.

Changes in XML Calabash 1.0.30

This version was never officially released.

Changes in XML Calabash 1.0.29

This version was never officially released.

Changes in XML Calabash 1.0.28

This version was never officially released.

Changes in XML Calabash 1.0.27

This version was never officially released.

Changes in XML Calabash 1.0.26

This version was never officially released.

Changes in XML Calabash 1.0.25

XML Calabash 1.0.25 updates support for XInclude 1.1 and adds a new cx:mathml-to-svg step.

  • Added cx:mathml-to-svg step (wrapper for the JEuclid converter).

  • Output the href value used on the p:store step as part of the debug message that traces step execution.

  • Log debug messages for step classes that cannot be instantiated.

  • Updated support for XInclude 1.1 to the 16 December 2014 draft.

  • Output debug message if FO processor class can't be instantiated.

Changes in XML Calabash 1.0.24

XML Calabash 1.0.24 fixes a bug and attempts to improve usability in some small ways.

  • Attempt to address issue #184 by providing more context for D0006 and D0007 errors (fixed and fixed).

  • Fixed (and fixed): issue #189 (and #190) by adding URI and line numbers to profile steps and outputing a profile step for calls to user-defined pipelines.

  • Fixed bug where Saxon 9.6 would refuse to run p:xslt steps that specified version="3.0" if SaxonHE was in use. Apparently, in Saxon 9.6 the HE processor will run (some?) 3.0 stylesheets.

Changes in XML Calabash 1.0.23

The only changes in XML Calabash 1.0.23 are support for Saxon 9.6 ( or later only) and a return to Java 1.6 for the distribution because several folks reported that using Java 1.7 was problematic. Using Java 1.6 is problematic too in that some of the supporting libraries are now compiled with Java 1.7, but they seem to work anyway.

Changes in XML Calabash 1.0.22

XML Calabash 1.0.22 was never actually released.

Changes in XML Calabash 1.0.21

XML Calabash 1.0.21 adds support for posting form data to Piperack, adds a couple of new drawing extension steps, and fixes a few bugs. This release is compiled with Java 1.7. If that's a problem, let me know.

  • Added cx:ditaa and cx:plantuml steps.

  • Support log attribute on cx:message to send message to the log instead of the console.

  • In the service of issue #176, support posting multipart/form-data to pipelines in Piperack. Also distribute the restlet jars necessary to parse forms. These jars seem to be compiled with Java 1.7; that's what motivated me to upgrade.

  • Fixed issue #155 (recursive delete fails).

  • Added a cx:trim extension attribute to trim leading and trailing whitespace from XIncluded text.

Changes in XML Calabash 1.0.20

XML Calabash 1.0.20 includes a rewrite of how logging is handled; I've switched to SLF4J and cleaned up a bunch of stuff. It also fixes a few bugs.

  • Enabled XInclude 1.1 processing by default. Fixed bug in XInclude processing where blindly copying the xml:base attribute messes up the base URI. Added an XInclude 1.1 testsuite test.

  • Converted to slf4j for logging (backed by log4j2 locally), added the testsuite so it can be run locally (for Travis CI). Moved: 'running' messages from trace level to debug level.

  • Fixed bug where runtime.close() is called when runtime hasn't been initialized.

  • Fixed: bug where same document references in file: URIs were being handled incorrectly.

  • First attempt to return something useful when a piperack pipeline fails.

  • Fixed issue #173; make sure piperack pipelines have a base URI. Fixed the same issue for loading pipeline libraries.

  • Accepted pull request #161 to close many potential resource leaks.

Changes in XML Calabash 1.0.19

XML Calabash 1.0.19 fixes a few bugs.

  • Fixed issue #175 by making sure that the base URI of a pipeline that comes from an input stream Input is specified (if the URI is known).

  • Fixed (part of) issue #158 by using the appropriate port serialization parameters instead of always using the parameters of the default port

  • Fixed issue #162 by making sure descendants (and attributes!) are copied correctly.

  • Fixed issue #171 by checking for a null input document.

  • Attempt to get some useful JUnit tests. Several are broken, but in particular, the test suite can now be run using JUnit.

  • Fixed issue #165 by using the error-list.xml file in the repository.

  • Tinkered with pom.xml (renamed) and added .travis.yml for

  • Replaced RelevantNodes with AxisNodes. This is an intentionally backwards-incompatible change, but it should only effect users who have written their own custom steps. If you were using RelevantNodes in your extension, it was probably not doing what you expected!

  • Added support for producing an AsciiDoc test report.

  • Fixed bug where the output format was being specified incorrectly in p:xsl-formatter.

  • Fixed bug where the output file wasn't being properly closed in p:xsl-formatter.

  • Restored the exception for attempting to get the directory listing of a file that isn't a directory.

  • Removed a bunch of stale test files.

  • Fixed issue #163 by encoding spaces as + and encoding + as %2B.

  • Attempted to clean up some issues with respect to content-type in p:data; maybe fixed bug #154?

  • Fixed some exceptions in FileDataStore.

  • Use URI.create instead of new URI (h/t to Björn Kautler).

  • Removed bogus .orig and .rej files

  • Added a cx:version attribute to the p:validate-with-xml-schema step so that you can request XSD 1.1.

  • Made failure to instantiate a requested extension function more obvious.

  • Made application/pdf the default content type for the CSS formatting extension step.

  • Fixed issue #157 by copying antlib.xml into jar file.

Changes in XML Calabash 1.0.18

XML Calabash 1.0.18 fixes a few bugs.

  • Fixed bug (reported by Oxygen) where using the API to write a document resulted in an attempt to write to a closed handle.

  • Fixed issue #153; don't reset the base URI if the override base URI is the empty string.

  • Support using the serializer for HTML; fixes issue #150. This is a new extension, “html-serializer”.

  • Fixed issue #152 by replacing thread local variable with (threadsafe) singleton registry.

Changes in XML Calabash 1.0.17

XML Calabash 1.0.17 fixes some bugs and adds a pxp:set-base-uri step.

  • Fixed issue #146, allow params to be passed to all Schematron phases.

  • Fixed issue #151, deal with content type correctly in piperack.

  • Updated to SaxonHE

  • Fixed issue #143 by refactoring the XPath expression compilation.

  • Fixed issues #144 and #145 by parsing the MIME data correctly and providing support for overriding the content type.

  • Tweaked build so that RDF steps are optional.

  • Fixed bug by making sure that the in-scope binding for the default namespace never plays a role evaluating the expression associated with a variable.

  • Protect against NPE when the error that p:catch catches doesn't supply an error code.

  • Improved the error message in matching steps by putting the offending exception in the message.

  • Fixed a few bugs in the file I/O abstraction layer.

  • Parameterized build for multiple versions of Java.

  • Fixed bug where an NPE happened when log.getParent() returned null.

  • Fixed issue #140 by making sure that if a saxon-configuration file is specified, the parser settings it contains trump any parser settings requested elsewhere. As a consequence, attempting to request an HE parser when your saxon configuration specifies an EE parser will mean you get an EE parser. Don't do that, if that's not what you want.

  • Fixed bug where, in the case where multiple steps are set on the command line, the implicit pipeline construction always fails.

  • Fixed issue #137 by making base URI and static base URI configurable for better integration into eXist.

  • Fixed issue #139; if a parameter wasn't initialized with a general value, create one from its string value.

  • Fixed bug in pxp:set-base-uri where the base URI of descendant nodes wasn't changed; refactored TreeWriter a bit.

  • Added a pxp:set-base-uri extension step.

  • Fixed issue #135 by removing bogus references to URI schemes.

  • Fixed issue #134 by supporting and com.xmlcalabash.log-style system properties and a log-style element in the configuration file

Changes in XML Calabash 1.0.16

XML Calabash 1.0.16 fixes a few bugs.

  • Give files extracted from a ZIP file distinct URIs by analogy with the jar: URI scheme; it's not perfect but it's probably better than giving them the URI of the pipeline document.

  • Fixed issue #133 by making pxp:zip sensitive to c:data/@encoding settings on the stored document.

  • Fixed issue #131 by using the Saxon unparsed text resolver if there isn't another one.

  • Fixed issue #130, correct typos in error-list.xml.

  • Added extension to store text documents with p:store.

Changes in XML Calabash 1.0.15

XML Calabash 1.0.15 introduces Piperack, adds some new RDF-related steps, and fixes a few bugs.

  • Fixed bug where top-level input ports were sometimes not correctly marked as primary.

  • Fixed: Initial checkin of 'Piperack' a RESTful web interface to pipelines. Subsequent commits not shown in this summary made a number of improvements.

  • Fixed bug where a pipeline without a base URI would cause an NPE. Don't attempt to set the base URI for pipelines that don't have one.

  • Apply patch for issue #124 to the saxon95 branch

  • Fixed issue #126 by making sure there's a finally clause to free the runtime stack frame; also make sure we call finish

  • Refactored RDF steps; added cx:rdf-load, cx:rdf-store, and cx:sparql.

  • Initial checkin of cx:rdfa step.

  • Hacked XInclude fragment identifiers. There's still room for improvement.

  • Fixed additional build warnings due to generics usage.

  • Updated compilerArgs; always build with -Xlint -Xlint:-serial

  • Fixed bug: call static method directly.

  • Fixed bug: use generics properly.

  • Fixed issue #125 by updating pom.xml by hand (marking Saxon optional).

  • Ported fix for issue #123 to saxon95 branch.

  • Merged pull request #123 from sharwell/gitignore-target

  • Reworked configuration with an eye towards issue #117. Missing jar files and other problems that prevent a class from being instantiated will now cause p:step-available to return false. There's also a static isAvailable method that steps can use for finer control.

  • Fixed issue #120 by making sure the default parameter input port is used by default.

  • Fixed a few issues with cx:metadata-extractor.

  • Fixed issue #121 by making sure the last captured exception is thrown after we run out of schemes

  • Merge branch 'maven-updates-saxon94' of into sharwell-maven-updates-saxon94

  • Merge branch 'maven-updates-saxon95' of into sharwell-maven-updates-saxon95

  • Hack XInclude to support fragid attribute (more work needed for proper XInclude 1.1 support)

  • Updated Maven build configuration.

  • Updated cx:metadata-extractor dependency to version 2.6.2.

Changes in XML Calabash 1.0.14

There is no spoon. XML Calabash 1.0.14 was never released.

Changes in XML Calabash 1.0.13

XML Calabash 1.0.13 adds support for cx:importing function libraries defined in XSLT. It also fixes a bug where multiple import statements didn't always work.

Changes in XML Calabash 1.0.12

XML Calabash 1.0.12 fixes a couple of bugs an introduces an experimental feature. It was never officially released.

  • Added a cx:import extension that can import XQuery functions that you can subsequently call in XPath expressions in XProc. Requires Saxon EE.

  • Added a cx:wait-for-update step that can wait for changes to web or local file resources.

  • Fixed issue #113 by accepting rdeltour’s pull request to fix the Maven stuff.

Changes in XML Calabash 1.0.11

XML Calabash 1.0.11 is mostly bug fixes.

  • Attempted to work around: issue #97 by dealing with exceptions that aren't caught by the error listener; its better but could probably still be improved.

  • Fixed issue #98; upgrade to Apache HttpClient 4.2.5; props to jamesrdf for the patches though I applied them manually and tinkered a bit.

  • Applied fixes outlined in issue #99; lots of extensions to the Ant task and a variety of code cleanups. Props to Vampire for the patches though I applied them manually and tinkered a bit.

  • Fixed issue #101; allow the XProcURIResolver to function as a Saxon XQuery ModuleURIResolver.

  • Fixed issue #102; allow sequences on p:try outputs.

  • Fixed issue #103; variables with no prefix are in no namespace regardless of the default namespace.

  • Fixed: issue #104 by adding source/target versions in the ant build file.

  • Fixed issue #107; make sure the prefix associated with an error code is declared.

  • Fixed issue #108 as suggested.

  • Be careful when copying attributes in XInclude (a feature of XInclude 1.1); if the attribute has already been copied from the xi:include element, don't copy it again from the target element.

  • Initial attempt to support Prince as a CSS formatter.

  • Compute Saxon version correctly, rearrange how the version message is printed so that the Saxon version can be included.

  • First attempt to setup a build process where the docs are in their own branch.

  • Attempt to fix Maven targets so that Saxon version is reflected in the artifact names.

Changes in XML Calabash 1.0.10

The principle motivation for version 1.0.10 is to support Saxon 9.5. It also fixes a few bugs. I bet I've forgotten to do whatever magic is required to make it available through Maven. Someone who cares remind me about that if I don't fix it in a day or two.

  • Attempt to support Saxon 9.5.

  • Attempt to work around issue #94: make sure the output-base-uri is handled correctly.

  • Fix issue #92: throw an XPathException not an XProcException because Saxon catches the former and not the latter.

  • Merge pull request for issue #91: tweaks to the Maven and OSGi build files. See also more fixes for same.

  • In theory, I fixed some documentation build issues, but I think the doc builds are still borked.

Changes in XML Calabash 1.0.9

Version 1.0.9 fixes a few bugs and, theoretically, can be downloaded via Maven.

  • Fixed issue #71: don't go trying to read the last modified time for documents on the source port.

  • Fixed issue #72: make sure that inline bindings take precedence over implicitly reading from stdin.

  • Fixed issue #75: make sure a null system identifier doesn't cause the resolver to NPE.

  • Fixed issue #80: don't automatically connect non-primary input ports to the default readable port.

  • Fixed issue #81: treat namespace nodes like attribute nodes.

  • Fixed issue #82: make sure that 'inner pipelines' in an cx:eval register extension functions with the correct context.

  • Fixed issue #84: removed memory leak.

  • Fixed issue #86: use ByteArray instead of String to convert XdmNodes to InputSources.

  • Fixed issue #86: amended fix to make sure the base URI is preserved.

  • Fixed issue #89: added auth-method option; if auth-method is basic, pre-emptive authentication will be attempted.

  • Fixed issue #90: removed apparently dead code that was attempting to prematurely resolve the URI; verified that jar: URIs still work.

  • Added support for profiling, the ability to get a report for the amount of time spent processing each step.

  • Fixed bug where profiling two pipelines with the same runtime caused an error.

  • Added javadoc target.

  • Fixed build problems caused by FOP 1.1 apparently having removed some useful constants.

  • Attempt to configure the build scripts so that Maven artifacts can be built and staged.

Changes in XML Calabash 1.0.8

Version 1.0.8 fixes a few small issues identified in 1.0.6 (which was quietly released a short time ago) and supports a more generic pair of compress/uncompress steps.

  • Fixed issue #32: support UnparsedTextURIResolver in the p:xslt step.

  • Fixed issue #51: if we have to create an XMLReader, make sure it's namespace aware.

  • Amend patch for issue #63: make sure an XProcException changes the exit status as well.

  • Fixed issue #64: added com.xmlcalabash.config.{global,user,local} system properties to control loading of configuration files.

  • Fixed issue #70: Tweaked the OSGi metadata.

  • Implemented pxp:compress and pxp:uncompress steps.

Changes in XML Calabash 1.0.7

Version 1.0.7 was never actually released. It is or would be the same as 1.0.8 except that I seem to have messed up the commit order or something and pushed at the wrong time. Mea culpa. Nothing to see here, move along to 1.0.8.

Changes in XML Calabash 1.0.6

  • Fixed issue #39: use STDIN by default if there's no binding for the pipeline's primary input port.

  • Fixed issue #52: enable preemptive authentication in the XCC steps.

  • Fixed issue #57: honor the fail-on-error option in the fileutils delete step.

  • Fixed issue #60: merged in support for the Ant task; also added Ant to the distribution as a convenience.

  • Fixed issue #62: add support for Saxon 9.4's ExtensionFunction interface.

  • Fixed issue #63: exit with a non-zero status if the pipeline throws an exception.

  • Fixed issue #66: let unknown URI schemes pass through to the resolver.

  • Fixed issue #67: fix the URI of documents from redirected p:http-request requests.

  • Fixed issue #68: make the TypeUtils class dynamic rather than static so that multiple Saxon processors can be used.

  • Fixed issue #69: stopping up another memory leak.

  • Added experimental support for serialization attributes on pxp:zip manifest c:entry elements.

Changes in XML Calabash 1.0.5

  • Fixed a memory leak caused by thread local variables. If you're writing your own apps/extensions that use XML Calabash, you must call XProcRuntime.close() when you're done with the runtime object.

Changes in XML Calabash 1.0.4

Version 1.0.4 is a sort of “checkpoint” release. After not having time to work on XML Calabash for many months, I found when I returned to it that several of the unit tests were failing. I decided to work through getting the unit tests back to 100% before attempting to address any other sorts of outstanding bugs or feature requests. Hopefully, I'll be able to get to some of those in short(er) order.

  • Fixed a typo in undeclare-prefixes; the serializer was ignoring that attribute due to the typo.

  • Updated the version of xmlresolver.jar in the lib directory. I fixed several significant errors in the caching code of XML Resolver.

  • Fixed some bugs in the handling of p:namespaces.

  • Handle MIME id, description, and disposition on single-part POSTs.

  • Fixed bug with file:/// URIs in p:log elements.

  • Updated Saxon HE in lib.

  • Fixed an issue with redirects and local resources.

  • Added EBNF sources and tweaked a few of the compact syntax extensions. I've largely abandoned pursuit of a compact syntax, at least for the time being.

Changes in XML Calabash 1.0.3

  • Attempted to clarify license terms.

  • Fixed issue #41: make sure an encoding attribute is added to c:data elements when unzip base64 decodes the data.

  • Fixed issue #47: make sure -Xxpointer-on-text is enabled for the docs build (but note that the docs probably still don't build correctly for you).

  • Merged pull request for issue #48: propagate the p:error input in the Java exception and reorganize code to make it easy to extend both classes.

  • Merged pull request for issue #44: fix incorrect type on “uri” attribute in the declaration for the pxf:move step.

  • Merged pull request for issue #37: use bnd to build XML Calabash as an OSGi bundle.

  • Fixed issue #35: avoid NPE in XSLFormatter.

  • Updated transparent-json documentation and examples per comments from Saašha Metsärantala.

  • Fixed issue #31: allow XSLT 3.0 stylesheets if Saxon PE or EE is being used; generally relax checking for XSLT version.

  • Fixed issue #30: update version numbers appropriately.

  • Added support for using an XSLT 1.0 processor for XSLT 1.0 stylesheets.

  • Make sure base URIs are passed down into unescaped markup in p:unescape-markup.

  • Attempt to make jar: URIs work correctly.

  • Fixed issue #28: make sure static base URI is set in XPath expressions.

Changes in XML Calabash 1.0.2

  • Fixed issue #28: make sure that the static base URI is available in XPath expressions.

  • Updated the extension library so that it contains all of the supported extension steps. Added the extension library URI to the reference documentation.

  • Fixed issue #26: support the recursive option on pxf:delete correctly.

  • Fixed issue #27: reworked namespace handling so that cx:namespace-delete works correctly.

  • Updated README, added notices for distributed libraries, improved documentation. Cleaned up the build system a bit. Added a (local) test suite for extension steps.

Changes in XML Calabash 1.0.1

  • Fixed a bug in serialization where some combinations of schema-valid/untyped documents weren't handled correctly. This release was never announced.

Changes in XML Calabash 1.0.0

  • Added explicit support for -v/--version option.

  • Documentation updates.

  • Fixed a build error that caused the manifest in the calabash.jar file to refer to the wrong directory.

Changes in XML Calabash 0.9.44

  • Refactored the parser so that recursive imports are now handled correctly.

  • Fixed bug where stdin was never closed in p:exec if the input was an empty sequence.

  • Fixed issue #25: make sure that cx:unzip and pxp:unzip are both configured.

Changes in XML Calabash 0.9.43

  • Fixed bug where underscores were improperly escaped in the “MarkLogic” flavor of JSON.

  • Introduced a fairly ugly hack to suppress XML parse errors when transparent JSON is enabled; parsing as JSON is part of the recovery so the error was premature.

  • Tweaked the build scripts so that IzPack is not required to build from sources.

Changes in XML Calabash 0.9.42

  • Added error handler in p:validate-with-xml-schema to make sure that validation errors are properly reported.

  • Fixed bug where attempts to create a PE or HE configuration sometimes silently failed and produced an HE configuration.

  • Fixed bug where variables were incorrectly identified as duplicated in the same scope.

  • Added cx:report-errors step.

  • Compile Schematron stylesheets in schema-aware mode if the document to be processed is typed.

  • Fixed bug in p:validate-with-schematron where a bad schema document caused a completely silent failure; now a useful error message is generated.

  • Added support for loading a Saxon configuration file; added cx:saxon-version and cx:saxon-edition system properties; documented configuration and system properties.

Changes in XML Calabash 0.9.41

  • Fixed issue #22: added support for new option to request the Saxon processor edition (independent of schema awareness).

  • Make sure that exactly one document is written to outputs that do not allow sequences.

  • Changed ReadablePipe/WritablePipe interfaces to support methods for interrogating whether or not sequences are allowed.

  • Attempted to improve StepErrorListener to present underlying error.

  • Added experimental cx:send-mail step.

  • Documented cx:depends-on attribute.

  • Fixed ValidateJing to allow the validator to report more than one error.

Changes in XML Calabash 0.9.40

  • Added text/json as a synonym for application/json.

  • Improve the error message associated with invalid p:inline content so that it includes the location of the error.

  • Resolved issue #21; add support for Saxon configuration properties in the confugration file.

  • Suppress stack traces on errors unless debugging is enabled.

Changes in XML Calabash 0.9.39

  • Fixed bug where namespace bindings on the label expression weren't provided when the expression was evaluated by p:label-elements.

Changes in XML Calabash 0.9.38

XML Calabash 0.9.38 was never announced.

  • Throw static error for missing option name, attempting to continue just generates an NPE anyway.

  • Support fail-on-error properly and fix typo in send-authorization for cxf:info.

  • Fixed bugs in cx:eval that caused the runtime to be copied incorrectly sometimes and incorrectly counted parameter input ports as primary.

  • Changed the format of the XProc configuration file to allow multiple QNames to be specified in a single implementation type.

  • Resolve issue #104, make sure calling extension functions in use-when doesn't cause an NPE.

  • Refactored serialization to use common code in S9apiUtils.

  • Removed bogus, out-of-date docs/ChangeLog and docs/BUGS files. Added some real documentation.

  • Added new system-property values to test for the presence of extensions.

  • Added non-conformant transparent-json extension that support five flavors of JSON transparently on http-request, store, document, and data.

  • Added cx:java-properties step.

  • Fixed bug where template reader in p:template wasn't getting reset.

  • Added support for charset parameter on cx:unzip.

Changes in XML Calabash 0.9.37

  • Refactored XML parsing code a bit to make sure that the appropriate URI and entity resolvers are used every time.

  • Attempted to fix problem where single-part HTTP POST/PUT bodies weren't decoded if they were base64 encoded in the c:body.

  • Added parameter support to the FOP implementation of p:xsl-formatter.

  • Added first attempt at reference documentation.

Changes in XML Calabash 0.9.36

  • Made the parser the default parser for text/html content. Use the “html-parser” configuration option to specify “tagsoup” if you prefer the old behavior:

    <cc:html-parser xmlns:cc=""
  • Fixed bug where UTF-8/URI encoded strings were not first decoded when writing output files. (Thanks to George Bina for the patch.)

  • Catch missing names on p:with-options. (Instead of raising NPE! Thanks also to George Bina.)

Changes in XML Calabash 0.9.35

  • Added cx:copy-attributes extension to p:xinclude; if true, namespace qualified attributes on the xi:include element are copied through to the root elements of the included content.

  • Added support for RFC 5147 fragment identifiers in XInclude when parse="text". This is not standards compliant, you must use the -Xxpointer-on-text extension option to enable XPointers on XInclude when parse=text. The 'extension' element in a config file can also be used to specify this extension.

  • Fixed issue #158; make sure cx:zip preserves entry order. (Patch by Romain Deltour).

  • Tweaked p:xslt so that it preserves the base URI of the input document across transformations.

  • Improved the p:xsl-formatter step when using the RenderX engine. Send progress messages through the XProcListener.

  • Fixed issue #129; pass Jing line/column numbers through the error handler.

  • Fixed issue #4; added getStep() to DefaultStep to return the underlying XAtomicStep.

  • Added a cx:pretty-print step. It serializes and reparses its input document to add line breaks and indentation.

  • Added a cx:css-formatter step. It uses the AntennaHouse engine to format XML with CSS.

  • Fixed issue #134; applied Romain Deltour's patch. Rearranged code to make it easier for subclasses to change how step implementations are maintained and created.

  • Various build system tweaks to make compilation without commercial libraries easier.

Changes in XML Calabash 0.9.34

  • Fixed issue #152; make sure that $var='value' isn't misinterpreted as a simple variable reference.

  • Fixed issue #142; don't send xsl:message output to STDERR. Send it to the logger at the “info” level.

  • Attempted to address issue #153; make the XProcRuntime objects in extension functions thread local.

  • Attempted to address issue #125; don't treat warnings as errors. Just because XProc doesn't have any recoverable warnings doesn't mean that steps don't!

  • Fixed the calculation of effective boolean values in p:when tests.

  • Moved all warnings “down” one level. This will make XML Calabash much less “chatty” in the default case.

  • Stripped out all the “phone home” stuff.

  • Reworked p:xsl-formatter support. Added an interface and an fo-processor configuration file item to specify the desired FO processor.

  • Added support for Apache FOP XSL FO formatter.

  • Added support for Antenna House XSL FO formatter.

  • Added Florent Georges' “configurers” patch. You can now configure many aspects of the processor without modifying the original sources.

  • Made sure extension attributes are processed on all elements; added hook for an XStep to get access to the underlying Step for access to extension attributes on descendants.

  • Cleaned up the build.xml code.

  • Fixed a bug in ml:adhoc-query declaration; source does not accept a sequence.

Changes in XML Calabash 0.9.33

  • Handle namespace bindings correctly in variables, options, and parameters.

  • Make sure parameter names are computed correctly: names without colons are always in no namespace.

  • Make sure extension attributes (e.g. cx:depends-on) are processed by compound steps.

Changes in XML Calabash 0.9.32

  • Support p:template as the name of the document template step. The name p:document-template will continue to work for a while, but you should begin migrating to the new name.

  • Attempted to fix issue #130; make sure that system-property works in use-when clauses.

  • Attempted to fix issue #137 by making sure that p:variable bindings contribute to the dependency calculations. (I'm amazed this went unnoticed for so long!)

  • Attempted to fix issue #138 by applying the patch to handle the STORED compression setting.

Changes in XML Calabash 0.9.31

  • Fixed a bug in p:document-template where top-level comments and PIs would cause an NPE.

  • Did a bunch of internal build changes to support easier installation.

  • Built with Java 1.5 to support integrators still dependent on that version of Java.

Changes in XML Calabash 0.9.30

  • XML Calabash now uses/requires Saxon 9.3. I've tested against though I expect other minor revisions to work as well.

Changes in XML Calabash 0.9.29

  • Updated p:document-template to support the most recent parsing rules.

  • Fixed several bugs in p:xinclude: implementation was so aggressive about loops that it didn't allow the same file to be included twice even when there wasn't a loop; fallback caused an NPE; and multiple XPointer schemes were parsed incorrectly.

  • Added support for application/json to p:unescape-markup. JSON is turned into XML per

  • Fixed bugs in p:store and p:document-sequence where sequences were not always detected (sequences are an error).

  • Fixed bug in p:viewport where the requirement that the step have a primary output was not always enforced.

  • Fixed bug where two namespace declarations were sometimes output for the default namespace.

  • Fixed bug where command-line output filenames were URI encoded. That caused problems on Windows at least.

  • Fixed bug in the test suite driver where multiple input files weren't supported in a test case.

Versions 0.9.25-28 were never officially released.

Changes in XML Calabash 0.9.24

  • Added support for p:in-scope-names and p:document-template per the (not yet officially published) working group changes. (These are implemented in advance of specification, partly to see if we got the specification right; if the spec changes, I'll change the implementation, so use them with a grain of salt.)

  • Fixed bug in p:validate-with-relaxng where it didn't handle assert-valid="false" correctly.

  • Changed p:parameters so that namespace="" is written on the result c:param elements when the parameter is in no namespace. This is consistent with the test suite, but I'm not sure that I think it's the right thing.

  • Fixed bugs in p:xinclude; nested parenthesis were not parsed correctly in XPointer expressions, nor where escaped characters.

  • Fixed bugs in p:choose and p:try, where XML Calabash incorrectly required all of the outputs to have the same “sequence” setting.

  • Fixed bug in p:library where exclude-inline-prefixes was not allowed.

Changes in XML Calabash 0.9.23

  • Fixed a bug in WritableDocument that broke outputting to file: scheme URIs.

  • A few documentation tweaks.

Changes in XML Calabash 0.9.22

  • Starting with 0.9.22, XML Calabash is distributed with an IzPack installer.

  • Attempted to fix issue #120 by throwing err:XS0038 if a step or port is missing on a p:pipe.

  • Attempted to fix issue #119 by using “-” instead of “_” in language codes (for compatibility with xml:lang.

  • Attempted to fix issue #118 by applying the supplied patch.

  • Attempted to fix issue #117 by applying the supplied patch.

  • Attempted to fix issue #116 by applying the supplied patch.

  • Attempted to fix issue #114 by making sure namespaces are handled properly by receivers.

  • Attempted to fix issue #112 by using URIUtils instead of simple substring for file: URIs.

  • Attempted to fix issue #111 (and I believe issue #93) by adding getter/setter methods for the XProcMessageListener to XProcRuntime.

  • Attempted to fix issue #103 by making (p:)use-when valid everywhere.

  • Attempted to fix issue #101 by not relying on the base URI to resolve a particular detail of module importing.

  • Attempted to fix issue #85 by reusing Saxon's version of the code to resolve URIs.

  • Detect the case where there are outputs in the “try” branch of a p:try but not in the “catch” branch.

  • Added a few more jars to the lib directory.

  • Improved the error message associated with a missing required option.

  • Added support for pxp:nvdl and pxp:unzip. (The namespaces, the underlying steps have been supported in XML Calabash's extension namesapce for a while.)

Changes in XML Calabash 0.9.21

  • Attempted to improve error messages.

  • Fixed bug where prefix and local-name were processed incorrectly if an explicit parameter port was given on the command line.

  • Added err: prefix to standard error QNames (printed for static and dynamic errors).

  • Added cx:metadata-extractor extension step; a thin shell around Drew Noakes' library of the same name.

  • In p:http-request, throw err:XD0006 if detailed=false and there's no response body.

  • In p:xinclude, fixed bug where, when a sequence of children is selected by an XPointer expression, sometimes all but the last member of the sequence would be lost.

  • Improved error detection for some errors including random text between elements.

  • As a consequence of how non-XML data is handled by XProc, the p:http-request step usually sends binary data with a content-transfer-encoding of base64. If the new cx:send-binary extension attribute is set to true, the step will decode and send the data as raw binary.

  • Fixed a bug where options would sometimes not get passed through to a called XProc step.

  • In p:http-request, added support for a distribution attribute on c:body (needed for sending form data; this isn't in the spec yet but that's an oversight that will be fixed).

  • In p:parameters, if there's no namespace, don't output a namespace attribute on the c:param.

  • In p:hash, make sure byte values are padded to two characters when converting the binary hash to a string.

  • In p:wrap, fixed a bug where namespace bindings weren't available in the group-adjacent expression and errors were silently ignored.

  • In p:validate-with-relax-ng, fixed a bug where base64 encoded compact syntax schemas were not decoded before attempting validation.

Changes in XML Calabash 0.9.20

  • Fixed a bug where p:error would throw an NPE.

  • Fixed a bug in processing match patterns where all but the last item of an unwrapped sequence was lost.

  • Removed trailing slash from the output of the cwd() extension function.

  • Fixed a bug where cx:eval didn't accept p:declare-step pipelines. Also fixed a bug where the environment wasn't managed correctly.

  • Added a new atomic extension step, cx:namespace-delete which can do dynamically what exclude-result-prefixes does statically.

  • Fixed a bug in p:add-attribute where attribute namespaces would get mangled when the match pattern matched more than one element

  • Fixed bugs in XInclude processing.

  • Fixed bug where serialization parameters from the configuration file were never used. They're now used if the pipeline doesn't specify any serialization options. It would probably be good to provide more control over serialization optins.

  • Applied a patch to p:hash to support the Amazon hmac algorithm.

  • Fixed a bug where documents with more than one top-level element were not detected as being not well-formed.

  • Fixed issue #106: exclude-inline-prefixes of ancestors ignored.

  • Fixed issue #107: p:label-elements didn't set context.

  • Added a new compound extension step, cx:until-unchanged which provides “iterate to a fixed point” functionality.

  • Fixed the names of anonymous steps to conform to the specification.

  • Fixed a bug where p:http-request would throw an NPE in some circumstances if the server did not provide a content-type header. Also fixed a content-type/charset bug.

  • Attempted to clean up the info messages. Still lots of work to do in the area of messages and error reporting.

  • Added a new feature to cxf:head and cxf:tail: if count is negative, remove that many lines. So if count=2 in cx:head, you get the first two lines of the file; if count=-2 you get all but the first to lines.

  • In cxf:info, if the property attributes are false, omit them entirely.

  • Improved the ml:adhoc-query and ml:insert-document steps to allow text and binary objects to be used.

  • Implemented cookie handling in p:http-request; added new steps cx:get-cookies and cx:set-cookies to allow pipeline authors to manage cookies.

  • Make sure that a newline is output after the last line when output is going to stdout.

  • Detect and report misspellings of cx:depends-on.

  • Fixed bug where variable bindings were not always evaluated in the correct order.

  • Fixed bug where the default base URI wasn't calculated correctly in p:make-absolute-uris.

  • Fixed bug where an XIncluded xi:include element wasn't expanded.

  • Fixed bug where p:namespace-rename didn't always force namespaced attributes to have a prefix.

Changes in XML Calabash 0.9.19

  • Fixed the bug where I botched parameter and option handling in the simple pipeline case.

  • Fixed the bug where XML Calabash failed to notice when a select attribute was incorrectly placed on a p:for-each step.

Changes in XML Calabash 0.9.18

  • Renamed the shortcut option for debugging, -d, to -D.

  • Added a -d/--data-input option for loading non-XML from the command line. This option performs the same logic as p:data, wrapping the non-XML in a c:data wrapper.

  • Fixed a couple of bugs in cx:eval. Added documentation to the website.

  • Reworked command line parsing to support simple, linear pipelines.

  • On the command-line, the prefix “p” is bound to the XProc namespace by default.

  • It is no longer possible to put a library in the XML Calabash configuration file. I don't think it's necessary with the changes I've made to way command line pipelines are processed.

Changes in XML Calabash 0.9.17

  • Attempted to fix issue #64: deal with character sets correctly.

  • Updated p:http-request to support multipart requests.

  • Reworked error handling so that all messages go through an ErrorListener. (This will make it easier to integrate XML Calabash into other tools.)

  • Reworked the logging code to go through the ErrorListener.

  • Added error-listener configuration property.

  • Fixed bug where failure to construct the XProcRuntime object caused an NPE when attempting to report the error.

  • Fixed issue #84: resolve-uri with a single argument should use the static base URI.

  • Fixed issue #83: make -S less paranoid.

  • Updated ValidateWithXSD to clear the schema cache if it's possible. You are strongly encouraged to use Saxon or later.

  • Added xmlunit.Compare step provided by Charles Foster.

  • Check for XSLT version correctly; force the XsltCompiler to perform a schema-aware compile if we're a schema-aware processor.

  • Fixed bugs in value-available; wasn't handling distinction between no declaration and no value correctly.

  • Support output-base-uri in p:xslt; handle the case where the primary result document is null.

  • Print a warning message if we ask for a schema aware processor but don't get one.

  • Implemented use-when.

  • Attempt to support XPointer framework links.

  • Fixed bug in p:label-elements where attributes weren't properly recognized.

Changes in XML Calabash 0.9.16

There was never an official release of 0.9.16.

Changes in XML Calabash 0.9.15

This release fixes a number of bugs and adds a few small (or incompletely implemented) features. It's likely to be the last release before I switch to Saxon 9.2 (HE).

  • Fixed issue #80: detect p:input/p:output elements that fail to specify a port.

  • Fixed bug where unencoded names in p:make-absolute-uris would cause IllegalArgumentException (e.g., from p:directory-list)

  • Fixed issue #72: applied patch to avoid NPE when no message is provided on an exception.

  • Support DELETE and preemptive authentication in p:http-request.

  • Added an extension attribute, cx:decode to p:store. If cx:decode=true and the input document is base64 encoded, decode it and store the binary result.

  • Catch error where more than one input document is passed to p:exec.

  • Throw err:XD0051 for content types other than 'text/html' and 'application/xml' on p:unescape-markup. This makes the test suite pass, but I'm not sure it's a good idea.

  • Added check for parameters in the “p:” namespace.

  • Allow both a document and parameter input port to be primary.

  • Catch non-whitespace text nodes in a step

  • Throw err:XD0027 for bad xpath-version.

  • Check for PSVI supported if PSVI support is requested.

  • Attempt to deal with empty parameter input bindings. This fix is incomplete and perhaps incorrect.

  • Make sure that the output settings are the same on both the p:group and p:catch on a p:try

  • If there's no binding for an input, and a default binding is available, use the default binding.

  • Make sure the encoding is specified for base64 encoded data on p:data.

  • Fixed issue #79: Don't fail if XProcRuntime has been extended.

  • Attempt to use Xerces in p:validate-with-xml-schema if SAXON-SA isn't available. Very crude and incomplete.

  • Use Common Logging not my custom nonsense.

  • Attempt to get the charset right in p:data.

  • Make bindings on options and parameters count as use for primary output ports.

Changes in XML Calabash 0.9.14

This release fixes a few bugs.

  • Fixed a bunch of bugs related to not detecting unbound primary output ports. This makes XML Calabash much fussier about such things, in accordance with the spec.

  • Fixed p:wrap so that it performs a “deep”, recursive wrap. Also fixed a number of bugs related to group-adjacent, especially with respect to comments, PIs and text nodes.

  • Fixed a bunch of bugs (but I fear not quite all of them) related to parameter handling.

  • Detect attempt to process an empty sequence with p:viewport.

  • Allow 0/1 as valid boolean values in serialization parameters.

  • The p:store step now creates the full path to the specified output file, if it can.

XML Calabash 0.9.13

Version 0.9.13 was never actually released.

Changes in XML Calabash 0.9.12

The only change in this release is the introduction of a feature that allows options, parameters, and variables to hold general XDM values.

Note that using this extension (-X general-values on the command line) makes XML Calabash a non-conforming implementation.

Changes in XML Calabash 0.9.11

This release is mostly bug fixes.

  • Fixed issue #59: make sure that the xml:base value on p:directory-list is encoded correctly on Windows.

  • Fixed or introduced bug: Never manufacture default outputs on p:declare-step.

  • Updated Schematron to the most recent ISO release.

  • Fixed bug: specifying a namespace on p:unescape-markup caused it to discard all attributes.

  • Fixed bug: make sure that p:variable declarations inside a p:for-each are evaluated correctly.

  • Fixed bug: in p:http-request, if detailed=true, always output a c:body.

  • Fixed bug: the output port of a p:viewport is always named "result"

  • Fixed bug: a mising content-type in p:http-request caused an NPE.

  • If the input to p:query is base64 encoded, decode it.

  • Make sure that variable references in select expressions are resolved.

  • Support cdata-section-elements in serialization.

  • Updated p:error to include output port.

  • Updated p:exec to support arg-separator

  • Added support for osutils extensions (experimental)

  • Extended support for fileutils extensions (experimental)

Changes in XML Calabash 0.9.10

This release is intended to implement the 28 May 2009 Candidate Recommendation draft.

  • Fixed issue #55: detect empty p:declare-step

  • Support arg-separator on p:exec.

  • Support p:value-available(). Attempt to deal correctly with unbound options; not sure I've got it exactly right.

  • Throw exception in “safe mode” if p:load attempts to load a file: URI.

  • Make sure filenames are properly percent-encoded in p:directory-list.

  • Improve error messages in p:http-request.

  • Fixed bug: reset error port when p:tryp:catch is nested in a loop.

  • Support making the output a sequence if any of the p:when/p:otherwise outputs is a sequence. Similarly for p:try/p:catch.

  • First (evolving, unstable) attempt at supporting the fileutils library.

Changes in XML Calabash 0.9.9

  • Use cache when resolving entities; so the output of a step can be used to satisfy an entity systemId.

  • Use Jing (instead of MSV) for p:validate-with-relaxng. You can now pass compact syntax schemas to the step.

  • Support dtd-id-idref-warnings on p:validate-with-relaxng.

  • Added cx:nvdl step.

  • Schemas passed to p:validate-with-xsd and cx:nvdl are cached so that they'll be used preferentially.

  • Fixed bug where p:rename couldn't reliably rename attributes if a different attribute with the target name already existed.

Changes in XML Calabash 0.9.8

  • Updated p:exec to support new signature from the latest editor's draft.

  • Added API entry point that allows caller to pass in their own Saxon Processor object.

  • Support dtd-validate on p:load.

  • Check for incompatible types in content-type and override-content-type in p:http-request.

  • Check that parameter names are NCNames and fixed bug in handling of %-encoded characters in p:www-form-urldecode.

  • Check that the root element of a pipeline is an allowed root element.

  • Fixed bugs in the handling of outputs in compound steps.

  • Pass p:xquery parameters to the query processor as external variables.

  • Handle multipart boundary correctly in p:http-request.

Changes in XML Calabash 0.9.7

  • Fixed bug that allowed ports explicitly marked primary="false" to sometimes become the default readable port.

  • Added new extension steps cx:uri-info and cx:eval.

  • Fixed bug that allowed err:XD001 to go undetected.

  • Fixed miscellaneous small bugs in p:http-request, p:exec, p:load, and p:xinclude.

  • Fixed bug that allowed err:XC0039 to go undetected on p:xslt.

  • Fixed bug where the content of parameter set inputs were not carefully checked.

  • Fixed bug where XML Calabash did not check carefully for the consistency of properties on inputs and outputs on the branches of a p:choose.

  • Fixed bug where options in no namespace were incorrectly assumed to be in the default namespace.

  • Fixed bug that allowed option types to go unchecked.

  • Fixed bug where text/* MIME types were interpreted as binary (base64) instead of text.

  • Made several improvements in error reporting (still a weakness in XML Calabash).

  • Support PUT and HEAD in p:http-request. Support GET on file: URIs.

  • Fixed bug where the auth-method option on p:http-request was not checked.

  • Fixed bug where the RunTestReport class did not detect cases where a test passed when it should have failed.

  • Fixed bug where an error in a pipeline library sometimes did not cause XML Calabash to abort execution.

  • Fixed bug in the processing of the "-b" command line option. It was just totally wrong.

  • Support p:import in p:library.

  • Remove reference to internal Sun class for Base64 encoding.

Changes in XML Calabash 0.9.6

In version 0.9.6, I've fixed a few bugs and added one new feature.

  • Improve how p:add-xml-base generates URIs when relative is true. I believe this resolves issue #31.

  • Support text/xml as an XML content type in p:http-request. I believe this resolves issue #33.

  • Support cx:timeout extension attribute on p:http-request. This specifies the number of miliseconds to use as the timeout value. I believe this resolves issue #34.

  • Recognize application/xml and text/xml content types in p:http-request even when they're followed by parameters. I believe this partially resolves issue #35.

  • Don't process the body of subpipelines declared with p:pipeline twice. I believe this resolves issue #39.

  • Implemented an extension: if the href option of p:document points to a directory, load all the XML files in that directory as a sequence. By default, it attempts to load all the files that match “^.*\.xml$”. You can use the cx:filemask extension attribute to change that regular expression.

  • Fixed bug where the output of the last step in a subpipeline was not considered read if it was read by one of its siblings (rather than its parent).

Changes in XML Calabash 0.9.5

In version 0.9.5, I've fixed a few bugs and added one new feature.

  • Support proxies through Java 1.5 ProxySelector. I believe this fixes issue #42.

  • Ignore select attributes when an explicit binding is given for a top-level pipeline input. (This flip-flops a previous fix based on Working Group decisions.) I believe this resolves issue #29.

  • Output c:header elements again. I believe this fixes issue #38.

  • Add support for different log styles for p:log output. The default is WRAPPED, what XML Calabash has always done. New possibilities are PLAIN (no wrappers, so the result of logging a sequence won't be a well-formed XML document), DIRECTORY (which writes each result to a separate document in the specified directory), and OFF (which suppresses all p:log output). I believe this fixes issue #12.

  • Don't re-read documents if we're in a loop; just reset so that we reuse the one we've loaded already. I believe this fixes issue #37.

Changes in XML Calabash 0.9.4

In version 0.9.4, I've totally rewritten the p:http-request step so that it uses the Apache HttpClient. This change allows the step to support cookies (e.g., for authentication) and other HTTP methods. As this is the first release after a major refactoring, things are likely to be a little rough around the edges.

  • Completely reworked p:http-request to use Apache HttpClient. As a result, the prerequisites have changed. I believe this fixes issue #7.

  • Fix bugs where p:unescape-markup didn't handle escaped, top-level sibling elements or leading comments and PIs.

  • Throw err:XS0032 if no p:xpath-context is specified and there's no default readable port (instead of throwing ArrayIndexOutOfBounds).

  • Fix bug where step options were treated as a set instead of a list (this sometimes caused dependencies to be missed).

  • Fixed issue #29; was ignoring select attribute on top level pipeline inputs.

  • Fixed issue #30; counting matches didn't do namespaces right.

Changes in XML Calabash 0.9.3

In version 0.9.3, I fixed a number of bugs and improved several aspects of error reporting.

  • Fixed bug: preserve parameter order in p:www-form-url-encode.

  • Fixed bug: handle comments and PIs correctly in p:string-replace.

  • Fixed bug: handle #all and #default in exclude-inline-prefixes.

  • Fixed bug: catch XPath syntax errors and report the correct error code.

  • Fixed bug: detect sequences sent to input ports on atomic steps where sequences are not allowed.

  • Fixed bug: return empty string when an unknown system property is requested.

  • Enhancement: added support for user-specified default serialization options in the configuration file.

  • Enhancement: improved several error messages.

  • Enhancement: made an unbound output port on a top level pipeline a warning instead of an error; defaults to /dev/null.

  • Fixed bug: catch XIncludes that include themselves; made sure that the underlying causes is correctly reported when xi:fallback fails.

  • Enhancement: improved error messages when processing throws an exception; suppress the stack trace unless debugging is enabled.

  • Enhancement: improved the quality of data sent when “phoning home”.

  • Fixed bug: pipe bindings in compound steps were sometimes incorrectly handled.

  • Fixed bug: make sure a QName without a prefix is always in no namespace.

  • Fixed bug: p:uuid was throwing err:XD0060 instead of err:XC0060 when an unsupported type was requested.

Changes in XML Calabash 0.9.2

In version 0.9.2, I fixed significant bugs in p:exec and cx:unzip in addition to a number of smaller fixes.

  • In cx:unzip, read the ZIP file as a stream so that ZIP files located on HTTP servers work.

  • Vastly improved p:exec. You know, so it works.

Changes in XML Calabash 0.9.1

In version 0.9.1, I fixed a bug and cleaned up a bit of debugging code.

  • Fixed bug where c:http-request content was incorrectly serialized as XML. Now it's only serialized as XML if the content type is “application/xml” or ends with “+xml”.

Changes in XML Calabash 0.9.0

In version 0.9.0, a few bugs have been fixed and the pxf:cwd extension function has been introduced.

  • Fixed several bugs related to base URIs. Attempt to assure that documents created by pipeline steps have appropriate base URIs. Attempt to make sure that the base URIs of nodes are preserved in processed documents.

  • Allow extension functions in p:input select expressions; throw the correct error for invalid selections.

  • Handle parameters passed to p:validate-with-schematron.

  • Require extension steps to be explicitly declared. You must now explicitly import if you want to use XML Calabash extension steps.

  • Added pxf:cwd() extension function, see EXProc Description.

  • Added support for exclude-inline-prefixes to configuration files.

  • Fixed p:wrap so that match="/" is supported.

Changes in XML Calabash 0.8.8

In version 0.8.8, a bunch of bugs have been fixed and there's now support for p:step-available(). Other notable changes include:

  • Fixed base URI bug in p:viewport.

  • Support p:step-available().

  • Updated error list (mapping from error codes to messages).

  • Support apply-to on p:namespace-rename

  • Completely reworked extension functions.

  • Fixed bug with select on p:for-each.

  • Fixed several bugs related to error codes.

  • Rewrote the code that supports configuration files.

  • Reworked how XProcRuntime and XProcConfiguration are initialized.

  • Try harder to make sure that we get ahold of the entityResolver hook when parsing documents.