Download XML Calabash
Releases are numbered
9z is indicative of the required
.jar versions of the release come with
an IzPack installer
that you can run with
java -jar calabash-1.
.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.)
Changes in XML Calabash 1.1.15
XML Calabash 1.1.15 fixes a few bugs.
Replaced the deprecated
CollectionResolverclass with the
CollectionFinderclass. (In the Saxon 9.7 branch only.)
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 all sorts of JavaDoc problems.
Fix bug where nested
xi:includeelements 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:fallbackelements 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
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
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.
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.
Changes in XML Calabash 1.1.5
The 1.1.5 release fixes a few bugs.
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!
com.ibm.icu:icu4j:49.1to 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
resolver.propertiesfile 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.
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:xquery steps, support
for XML catalog files in jar files, and adds some implementation features.
It also fixes a few bugs.
Added accessors to
XProcURIResolverto 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
configureStepmethod, it will be called once during XML Calabash startup.
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 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.
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 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.
modules with version numbers
of the form 1.2.
XML Calabash version 1.2.
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
to a separate repository.
If you are using XML Calabash through its Java API, be sure that you call
XProcRuntimeobject 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 126.96.36.199j or later.
All of the changes in 1.0.31 are supposed to be “behind the scenes” with two exceptions:
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.
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.
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
cx:mathml-to-svgstep (wrapper for the JEuclid converter).
Output the href value used on the
p:storestep 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.
Fixed bug where Saxon 9.6 would refuse to run
p:xsltsteps 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 (188.8.131.52j 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.
cx:messageto send message to the log instead of the console.
In the service of issue #176, support posting
multipart/form-datato 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.
cx:trimextension 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.
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.
Changes in XML Calabash 1.0.19
XML Calabash 1.0.19 fixes a few bugs.
Attempt to get some useful JUnit tests. Several are broken, but in particular, the test suite can now be run using JUnit.
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
RelevantNodesin 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
Fixed bug where the output file wasn't being properly closed in
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 some exceptions in
new URI(h/t to Björn Kautler).
cx:versionattribute to the
p:validate-with-xml-schemastep so that you can request XSD 1.1.
Made failure to instantiate a requested extension function more obvious.
application/pdfthe default content type for the CSS formatting extension step.
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.
Changes in XML Calabash 1.0.17
XML Calabash 1.0.17 fixes some bugs and adds a
Updated to SaxonHE 184.108.40.206.
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 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.
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.
Added extension to store text documents with
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.
Refactored RDF steps; added
Initial checkin of
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.
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-availableto return false. There's also a static
isAvailablemethod that steps can use for finer control.
Fixed a few issues with
Merge branch 'maven-updates-saxon94' of https://github.com/sharwell/xmlcalabash1 into sharwell-maven-updates-saxon94
Merge branch 'maven-updates-saxon95' of https://github.com/sharwell/xmlcalabash1 into sharwell-maven-updates-saxon95
Hack XInclude to support fragid attribute (more work needed for proper XInclude 1.1 support)
Updated Maven build configuration.
cx:metadata-extractordependency 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
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.
cx:importextension that can import XQuery functions that you can subsequently call in XPath expressions in XProc. Requires Saxon EE.
cx:wait-for-updatestep that can wait for changes to web or local file resources.
Changes in XML Calabash 1.0.11
XML Calabash 1.0.11 is mostly bug fixes.
Be careful when copying attributes in XInclude (a feature of XInclude 1.1); if the attribute has already been copied from the
xi:includeelement, don't copy it again from the target element.
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.
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.
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.
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.
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
Added experimental support for serialization attributes on
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
libdirectory. I fixed several significant errors in the caching code of XML Resolver.
Fixed some bugs in the handling of
Handle MIME id, description, and disposition on single-part POSTs.
Fixed bug with
Updated Saxon HE in
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.
transparent-jsondocumentation and examples per comments from Saašha Metsärantala.
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
Attempt to make
jar:URIs work correctly.
Changes in XML Calabash 1.0.2
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
Fixed a build error that caused the manifest in the
calabash.jarfile to refer to the wrong directory.
Changes in XML Calabash 0.9.44
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-schemato 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.
Compile Schematron stylesheets in schema-aware mode if the document to be processed is typed.
Fixed bug in
p:validate-with-schematronwhere a bad schema document caused a completely silent failure; now a useful error message is generated.
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.
WritablePipeinterfaces to support methods for interrogating whether or not sequences are allowed.
Attempted to improve
StepErrorListenerto present underlying error.
ValidateJingto allow the validator to report more than one error.
Changes in XML Calabash 0.9.40
text/jsonas a synonym for
Improve the error message associated with invalid
p:inlinecontent 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
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.
fail-on-errorproperly and fix typo in
Fixed bugs in
cx:evalthat 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
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:templatewasn't getting reset.
Added support for charset parameter on
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
Added parameter support to the FOP implementation of
Added first attempt at reference documentation.
Changes in XML Calabash 0.9.36
Made the http://validator.nu/ parser the default parser for
text/htmlcontent. Use the “
html-parser” configuration option to specify “
tagsoup” if you prefer the old behavior:
<cc:html-parser xmlns:cc="http://xmlcalabash.com/ns/configuration" value="tagsoup"/>
Fixed bug where UTF-8/URI encoded strings were not first decoded when writing output files. (Thanks to George Bina for the patch.)
p:with-options. (Instead of raising NPE! Thanks also to George Bina.)
Changes in XML Calabash 0.9.35
p:xinclude; if true, namespace qualified attributes on the
xi:includeelement 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-textextension 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:zippreserves entry order. (Patch by Romain Deltour).
p:xsltso that it preserves the base URI of the input document across transformations.
p:xsl-formatterstep when using the RenderX engine. Send progress messages through the
Fixed issue #129; pass Jing line/column numbers through the error handler.
Fixed issue #4; added
DefaultStepto return the underlying
cx:pretty-printstep. It serializes and reparses its input document to add line breaks and indentation.
cx:css-formatterstep. 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:messageoutput to STDERR. Send it to the logger at the “
Attempted to address issue #153; make the
XProcRuntimeobjects 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
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.
p:xsl-formattersupport. Added an interface and an
fo-processorconfiguration 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
XStepto get access to the underlying
Stepfor access to extension attributes on descendants.
Cleaned up the
Fixed a bug in
sourcedoes 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
p:templateas the name of the document template step. The name
p:document-templatewill continue to work for a while, but you should begin migrating to the new name.
Attempted to fix issue #130; make sure that
Attempted to fix issue #137 by making sure that
p:variablebindings 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
Changes in XML Calabash 0.9.31
Fixed a bug in
p:document-templatewhere 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 220.127.116.11 though I expect other minor revisions to work as well.
Changes in XML Calabash 0.9.29
p:document-templateto 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
p:unescape-markup. JSON is turned into XML per http://snelson.org.uk/archives/2008/02/parsing_json_in.php.
Fixed bugs in
p:document-sequencewhere sequences were not always detected (sequences are an error).
Fixed bug in
p:viewportwhere 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:document-templateper 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-relaxngwhere it didn't handle
namespace=""is written on the result
c:paramelements 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:try, where XML Calabash incorrectly required all of the outputs to have the same “sequence” setting.
Fixed bug in
exclude-inline-prefixeswas not allowed.
Changes in XML Calabash 0.9.23
Fixed a bug in
WritableDocumentthat broke outputting to
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
portis missing on a
Attempted to fix issue #119 by using “-” instead of “_” in language codes (for compatibility with
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
URIUtilsinstead of simple substring for
Attempted to fix issue #103 by making
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:trybut not in the “catch” branch.
Added a few more jars to the
Improved the error message associated with a missing required option.
Added support for
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.
err:prefix to standard error QNames (printed for static and dynamic errors).
cx:metadata-extractorextension step; a thin shell around Drew Noakes' library of the same name.
detailed=falseand there's no response body.
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-requeststep usually sends binary data with a content-transfer-encoding of base64. If the new
cx:send-binaryextension 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.
p:http-request, added support for a
c:body(needed for sending form data; this isn't in the spec yet but that's an oversight that will be fixed).
p:parameters, if there's no namespace, don't output a
namespaceattribute on the
p:hash, make sure byte values are padded to two characters when converting the binary hash to a string.
p:wrap, fixed a bug where namespace bindings weren't available in the
group-adjacentexpression and errors were silently ignored.
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:errorwould 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
Fixed a bug where
p:declare-steppipelines. Also fixed a bug where the environment wasn't managed correctly.
Added a new atomic extension step,
cx:namespace-deletewhich can do dynamically what exclude-result-prefixes does statically.
Fixed a bug in
p:add-attributewhere 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:hashto 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-elementsdidn't set context.
Added a new compound extension step,
cx:until-unchangedwhich provides “iterate to a fixed point” functionality.
Fixed the names of anonymous steps to conform to the specification.
Fixed a bug where
p:http-requestwould 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: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.
cxf:info, if the property attributes are false, omit them entirely.
ml:insert-documentsteps to allow text and binary objects to be used.
Implemented cookie handling in
p:http-request; added new steps
cx:set-cookiesto 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
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
Fixed bug where an XIncluded
xi:includeelement wasn't expanded.
Fixed bug where
p:namespace-renamedidn'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
selectattribute was incorrectly placed on a
Changes in XML Calabash 0.9.18
Renamed the shortcut option for debugging,
--data-inputoption for loading non-XML from the command line. This option performs the same logic as
p:data, wrapping the non-XML in a
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.
p:http-requestto 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 18.104.22.168 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.
Attempt to support XPointer framework links.
Fixed bug in
p:label-elementswhere 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:outputelements that fail to specify a port.
Fixed bug where unencoded names in
Fixed issue #72: applied patch to avoid NPE when no message is provided on an exception.
Support DELETE and preemptive authentication in
Added an extension attribute,
cx:decode=trueand the input document is base64 encoded, decode it and store the binary result.
Catch error where more than one input document is passed to
err:XD0051for 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 “
Allow both a document and parameter input port to be primary.
Catch non-whitespace text nodes in a step
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
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
Fixed issue #79: Don't fail if
XProcRuntimehas been extended.
Attempt to use Xerces in
p:validate-with-xml-schemaif SAXON-SA isn't available. Very crude and incomplete.
Use Common Logging not my custom nonsense.
Attempt to get the charset right in
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.
p:wrapso 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
Allow 0/1 as valid boolean values in serialization parameters.
p:storestep 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 (
on the command line) makes XML Calabash a non-conforming
Changes in XML Calabash 0.9.11
This release is mostly bug fixes.
Fixed issue #59: make sure that the
p:directory-listis encoded correctly on Windows.
Fixed or introduced bug: Never manufacture default outputs on
Updated Schematron to the most recent ISO release.
Fixed bug: specifying a namespace on
p:unescape-markupcaused it to discard all attributes.
Fixed bug: make sure that
p:variabledeclarations inside a
p:for-eachare evaluated correctly.
Fixed bug: in
detailed=true, always output a
Fixed bug: the output port of a
p:viewportis always named "
Fixed bug: a mising content-type in
p:http-requestcaused an NPE.
If the input to
p:queryis base64 encoded, decode it.
Make sure that variable references in select expressions are resolved.
Support cdata-section-elements in serialization.
p:errorto include output port.
p:execto 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:value-available(). Attempt to deal correctly with unbound options; not sure I've got it exactly right.
Throw exception in “safe mode” if
p:loadattempts to load a
Make sure filenames are properly percent-encoded in
Improve error messages in
Fixed bug: reset
p:catchis nested in a loop.
Support making the output a sequence if any of the
p:otherwiseoutputs is a sequence. Similarly for
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.
Schemas passed to
cx:nvdlare cached so that they'll be used preferentially.
Fixed bug where
p:renamecouldn't reliably rename attributes if a different attribute with the target name already existed.
Changes in XML Calabash 0.9.8
p:execto support new signature from the latest editor's draft.
Added API entry point that allows caller to pass in their own Saxon
Check for incompatible types in
Check that parameter names are NCNames and fixed bug in handling of %-encoded characters in
Check that the root element of a pipeline is an allowed root element.
Fixed bugs in the handling of outputs in compound steps.
p:xqueryparameters to the query processor as external variables.
Handle multipart boundary correctly in
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
Fixed bug that allowed err:XD001 to go undetected.
Fixed miscellaneous small bugs in
Fixed bug that allowed err:XC0039 to go undetected on
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
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
p:http-requestwas not checked.
Fixed bug where the
RunTestReportclass 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.
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.
p:add-xml-basegenerates URIs when
true. I believe this resolves issue #31.
text/xmlas an XML content type in
p:http-request. I believe this resolves issue #33.
cx:timeoutextension attribute on
p:http-request. This specifies the number of miliseconds to use as the timeout value. I believe this resolves issue #34.
text/xmlcontent types in
p:http-requesteven when they're followed by parameters. I believe this partially resolves issue #35.
Don't process the body of subpipelines declared with
p:pipelinetwice. I believe this resolves issue #39.
Implemented an extension: if the
p:documentpoints 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:filemaskextension 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.
selectattributes 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.
c:headerelements again. I believe this fixes issue #38.
Add support for different log styles for
p:logoutput. 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:logoutput). 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
step so that it uses the Apache
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.
Fix bugs where
p:unescape-markupdidn't handle escaped, top-level sibling elements or leading comments and PIs.
Throw err:XS0032 if no
p:xpath-contextis specified and there's no default readable port (instead of throwing
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
Fixed bug: handle comments and PIs correctly in
Fixed bug: handle
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
Fixed bug: catch XIncludes that include themselves; made sure that the underlying causes is correctly reported when
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.
p:uuidwas 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
cx:unzip in addition to a number of smaller
cx:unzip, read the ZIP file as a stream so that ZIP files located on HTTP servers work.
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-requestcontent was incorrectly serialized as XML. Now it's only serialized as XML if the content type is “
application/xml” or ends with “
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:inputselect expressions; throw the correct error for invalid selections.
Handle parameters passed to
Require extension steps to be explicitly declared. You must now explicitly import
http://xmlcalabash.com/extension/steps/library-1.0.xplif you want to use XML Calabash extension steps.
pxf:cwd()extension function, see EXProc Description.
Added support for
exclude-inline-prefixesto configuration files.
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
Other notable changes include:
Fixed base URI bug in
Updated error list (mapping from error codes to messages).
Completely reworked extension functions.
Fixed bug with select on
Fixed several bugs related to error codes.
Rewrote the code that supports configuration files.
Try harder to make sure that we get ahold of the
entityResolverhook when parsing documents.