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!
Applied PR: #306 to fix bug in default readable output port.
Applied PR: #307 to improve parser performance.
Applied PR: #293 by hand to add support for other HTTP methods.
Applied PR: #315 to fix infinite loop error in reading zip files.
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 com.xmlcalabash.properties
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
content-types.properties
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 #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
Changes in XML Calabash 1.1.23
Changes in XML Calabash 1.1.22
XML Calabash 1.1.22 fixes a few bugs.
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.
Changes in XML Calabash 1.1.16
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 theCollectionFinder
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.
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.
Fixed: issue #220 by making UTF-8 output explicit in more places.
Added support for a “search=” fragment identifier in XInclude.
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.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 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 maven.restlet.org. 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 ofuntypedAtomic
. (This caused problems, for example, when numeric values were passed to Schematron, XQuery, or XSLT).
Changes in XML Calabash 1.1.8
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
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
com.ibm.icu:icu4j:49.1
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
resolver.properties
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 callingmain()
, 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 byp: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:
- deltaxml
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.
- ditaa
Supports the ditaa drawing step.
Available from http://github.com/ndw/xmlcalabash1-ditaa.
- mathml-to-svg
Supports MathML to SVG conversions with the JEuclid renderer.
Available from http://github.com/ndw/xmlcalabash1-mathml-to-svg.
- metadata-extractor
Supports the image metadata extractions step with the Metadata Extractor library.
Available from http://github.com/ndw/xmlcalabash1-metadata-extractor.
- plantuml
Supports the PlantUML drawing step.
Available from http://github.com/ndw/xmlcalabash1-plantuml.
Supports printing with XSL Formatting Objects or CSS. Support is included for XSL FO processing with FOP, AntennaHouse, or RenderX and CSS processing with AntennaHouse, or PrinceXML.
Printing with XML Calabash requires the libraries in this module in addition to any commercial libraries and licences required. (No additional libraries are required for FOP.)
Available from http://github.com/ndw/xmlcalabash1-print.
- rdf
Supports the extension steps that can read, write, and query RDF.
Available from http://github.com/ndw/xmlcalabash1-rdf.
- sendmail
Supports the step that sends email.
Available from http://github.com/ndw/xmlcalabash1-sendmail.
- xcc
Supports the MarkLogic XCC steps.
Available from http://github.com/ndw/xmlcalabash1-xcc.
- xmlunit
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.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 sureruntime.close
is called appropriately.Attention
If you are using XML Calabash through its Java API, be sure that you call
close
on anyXProcRuntime
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 9.6.0.3j 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.
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 specifiedversion="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 (9.6.0.3j 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
andcx:plantuml
steps.Support
log
attribute oncx: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.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.
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 http://travis-ci.org/.Replaced
RelevantNodes
withAxisNodes
. This is an intentionally backwards-incompatible change, but it should only effect users who have written their own custom steps. If you were usingRelevantNodes
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 ofnew URI
(h/t to Björn Kautler).Removed bogus
.orig
and.rej
filesAdded a
cx:version
attribute to thep: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.
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 Validator.nu 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 9.5.1.5.
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 com.xmlcalabash.safe-mode 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 toc:data/@encoding
settings on the stored document.Fixed issue #131 by using the Saxon unparsed text resolver if there isn't another one.
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
, andcx: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).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 staticisAvailable
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 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.
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:import
ing 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 XQueryModuleURIResolver
.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.
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 anXProcException
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 #86: use
ByteArray
instead ofString
to convertXdmNodes
toInputSources
.Fixed issue #86: amended fix to make sure the base URI is preserved.
Fixed issue #89: added
auth-method
option; ifauth-method
isbasic
, 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 thep: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.
system properties to control loading of configuration files.{global,user,local}
Implemented
pxp:compress
andpxp: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.Added experimental support for serialization attributes on
pxp:zip
manifestc: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 thelib
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 inp: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 toc: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.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.
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 onpxf: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 inp:exec
if the input was an empty sequence.Fixed issue #25: make sure that
cx:unzip
andpxp: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
andcx: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 forapplication/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 insend-authorization
forcxf: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 http://validator.nu/ 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="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.)
Catch missing
name
s onp:with-option
s. (Instead of raising NPE! Thanks also to George Bina.)
Changes in XML Calabash 0.9.35
Added
cx:copy-attributes
extension top:xinclude
; if true, namespace qualified attributes on thexi: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 whenparse=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 theXProcListener
.Fixed issue #129; pass Jing line/column numbers through the error handler.
Fixed issue #4; added
getStep()
toDefaultStep
to return the underlyingXAtomicStep
.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 anfo-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 underlyingStep
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 namep: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 inuse-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 9.3.0.4 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
top:unescape-markup
. JSON is turned into XML per http://snelson.org.uk/archives/2008/02/parsing_json_in.php.Fixed bugs in
p:store
andp: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
andp: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 handleassert-valid="false"
correctly.Changed
p:parameters
so thatnamespace=""
is written on the resultc: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
andp:try
, where XML Calabash incorrectly required all of the outputs to have the same “sequence” setting.Fixed bug in
p:library
whereexclude-inline-prefixes
was not allowed.
Changes in XML Calabash 0.9.23
Fixed a bug in
WritableDocument
that broke outputting tofile:
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 astep
orport
is missing on ap: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 forfile:
URIs.Attempted to fix issue #111 (and I believe issue #93) by adding getter/setter methods for the
XProcMessageListener
toXProcRuntime
.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
andpxp: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
, throwerr:XD0006
ifdetailed=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 newcx: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 adistribution
attribute onc: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 anamespace
attribute on thec: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 thegroup-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 acceptp: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 elementFixed 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
andcxf:tail
: if count is negative, remove that many lines. So if count=2 incx: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
andml:insert-document
steps to allow text and binary objects to be used.Implemented cookie handling in
p:http-request
; added new stepscx:get-cookies
andcx: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 ap: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 asp:data
, wrapping the non-XML in ac: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 9.2.0.4 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 causeIllegalArgumentException
(e.g., fromp: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
top:store
. Ifcx: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' onp: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 badxpath-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
andp:catch
on ap: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 togroup-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 onp: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 ap:for-each
are evaluated correctly.Fixed bug: in
p:http-request
, ifdetailed=true
, always output ac: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-separatorAdded 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
onp: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 afile:
URI.Make sure filenames are properly percent-encoded in
p:directory-list
.Improve error messages in
p:http-request
.Fixed bug: reset
error
port whenp:try
p: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 forp: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
onp:validate-with-relaxng
.Added
cx:nvdl
step.Schemas passed to
p:validate-with-xsd
andcx: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
onp:load
.Check for incompatible types in
content-type
andoverride-content-type
inp: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
andcx:eval
.Fixed bug that allowed err:XD001 to go undetected.
Fixed miscellaneous small bugs in
p:http-request
,p:exec
,p:load
, andp: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 onp: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
inp: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 whenrelative
istrue
. I believe this resolves issue #31.Support
text/xml
as an XML content type inp:http-request
. I believe this resolves issue #33.Support
cx:timeout
extension attribute onp:http-request
. This specifies the number of miliseconds to use as the timeout value. I believe this resolves issue #34.Recognize
application/xml
andtext/xml
content types inp: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 ofp: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 thecx: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 isWRAPPED
, what XML Calabash has always done. New possibilities arePLAIN
(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), andOFF
(which suppresses allp: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 throwingArrayIndexOutOfBounds
).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
inexclude-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
http://xmlcalabash.com/extension/steps/library-1.0.xpl
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 thatmatch="/"
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
onp: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
andXProcConfiguration
are initialized.Try harder to make sure that we get ahold of the
entityResolver
hook when parsing documents.