Appendix D. Change log
This section documents the significant changes made in each release. See the commits and pull requests on the repository for finer detail.
- 3.0.21, 18 Oct 2025
Fixed issue #278. FOP has a completely broken implementation of URI resolution against the base URI; worked around that. Also added an event listener so that FOP messages are reported.
Fixed issue #274 and issue #275. There were a couple of issues relating to static options. At least one is likely to be better resolved when the refactor for issue #115 is finished.
Fixed issue #273. Allow the pipeline specified on the command line to be a URI.
Fixed issue #270. Fixed a bug in transformation of SVRL to XVRL caused by a missing namespace declaration.
Fixed issue #268. Fixed a bug where setting the trace output to a simple filename, without a path, caused an error.
Fixed issue #265. Make sure proxy settings are passed all the way through to the runtime configuration.
Fixed issue #262. Make sure that a warning message is printed if the user attempts to use graph output but hasn’t configured Graphviz.
In the
p:os-infostep, added all the properties to thecx:namespace, even the standard ones (that are also reported without a namespace).Upgraded to EPUBCheck version 5.3.0.
- 3.0.20, 05 Oct 2025
Fixed issue #258. The XMLn’t parser wasn’t recognizing the built-in
xml:prefix.Fixed issue #255. The
p:validate-with-relax-ngstep was failing to use the catalog resolver. It was also using the wrong URI (the document URI instead of the schema URI) in error messages about schema problems.
- 3.0.19, 28 Sep 2025
Fixed issue #249. The command line mechanism for setting the content type of a source document only worked for
stdin.Fixed issue #248. Improved error messages associated with unsuccessful attempts to parse with
p:invisible-xml. The error message now includes the failed parse, if there is one.Fixed issue #247. Remove non-static options from the set of in-scope variables when a
p:declare-stepis nested inside another step declaration.
- 3.0.18, 21 Sep 2025
Fixed issue #242. Corrected a couple of bugs in
p:send-mail. Generalized the properties that can be set withcc:send-mail. Improved the documentation and specifically included an example of how to send mail with a modern TLS-enabled system.Fixed issue #239. Support for pipeline functions failed to consider the possibility that a step might have no inputs, outputs, or options.
Fixed issue #238. Several bugs related to the scope of pipeline functions have been fixed. New tests have been added.
- 3.0.17, 15 Sep 2025
Fixed issue #229. Added tests and documentation for running pipelines as functions.
Upgraded to Saxon 12.9.
Fixed issue #230. Improvements to the XMLn’t parser: handle entity references in attribute values, support include and ignore marked sections in the external subset, improved some error messages.
- 3.0.16, 07 Sep 2025
Fixed issue #191. Updated the
xmlcalabash.shscript in the distribution to use a POSIX-compliant version of “readlink”.Added support for the XMLn’t parser.
- 3.0.15, 25 Aug 2025
Fixed issue #212. The command line application (the “main” class) should now be available from maven as
com.xmlcalabash:xmlcalabash:app.Fixed issue #213. The
messageattribute is now supported on compound steps.Fixed issue #214. This was another bug related to the output of
p:try. Also fixed a couple of small errors related to the base URI of inlines.Fixed issue #216. Added a
cx:elementalstep. At present, this is using the same REST API as thecx:exist-dbstep; but if the APIs diverge in the future, it’ll be clear which one is intended.
- 3.0.14, 17 Aug 2025
Fixed issue #202. It is now possible to set static parameters on
p:xslt.Fixed issue #199. I’ve made another attempt at resolving the encoding problems on Windows console output. As far as I can tell, the root cause here is that in Java 18, the default character set was changed to UTF-8, irrespective of the platform. So if you run XML Calabash with Java 18+ on Windows, Java says the default character set is UTF-8 and it often just isn’t.
The current workaround is to use
-Dfile.encoding=COMPATif no explicitfile.encodingproperty is specified. That gives backwards-compatible behavior. If that doesn’t work, using-Dfile.encodingto pass the actual, correct encoding should.Fixed issue #198. An explicitly named output port on a
p:trystep was misinterpreted as a static error.Fixed issue #196. Preemptive authentication on
p:http-requesthas never actually worked.Fixed issue #190 and issue #194. Added support for processing XQuery using BaseX or eXist-db. This support is available through
cx:basexandcx:exist-dbsteps. It is also possible to make either implementation the default processor forp:xquerysteps.The steps that implement BaseX or eXist-db processing are distributed separately and must be added to your classpath.
Fixed issue #185 and issue #186. The interactive debugger now supports tab completion. Also fixed the bug where sometimes “exit” had to be entered twice in order to quit the debugger.
Fixed issue #183. Highlighting of step names in the graph visualization output is improved.
Fixed issue #181. Upgraded to a more recent version of the DocBook xslTNG stylesheets for formatting the documentation. This fixes an ugly accessibility issue related to the spacebar.
The “info version” command now identifies the JVM default character set.
Switched to version 5.5.0 of SInclude, the XInclude processor.
- 3.0.13, 03 Aug 2025
Fixed issue #175. Output filenames had incorrectly formatted extensions in the detailed trace listener.
Fixed issue #171 and issue #172. Made a couple of small changes to the
p:css-formatterstep.Fixed issue #170. Added a
storecommand to the interactive debugger.Fixed issue #169. Attempted to improve the documentation in the language reference. More improvements can surely be made.
Updated Schematron implementation to SchXslt2 version 1.4.4.
Updated dependencies and the way dependencies are managed. Updates:
ch.qos.logback:logback-classicfrom 1.5.13 to 1.5.18com.fasterxml.jackson.*from 2.18.2 to 2.19.2com.github.f4b6a3:uuid-creatorfrom 6.0.0 to 6.1.1com.networknt:json-schema-validatorfrom 1.5.4 to 1.5.8com.princexml:prince-java-wrapperfrom 1.3.0 to 1.5.0commons-codec:commons-codecfrom 1.17.0 to 1.19.0de.bottlecaps.ebnf-convert:ebnf-convert-libfrom 0.70 to 0.72de.bottlecaps.rr:rr-libfrom 2.1 to 2.5net.minidev:json-smartfrom 2.5.1 to 2.5.2net.sourceforge.plantuml:plantumlfrom 1.2025.2 to 1.2025.4org.apache.commons:commons-compressfrom 1.27.1 to 1.28.0org.apache.httpcomponents.client5:httpclient5from 5.3.1 to 5.5org.apache.jena:*from 5.3.0 to 5.5.0org.apache.logging.log4j:log4j-to-slf4jfrom 2.23.1 to 2.25.1org.apache.pdfbox:*from 2.0.32 to 3.0.5org.apache.xmlgraphics:fopfrom 2.10 to 2.11org.jline:*from 3.28.0 to 3.30.4org.seleniumhq.selenium:selenium-javafrom 4.28.1 to 4.34.0org.slf4j:slf4j-apifrom 2.0.16 to 2.0.17org.w3c:epubcheckfrom 5.0.1 to 5.2.1org.xmlresolver:xmlresolverfrom 6.0.17 to 6.0.19org.xmlunit:xmlunit-corefrom 2.10.0 to 2.10.3
Call this the “Balisage 2025” release. Hopefully, I won’t decide anything else needs fixing before my talk next week. It’s a “.13” release, but you’re not superstitious, right?
- 3.0.12, 27 Jul 2025
Fixed issue #163 by making sure that the default readable port is applied correctly to the
cx:untilandcx:whilesteps.Added examples to the language reference.
- 3.0.11, 25 Jul 2025
Fixed issue #155. Added a language reference chapter that includes at least a brief summary of all the XProc elements. This also improves the documentation for the XML Calabash extension steps,
cx:untilandcx:while.Fixed issue #148. The source input on
p:invisible-xmlis now unconditionally treated as a string. Note that there’s another wrinkle here, theselectexpression “something/string()” is anapplication/jsondocument containing a single string atomic value. The expression “something/text()” is a text/plain document containing a single text node. That’s a sharper edge than we might like.Fixed issue #144. Use the JVM default charset encoding for console output. The
console-output-encodingconfiguration option has been removed and XML Calabash now tries harder to use the JVM’s default charset for console output. ThehelloWorld.xplsample pipeline has been extended to print some Unicode characters and the installation chapter has been extended to describe encoding issues in more detail.Fixed issue #9. Improved the PowerShell script so that it attempts provide command line arguments in a more useful format. (Left to its own devices, PowerShell splits arguments on “:” which is inconvenient for XML Calabash.) Also added support for checking the
$env:JAVA_HOMEenvironment variable in PowerShell.Attempted to make it easier to get debug information. Added an example
logback-debug.xmlfile to thelibdirectory in the distribution. This configuration prints debug messages to the console and saves them in a file namedxmlcalabash.log. The included scripts for running XML Calabash have also been improved so that arguments of the form “-D…” are recognized as Java property settings and added to the command line in the right place. (Note that on Windows, you have to quote any property setting that includes a “.”, for example'-Dlogback.configurationFile=lib/logback-debug.xml')Improved the
--debugoption and the documentation for the option. They’re now better aligned.Various small documentation and documentation build fixes.
- 3.0.10, 16 Jul 2025
Fixed issue #138 and issue #139. Data models constructed for non-XML inputs were accidentally using the base URI of the static context as their base URI instead of their actual base URI.
Fixed issue #135. Added a default MIME type mapping for the
.xspecextension.Migrated to Saxon 12.8 and updated to the latest XProc 3.0 test suite.
- 3.0.9, 13 Jul 2025
Fixed issue #130. Make sure that trace output is saved even if the pipeline fails.
Fixed issue #129. Clarify the error messages for
err:XD0006anderr:XD0007so that the user can distinguish between “no documents” and “more than one document”.Fixed issue #127. Support XML grammars on
p:invisible-xml. At the moment, this only works with the NineML implementation of Invisible XML.Fixed issue #123. Correct the documentation for output filespecs. Apparently, I implemented them using the rules of “
String.format” and documented them as if I’d used the rules of “fn:format-number”. Hilarity ensued. I also changed the implementation so that multiple outputs to a single file are concatenated together as the documentation indicates. Previously, each new document overwrote the previous.Fixed issue #122. Previously, no attempt was made to preserve character maps from XSLT steps and there was no mechanism for setting character maps at the XProc level. Character maps are now supported using the same direct mapping format as the
fn:serializefunction. They’re also saved as part of the serialization properties on output ports, for example fromp:xslt. Finally, there are a couple of bugs in Saxon and XML Calabash now works around those.Fixed issue #120. Make sure the
.dotfiles are explicitly closed so that they are readable on Windows. Also corrected errors in the way logging was handled by the visualizer class.Fixed issue #118. Removed the “this is alpha software” admonitions from the documentation. That’s only a little bit terrifying.
Fixed issue #116. Attempting to copy or move a file onto itself is an error.
- 3.0.8, 28 Jun 2025
Fixed issue #110, Java 11 should be sufficient again. I switched back to the previous method of selecting a toolchain for the build. This seems to work, though I can’t really explain why.
- 3.0.7, 28 Jun 2025
Related to issue #105, added the eager-uri-resolution feature.
Fixed issue #101. Make sure
--outputfilenames are parsed correctly. Output filenames are now explicitly made absolute against the current working directory. If a URI is given as the filename, it must be afile:URI. Attempted to clarify the documentation.
- 3.0.6, 22 Jun 2025
Fixed issue #97. Make sure the base URI is propagated into XSLT result documents.
- 3.0.5, 22 Jun 2025
Fixed issue #85. Use only the first input as the context item when processing a sequence with XSLT 2.0.
Fixed
p:urify()so that it passes nw-urify-non-windows-bs-002. I had at one time argued for a change in behavior, but I gave up.There were a bunch of build-related changes trying to get CI to do the right thing and publish releases with JReleaser.
- 3.0.4, 18 Jun 2025
Fixed issue #77. Escape “[” and “]” in URIs. This is the simplest fix for the bug where a file named
[Content_Types].xmlin a zip file causesp:archive-manifestto fail. Thejava.net.URIclass won’t make a URI that contains square brackets. There are other reserved characters it doesn’t care about, so I’m not sure if there’s a better, proper solution.Fixed issue #74. Make sure the module URI resolver is configured for the
p:xquerystep.Fixed issue #71. Make sure that namespace bindings are setup correctly. Several steps were capable of producing apparently valid XDM results that did not serialize correctly because the namespace bindings were not up-to-date.
Test suites are now published automatically at https://www.xmlcalabash.com/test-suites/. This provides some examples of usage, especially for extension steps.
- 3.0.3, 15 Jun 2025
Fixed issue #64. On Windows, the
p:urify()function didn’t handle “/C:/path/to/file” correctly.Fixed issue #61. Made the XML Schema module URI resolver do the right thing.
Fixed issue #59. Added support for setting serialization parameters on the command line.
Fixed issue #56. Corrected several errors in option handling. Static options that did not have an initializer were not recognized and options passed from the command line applied to all steps, not just the outer-most step.
Fixed issue #53. Resolved a performance issue during graph construction.
Fixed issue #40. Corrected an error in the test driver.
Added the
cx:filesetstep, inspired by Ant FileSets.Fixed a bug in the way document properties were handled when using
selectonp:with-input.Updated the Schematron implementation to SchXslt2 version 1.3.5.
- 3.0.2, 06 Jun 2025
Fixed issue #45. Make sure that the path used for include/exclude matching in
p:directory-listis correct. (Removes a spurious leading “/”.)Fixed issue #43. Enable logging for warnings and errors. This got disabled accidentally at some point.
Fixed issue #42. Preserve document properties when doing selections. This is an attempt to address issue #1156 from the specification.
- 3.0.1, 05 Jun 2025
Fixed issue #33. If no specific XSL processor is requested, use FOP by default.
Fixed issue #30. Allow text documents on the insertion and result ports of
p:insert.Fixed issue #29. Make the content type of “
.md” filestext/markdownby default.Fixed issue #28 where
p:file-copysometimes acted likep:file-moveand removed the originals!Updated the
cx:seleniumstep:Added an “until different” clause to the find statement
Fixed a bug in the grammar of the send statement
Bumped the grammar version from 0.2 to 0.3
Version 0.2 grammars are compatible with 0.3 and still accepted
Added more debugging statements to the cx:selenium step
Make the default assertion level “ignore” not “warning”.
- 3.0.0, 01 Jun 2025
The first non-α, non-β release. 🤞.
- 3.0.0-beta8, 31 May 2025
The big change here is moving from GitHub to Codeberg.
Fixed issue #542. Added support for the
versionattribute oncc:xml-calabash. Improved the messages associated with errors in the configuration file.Fixed issue #541. Fixed a bug that caused
p:runinside a loop to “get stuck” because of a problem with how input ports were handled.Fixed issue #8. Fix Windows platform dependencies in
xmlcalabash.ps1. There’s another bug with piped input, but it’s not clear how to fix that.Fixed issue #7. Cleaned up some of the implementation details in the
p:invisible-xmlstep.Fixed issue #6. Set the default content type for
.ixmlfiles totext/plain.
- 3.0.0-beta7, 25 May 2025
(The beta6 release never actually got published because I forgot to tag it.)
Fixed issue #532. Make sure that user-supplied values for static options are used during compilation.
Refactored the paged media steps into the main build. Along the way, I discovered that Prince XML has an artifact in Maven Central, so I switched to that API. The available options for the Prince XML-backed
p:css-formatterstep have changed; some of those changes are backwards incompatible.Restructured code and tests for running in a set of Docker containers. The idea is to be able to run testing and release tasks in containers so that there’s no “bleed through” of the local development environment.
Moved to the new Maven Central repository using the legacy OSSRH APIs.
- 3.0.0-beta6, 23 May 2025
For some reason, it appears that snapshots aren’t being updated after they’re created. The build runs without error, and claims to publish the snapshot, but the files on Maven don’t get updated. I don’t know why.
Fixed issue #527. Make sure that line numbering is enabled for pipelines constructed from a
Source.Substantial build refactoring. All of the extension steps, except the Polyglot steps that require Java 17 and the paged media steps that mostly require third party applications, are now part the main build instead of being subprojects. This should simplify things a bit. It did have a knock on effect of changing some of the documentation build. For the better, I hope.
- 3.0.0-beta5, 21 May 2025
Fixed issue #521. Make sure that static options are evalated with the correct context.
Fixed issue #519. Handle the case where the only command given is “info”.
Re-re-fixed issue #321. Once again, the problem was in the XInclude processor, now bumped to version 5.4.1. This time I wrote a fairly extensive test case to “prove” it works correctly.
- 3.0.0-beta4, 20 May 2025
Fixed issue #515. Allow (API) users to add custom Saxon configurers with
XmlCalabashBuilder.Fixed issue #513. Reverted the fix that added a warning message about non-node inputs to
p:xslt. It was unreliable.Fixed issue #509. Added an info command that can display information about the known mimetypes.
Fixed issue #508. Added
.xqm,.xquery, and.xqlas standard filename extensions forapplication/xqueryfiles.
- 3.0.0-beta3, 18 May 2025
I wasn’t really planning to do another release today, but there are some nice usability improvements in here and releases are cheap…
Fixed issue #504. Improved the error messages reported when stylesheet compilation fails for a
p:xsltstep.Fixed issue #498. Allow the port name to be omitted for input and output ports on the command line if the pipeline has only a single such port.
Fixed issue #499. Fixed a bug where the serialization option on the
p:storestep was not taking precedence.Fixed issue #497. If you attempt to process a stylesheet without passing an initial template name, and if the input is not a node, it will often silently fail. Output a debug message warning of this fact.
Fixed issue #496. Improved the error message associated with a
p:pipeas a child ofp:input.Fixed issue #493. Fixed the error location for dynamic errors in atomic steps. (Previously, the location of the containing compound step was always reported.)
- 3.0.0-beta2, 17 May 2025
Fixed issue #488. Make sure that the document manager is used as the resource resolver for step processing.
Fixed issue #485. Make sure that the global context item, and other properties, are correctly reset when
p:xsltis used in a loop.Fixed issue #483. Support constructing a pipeline from a
java.xml.transform.Source.Support XML input to the
cx:seleniumstep. Also did some IDE-directed code cleanup in the step itself. There’s a (currently undocumented) RELAX NG grammar for the XML input. It’s possibly a bit sketchy. And the step doesn’t validate the input.Fixed issue #478. Improved the error message associated with attempts to connect to an unknown port.
Fixed issue #476. Make sure that options are set to their typed values.
Fixed issue #474. Apply serialization properties specified in the configuration file.
Fixed issue #472. Fixed a bug where “null” would sometimes appear in the graph visualization.
Fixed issue #321 (again). Updated the XInclude processor to 5.4.0 to correct a bug where nested base URIs were not correctly preserved.
- 3.0.0-beta1, 11 May 2025
If I’m going to get a couple of betas out in May, I best get started, eh?
Fixed issue #466. The
xsl:messages from stylesheets run withp:xsltare output at “info” level. (They were accidentally getting discarded in the last few alphas.)Fixed issue #462. Make sure that option shortcut values are stored as untyped atomic values so that they can be promoted to the appropriate type.
Fixed issue #460. Refactored build and configuration APIs.
Fixed issue #456. Removed some debugging code that always printed a JVM stack trace when
p:runfailed.Fixed issue #455. Refactored the
DocumentManagerAPI.Added
cx:jsonpathandcx:findextension steps.Added
cx:json-diffandcx:json-patchextension steps.Made a number of improvements to error reporting.
Improved error messages for documents that can’t be parsed. (Previously, “file not found” would be reported in some circumstances.)
Improved error message when content type shortcuts are used in inappropriate places.
Fixed a bug where the underlying cause of an exception sometimes got lost in nested exceptions. When a pipeline fails, the error report now includes the chain of causes.
Clarified the error message for the special case of empty sequence in a type conversion error.
Added a
--stacktraceoption to enable stack (step) traces in errors (and disabled them by default).Improved the formatting of error explanations when the
--explainoption is used.
- 3.0.0-alpha33, 06 May 2025
Fixed issue #450. Make sure that options passed on the command line are promoted as required. (So “true” can be used for an
xs:booleanvalue.) Also changed the error code used for option values that don’t match (or can’t be promoted to) the correct type. They now raiseerr:XD0036instead oferr:XS0077which is really about attribute values not option values.Fixed issue #447. Make sure the default verbosity is “info”, not “warn”. (This error was introduced while tinkering with the logging code; it was probably never released.)
Fixed issue #441. Restore loading
~/.xmlcalabash3as the default configuration file if no configuration is given explicitly and if./.xmlcalabash3doesn’t exist. (In alpha31 or alpha32, the code to load~/.xmlcalabash3was lost, now it’s back.)Disabled standard Java logging to
stderr. This seems a bit odd, but XML Calabash has its own error reporter (necessary so that pipelines and integrators can capture the error messages). That reporter sends all messages to the standard Java logging system. That’s necessary so that it’s possible to capture lower level debug messages to a file without sending them all to the console. But it means that if an error occurs, the reporter prints the error message and then the underlying Java logging system prints it again, in a slightly different format. That’s going to be both confusing and annoying, so by default no Java log messages are printed.
- 3.0.0-alpha32, 05 May 2025
Significant refactoring of message and logging systems.
There’s more separation between things that are logged through the message reporter and things that are only logged to the underlying Java logger. The intent is that things only relevant to debugging XML Calabash go only to the logger. Things that might be relevant to debugging a pipeline go to both places.
One exception is that details about how the application is configured go only to the underlying Java logger. This is necessary because we haven’t configured a message reporter before we’ve configured the application!
The default logback.xml configuration file has been simplified. It no longer uses dynamic configuration. Use a different configuration file to change the level.
The error explanation implementation has been changed so that it also uses the message reporter, rather than writing directly to stderr.
Multithreaded execution complicates the task the visualizer is trying to perform. The “detail” visualizer has been updated.
Fixed a few bugs in the
cx:wait-for-updatestep; it didn’t work reliably for HTTP URIs.
- 3.0.0-alpha31, 03 May 2025
Fixed issue #434. Improved the conformance of
p:import-functions. Private functions are now excluded and nested imports are handled correctly.Fixed issue #431. Corrected errors in
p:os-exec. Fixed the bug where output to stdout was discarded unless the process ended with a return code of zero. Serialization properties and output charsets are now handled correctly.Fixed issue #427. Remove carriage returns from
p:os-execoutput on Windows.Fixed issue #425. The
cwdoption onp:os-execis handled correctly if it’s a URI.Fixed issue #424. Reworked the
DocumentManagerAPI.Fixed issue #258. Added support for the language attribute on the XVRL schema element.
XML Calabash now uses Saxon 12.6 by default.
- 3.0.0-alpha30, 30 Apr 2025
The Windows-related fixes in
3.0.0-alpha29weren’t wholly satisfactory. Some places where those fixes were incomplete have been refactored. (I think two issues had been conflated and their union fixed, leaving each of the individual problems only partially resolved.)Fixed issue #418. Make sure that attempts to get a path from a
file:URI deal with irregularities on Windows.Fixed issue #417. Don’t print “Stack trace:” on errors if there’s no stack trace.
Refactored the
MessageReporterAPI. More information is now available to aid other presentation formats, localization requirements, etc.
- 3.0.0-alpha29, 28 Apr 2025
This release is a handful of small bug fixes, many related to tidying up loose ends in Windows functionality. Essentially all of the test suite tests now pass on Windows.
Fixed issue #413. Don’t put leading slash or, on Windows, drive letters in ZIP archive names. This change applies across all the archive formats, for consistency.
Fixed issue #411. Removed the spurious “:” from the start of
messageoutput on steps.
- 3.0.0-alpha28, 26 Apr 2025
Made a variety of changes to improve functionality on Windows: make sure files get closed, sort out some edge cases with Windows filenames, corrected a few tests that depended on end-of-line characters, fixed a bug in
p:file-create-tempfile(it returned the path instead of a URI).Added the ability to run pipeline steps in parallel (“multi threading”). This required a substantial bit of refactoring. I think it works correctly. See Running steps in parallel.
Fixed issue #403. Improved the presentation of error output to address a comment on the mailing list. I’ve also made the error output from the
p:xsltandp:xquerysteps more informative (and generally fixed a few loose ends in thep:xquerystep).Fixed issue #400. Corrected a typo that prevented “?” from being correctly escaped in
p:urify.Fixed issue #393. Static options imported in a common library (one imported by several other libraries) no longer get flagged as illegal duplicates.
Fixed issue #390. Somewhere along the line, I broke the
--verbosityoption so that it had no effect on the output. Now it does again.Fixed issue #384. Added a shortcut for setting map parameters on the command line.
Fixed issue #383 and made a number of other improvements in the test driver.
Fixed issue #362 by improving the
p:urifyfunction. This is a little bit speculative as xproc/#1145 is still being discussed. But the current behavior is so fundamentally broken that I’m making a few proactive fixes. These changes also mean thatp:urifyis implicitly called in many places which should also help on Windows.Fixed issue #353. Added support for content-types in the document cache. You can now cache the same document parsed with different content types.
Added some new unit tests to demonstrate programmatic use of XML Calabash from your own JVM application.
Fixed a bug where it wasn’t possible to set the value of a pipeline option named “message”. This was an accidental consequence of how the message attribute is handled on compound steps.
Added a stack trace to the error output. If a step fails, the default error reporter now prints a “stack trace” showing the step that failed and the steps it was nested inside. If this turns out to be annoying, I’ll add a configuration option to turn it off.
Fixed several bugs in the implicit validation feature. Implicit validation was accidentally enabled by default and there were also some issues with correct handling of the base URI when the base URI was explicitly absent.
Fixed several, small bugs in the SVG visualizer.
- 3.0.0-alpha27, 14 Apr 2025
The big (as in “sweeping” and arguably a little riskier than most recent updates) fix in this release is a substantial refactor of the core of the application. This was partly done to clean up the API for creating a processor, and partly because I had outstanding concerns about the previous big refactor from about a year ago. It’s a mostly not-visible change if you’re just using the command line application, but there was at least one bug fix where the document properties of a variable were wrong (the tests passed by accident).
Fixed issue #378. The SVG output doesn’t display options on steps that have no binding. They still have a binding to the empty sequence, but the diagram is a lot less cluttered without them.
- 3.0.0-alpha26, 25 Mar 2025
Fixed issue #372. The graph visualizer was completely unprepared for connections to option expressions.
Fixed issue #370 by sending message output to standard error instead of standard output. This assures that message output and pipeline output don’t clash. Writing to standard error should probably have been the default from the beginning.
Fixed issue #365. Documentation improvements; step names are now links to the appropriate reference page.
(Re)fixed issue #361. Make sure that the global context item is initialized (so that the custom stylesheet can define global variables).
Fixed issue #360. Attempted to improve the way writing pipeline output to standard output is handled. Pipeline output to standard output is “undecorated” if only one port is being output and it cannot produce a sequence.
I made some aesthetic improvements, well, changes at least, to the SVG graph styling: curved borders, a few colors.
- 3.0.0-alpha25, 23 Mar 2025
Added
cx:trangandcx:trang-filessteps.Fixed issue #361. The regular expression used to match the URI scheme was woefully inadequate.
Fixed issue #352 by supporting an explicit syntax for specifying the content type of inputs specified on the command line. This is especially relevant when reading from standard input as the name gives no hints about the content type.
Fixed issue #351. This release includes a substantial revision to SVG diagrams of pipelines and graphs. This has no user-visible effects unless you’re interested in styling the SVG diagrams.
Fixed issue #349 by documenting the
--nogooption.Fixed issue #348 by documenting the
formatoption values forp:archiveandp:unarchive.
- 3.0.0-alpha24, 16 Mar 2025
Fixed issue #342 by detecting errors in expressions at run time. Static errors in expressions now generate a warning at compile time and a failure at runtime. I’m not convinced that’s exactly right, but it does mean that a static error in an expression that’s never evaluated won’t raise an error.
Fixed issue #336. The way that SVG diagrams are generated for pipelines and graphs has been more-or-less completely rewritten. The XML description of pipelines and graphs are now broadly similar. Almost all of the styling is performed by XSLT and there’s a mechanism for users to provide their own stylesheets. The documentation has been updated to (attempt to?) explain how this works.
The pages generated by the
--graphsoption have been updated to improve the presentation and navigation.A number of small changes have been made in several places to try to provide the pipeline description with more information about the steps and the connections between them.
A new
--nogooption has been added. This option compiles the pipeline and generates the graphs, if requested, but does not attempt to run the pipeline.
- 3.0.0-alpha23, 09 Mar 2025
Fixed issue #350 by making the source port on
cx:sparqlprimary. (That was an oversight in the library that declares the step.)Fixed issue #327 by making sure that
p:directory-listpaths are normalized against the base URI correctly.Fixed issue #325 by making sure that secondary (non-primary) input ports are bound correctly. A secondary input is not bound to the default readable port if there’s no explicit connection for it. Instead, it’s bound to the input port’s default connection.
Fixed issue #323 by documenting that using an extension step requires providing its declaration; added a the library URIs to all of the extension step reference pages.
Fixed issue #319 by bundling CoffeeSacks with XML Calabash (this is the Saxon extension function for Invisible XML). The function is automatically registered.
Added support for user-styling of the SVG pipeline and graph output. Documentation T.B.D. (See issue #336.)
Added (somewhat experimental) support for implicit XML Schema validation of primary inputs.
Updated Apache FOP support; XML Calabash is now using FOP 2.10. Added image/png, image/tiff, application/X-fop-areatree, and application/vnd.hp-PCL as output formats. Allow image/svg+xml as an output format, but note that it requires a build of FOP with the sandbox enabled.
- 3.0.0-alpha22, 02 Mar 2025
Added support for the
p:messagestep.Fixed issue #308 by forbidding the
[p:]messageattribute from being specified withp:with-option. (It’s not an option.)Fixed issue #306 (and issue #252). All of the extension steps (except for the polyglot steps) are now bundled into the distribution.
Fixed issue #304. Make sure that
[p:]messageattributes on user-defined steps are output when the steps are run.Fixed issue #302 by making IDs explicit so that Graphviz doesn’t output duplicates in the SVG. Cleaned up the graph output in a few small ways.
Fixed issue #301. Added
cx:ebnf-convert, a wrapper around Gunther Rademacher’s EBNF converter, and updatedcx:railroadto use it directly. This will make it easier to draw railroad diagrams of, for example, Invisible XML grammars.Fixed selection of elements with relative
xml:baseattributes so that the resolved base URI is correct.
- 3.0.0-alpha21, 22 Feb 2025
Fixed issue #286. Added a
cx:markup-blitzstep and made it possible to use either NineML or Markup Blitz for thep:invisible-xmlstep.Fixed issue #285. Make sure that catalog lookup is performed when XML Schema modules are loaded.
Fixed issue #281. Remarkably, the
p:urifyfunction didn’t correctly handle “\” in the file path. This may also resolve issue #282.Improved the error message for
err:XD0049; it now includes the URI of the document that caused the error, if the URI is available.Improved error messages generally by not losing the underlying exception and printing the underlying cause when an uncaught exception stops the pipeline.
Added an initial implementation of the
cx:asciidoctorstep. This implements conversion from Asciidoctor to DocBook, HTML, or PDF.Added an initial implementation of the
cx:xmlunitstep. This implements document comparisons with XMLUnit. It doesn’t support everything that XMLUnit can do, but it supports many of the options.Added an initial implementation of RDF-related steps:
cx:rdf-merge,cx:rdf-graph,cx:rdfa, andcx:sparql. Added support for a wide range of RDF content types:application/ld+json,application/n-quads,application/n-triples,application/rdf+json,application/rdf+thrift,application/rdf+xml,application/sparql-query,application/sparql-results+json,application/sparql-results+xml,application/trig,text/n3, andtext/turtle. (Supporting these content types means that the standardp:documentinstruction and thep:loadandp:storesteps support RDF documents natively.)Added a number of new service provider interfaces so that extension steps can interact with the processor configuration.
Fixed a typo in the declaration of the
cx:epubcheckstep.Cleaned up some whitespace, unused imports, and did some general code tidying.
- 3.0.0-alpha20, 10 Feb 2025
The 3.0.0-alpha19 release failed because of an error in build automation. This is functionally the same release.
- 3.0.0-alpha19, 09 Feb 2025
Fixed issue #266. The default encoding on Windows is now Windows 1252. (It was previously documented that way, but not implemented that way.)
Fixed issue #265. The
p:urifyfunction can be called with a single argument.Fixed issue #264. The static base URI was not being set correctly in expressions. Also updated the error message that arises if an expression fails to include location information.
Fixed issue #257. The
p:validate-with-schematronstep now returns axvrl:report(not a reports). The bug that caused digest roll-ups to be incorrect has been fixed.Fixed issue #256. That sentence in the README now has a verb.
Fixed issue #255. The help text has been updated to reflect current usage. Making the help text comprehensive seemed too verbose; the common options are summarized with a link to the documentation for more detail.
Fixed issue #253. Updated the “quick start” section of the README for clarity.
Fixed issue #250. Fixed a link accidentally broken by a global search-and-replace and a few other documentation issues.
Fixed issue #236. The
--stepoption can be used to run any atomic step.The error message associated with “not well formed JSON” now includes the JSON that’s being rejected. Did a bit of nearby tidying of error messages.
Updated byte order mark handling in text and JSON documents to reflect recent specification changes. (Generally, byte order marks are not part of the text.)
Tinkered with the GitHub actions: the PR builds now include the test report; the build environment includes Firefox and Chrome.
- 3.0.0-alpha18, 02 Feb 2025
Upgraded to version 6.0.12 of the XML Resolver. This isn’t completely backwards compatible with earlier releases, so attempting to use an earlier version might not work.
Fixed issue #32. The
p:lookup-urifunction now queries the catalog resolver.Fixed issue #163. Added a
nextcommand to the debugger.Fixed issue #215. Make sure that options passed to a subpipeline are reset if the step appears in a loop.
Fixed issue #217. Correctly handle sequences of documents on the
p:xsltsecondary output port.Fixed issue #218. Another XPath parsing bug. 🙁 Something more comprehensive is required.
Fixed issue #219. When a
content-typeis specified onp:document, it’s an override.Fixed issue #220. Improved the error message used to report an unbound variable reference in an expression.
Fixed issue #232. Resolve the Saxon configuration file URI against the base URI of the configuration element.
Updates related to recent specification changes:
Added a
p:encodestep.Adjusted the semantics of
p:cast-content-typeso that ac:datadocument is always decoded.Added an
attributesoption top:pack,p:wrap, andp:wrap-sequence.Improved the semantics of text value templates in XML content. It’s now possible to add attributes to elements with a template.
Added a
cx:collection-managerstep.Added diagramming steps (
cx:ditaa,cx:mathml-to-svg, andcx:plantuml). These are published separately.Added a
cx:railroadstep, published separately.Improved error messages in several places. Improved the documentation of errors in reference pages.
Ignore serialization properties when they are explicitly set to the empty sequence.
Added support in
p:cast-content-typefor casting to and fromtext/x-java-properties. to the empty sequence.Fixed a bug in
p:viewportwhere the base URI of documents in the viewport was incorrect.Allow other configuration elements in the configuration file. This provides a mechanism for steps to have their own configuration.
Improved the checking for invalid URIs.
Fixed a couple of bugs in the pipeline graph output. (Sometimes the output from a compound step wasn’t correctly connected to its input.)
- 3.0.0-alpha17, 19 Jan 2025
Fixed issue #189. Generate an XVRL report for NVDL validation.
Fixed issue #186. Fix links to standard libraries and XProcRef.org in the reference guide.
Fixed issue #185. Check for required inputs and options before running a pipeline. When a top-level pipeline is run, check that required options and required inputs have been provided. (Checking for required inputs here is an opportunity to improve the error message.) Keep track of the required state of options until runtime. Within a pipeline, failing to provide a required option is a static error. But “top level” pipelines can’t be checked before they run. When they run, it must be possible to determine which options were declared as required.
Fixed issue #184. Fix bugs in Schematron XVRL reporting. (Generally, improve error reporting for validation steps.)
Fixed issue #160. The code was over-zealous when constructing step configurations. It created a new Saxon Configuration for every step. That’s not necessary; it’s only necessary that each
p:libraryandp:declare-step(and their descendants) have a new configuration. Configurations are required at that level because any use ofp:import-functionshas to be isolated.Compute a total order over subpipeline steps during graph building. This change replaces the, in retrospect very strange, approach previously taken where the steps were effectively unordered and at runtime each was tested to see if it could be run. Now we work out in advance a total order such that no step runs before any step that it depends on. (With some special cases to deal with the when/otherwise clauses in a choose.)
Fixed bug where buffered messages (accessible through
p:pipeline-messages) could be “null” instead of the correct message.Implemented the
cx:wait-for-updatestep.Added an “Errors and error messages” chapter to the user guide. Reworked document resolver APIs; made it possible to publish the XVRL-to-text stylesheet in the user guide.
Tidy up the pipeline/graph visualization output. Output option names for options, use the command line
--debugflag to control debugging output. Use«anonymous»instead of the arbitrary step ID for the root pipeline if it has no declared type.Fixed bug in
exclude-inline-prefixeswhere it was possible to generate a document that was not namespace well-formed.
- 3.0.0-alpha16, 15 Jan 2025
Fixed issue #175. Make sure directories are created before attempting to write files.
Fixed issue #174. Improved reporting of user-defined errors. If a pipeline author aborts a pipeline with
p:error, make sure that any details provided are presented when the pipeline fails. (Don’t attempt to use the error explainer, it won’t know anything about that error.)Fixed issue #173. The “detailed” option on
p:directory-listdidn’t work on Windows because Windows doesn’t support POSIX file permissions. On Windows, the step succeeds but provides slightly less detail.Reworked how Graphviz visualizations are created and stored. The
--descriptionand--graphoptions have been replaced with a single--graphsoption. The new option writes all of the descriptions to an output directory. Instead of one, potentially huge, SVG diagram of the entire set of pipelines, there are now distinct graphs for each pipeline with hyperlinks between them.
- 3.0.0-alpha15, 13 Jan 2025
Fixed issue #167. Make sure that the
--initfunctions are applied to every configuration.Fixed issues #164 and #165. Improved XVRL reporting and metadata.
Fixed issue #159. Make sure that validity errors are reported in XVRL. Improve reports associated with RELAX NG validation failures.
Fixed issue #157. In
p:validate-with-xml-schema, ignore any errors that arise when attempting to locate a schema at the namespace URI. (It’s not absolutely certain that this was the cause of #157, but it’s my best guess.)Fixed issue #156 and related knock-on issues, including:
Make sure that steps wait for all of their option binding inputs. (Previous releases worked accidentally in this regard.)
Make sure the base URI of an expression is always resolved against the point of definition, not the point of use.
Only apply external option bindings to
p:optioninstructions. (And not alsop:with-optioninstructions!)Make sure steps declared in libraries are always fully validated.
Fixed bug where values cast to
xs:integerwere returned asxs:decimalvalues.Reworked how lazy bindings are managed; they’re now always documents.
General improvements to logging, trace listening, message reporting, and serialization.
Fixed issue #153. Setup the correct namespace context in
p:if. Ap:ifis rewritten as ap:choosecontaining ap:when; make sure that thep:whenconstructed for this purpose has the right namespace context.Fixed issue #152. Discard unused inputs on
p:inlinesteps.When constructing SVG graph output, ignore stylesheet errors rather than causing the processing to fail. (This hasn’t fixed the errors, but it makes it possible to ignore them in the short term.)
Found and fixed (some) issues related to how text value templates are expanded. (There are still open questions.)
Improved handling of
err:XD0011. Always provide a reason.Fix bug where namespace bindings on attributes could be lost
Attempt to manage the console output encoding.
There’s a new configuration file setting,
console-output-encoding. When XML Calabash writes to the console, it attempts to assure that the output is appropriate for that encoding. There’s a bit of a messy interaction between the new “message printer” class and the existing “message reporter” class. More refactoring may be useful.Added “piped mode” to support processing XML in a unix-style pipeline.
In piped mode (
--pipeorpiped-io), primary input comes from stdin by default and the primary output goes to stdout by default. Explicit bindings are still possible. The pretty printing associated with console output is disabled.Added a (somewhat crude) PowerShell script to the distribution to run XML Calabash on Windows.
- 3.0.0-alpha14, 08 Jan 2025
Reworked Java versions again. This release attempts to move the requirement back to Java 11, except for the “polyglot” steps which require Java 17 or later.
Fixed issue #144. The XPath parser is still a little ad hoc. Also improved the error message if this situation arises again.
Fixed issue #142. The default readable port of a step that followed a
p:try, that itself had an implicit output port, was not computed correctly.Fixed issue #141. Make sure the continuous integration build scripts use the correct documentation paths. (In order to make relative links between the guides easier to test, I moved the build directories.)
Fixed issue #140. Removed the accidental restriction that
p:variablewas not allowed inp:try.Fixed issue #138. The Windows shell doesn’t support UTF-8 by default (checks calendar, yep, it is 2025) so back to plain old US ASCII for all messages by default. 🎵sad trombone🎶
- 3.0.0-alpha13, 07 Jan 2025
Fixed issue #134. The last release (perhaps the last couple of releases) have accidentally required Java 21. This release moves the requirement back to Java 17. Java 17 is a “long-term-support” release from 2021 so it’s not exactly cutting edge. Supporting Java 8, the historical favorite, is now deprecated, so it’s time to move forward. Java 17 seems like a reasonable compromise between 11 (2018) and 21 (2023).
Fixed issue #131. Clarified documentation of the CSS and XSL formatters steps. Fixed broken links between the user guide and the reference.
Fixed issue #130. There was a typo in the Relax NG grammar for the configuration file that caused
cc:mimetypeto appear twice when the second occurrence should have beencc:paged-mediaFixed issue #125. Corrected the explanation of verbosity in the
--helpoutput.Fixed issue #124. Updated the way the configuration is parsed so that the absence of the
licensedattribute on the configuration isn’t interpreted as a request for a “non-licensed” configuration.Fixed issue #123. Added a namespace declaration to the tableaux for the
cc:xml-calabashconfiguration element.Fixed issue #122. Added and documented the
--explaincommand line argument. (Previously, the explanation behavior was tied to the verbosity level which doesn’t really make sense. I also fixed a bug where the stack trace was printed twice if debug verbosity was used.)
- 3.0.0-alpha12, 05 Jan 2025
Fixed a bug where lazily evaluated expressions might have the wrong in-scope namespaces.
Fixed a bug where the schema-awareness of expressions and the schema-validity of documents could get out of sync causing errors.
Fixed a bug where a spurious option was passed to visualizers established by the configuration file.
Added Graphviz output to the debug log if generating SVG fails.
Allow the debugger breakpoint syntax to begin “break at” as well as “break on”.
Fixed an issue where the debugger was unable to inspect the document properties of step inputs.
Improved the debugger breakpoint command to check that the specified breakpoint is possible. The command will now reject attempts to set breakpoints that don’t refer to a valid step id. The model command has been extended to print all of the possible ids in a pipeline.
- 3.0.0-alpha11, 05 Jan 2025
Tinkered with the timeout and sleep duration options in advance of some anticipated specification changes. The sleep duration is now a number of seconds, not milliseconds. Both values can be either a number or a string in the form of an
xs:dayTimeDuration.Completely refactored the code that parses and serializes documents. Added support for YAML and TOML content types.
Added
cx:xpathandcx:polyglotsteps (cx:javascript,cx:python, etc.).Bumped the Java version to 21, fixed a number of deprecation warnings.
Fixed a bug where
[p:]messagewas still not being handled correctly.Added a
cx:epubcheckstep.Updated assertions to support using an XProc pipeline as an assertion.
- 3.0.0-alpha10, 04 Jan 2025
This release never actually happened. There was a typo in the build script. I opted to bump the version rather than moving a published tag.
- 3.0.0-alpha9, 01 Jan 2025
Fixed issue #92. Updated the
p:archive,p:archive-manifest, andp:unarchivesteps to support all of the formats supported by the Apache Commons Compression library. The “create” command onp:archivealso supports merging multiple archives together.Added a “visualization” API for tracking pipeline progress. Extensively revised how logging works. Removed the now unnecessary “progress” level of verbosity.
By default system logging only goes to the console and uses dynamic levels. For a different configuration, use a different logback.xml configuration file.
Fixed bugs related to
[p:]messageattributes. Messages are now output through the message reporter at “info” level, rather than being printed directly to the console. Fixed a bug where static messages on compound steps were not being output at all.Completely reworked how XVRL is supported. There’s now an internal model for the report format. Conversion from SVRL to XVRL is done by constructing the XVRL model.
Fixed issue #90 by correcting a typo in the SVG graphing stylesheet.
Fixed issue #93 by removing the accidental restriction that
p:variablewas not allowed inp:if. Hat tip to Achim for reporting that one!Fixed issue #96. An option that had no default value but whose type did not allow the empty sequence was generating a compile time error about the invalid (default) value. The initializer now defers the error until runtime (where it won’t happen if a value is provided for the option).
Added
application/epub+zip,application/java-archive,application/x-7z-compressed,application/x-archive,application/x-arj,application/x-cpio, andapplication/x-tarto the standard content type mapping.Added an experimental
xmlcalabash.shscript to the distribution. This should make it easier to run XML Calabash with a modified classpath.Renamed a few build properties. The
BUILD_HASHis nowBUILD_IDand is more sensitive to internal builds. RenamedSAXONtoSAXON_EDITIONand removed the misleadingSAXON_LICENSEDproperty. (If you run PE or EE without a license, the edition reported is HE.)Attempt to detect when PE or EE is running without a license and provide a more helpful version message.
Upgraded to SchXslt 1.3.1. Upgrade to jing/trang 20241231. Upgraded a few Kotlin libraries. Added the brotli and xz libraries to the core build.
Fixed a bug where the error location information for an error was getting lost.
- 3.0.0-alpha8, 28 Dec 2024
Fixed an issue where the command line interface used by the debugger was always a “dumb” terminal. It now supports history and editing keys.
Improve the error messages associated with attempting to set inputs or outputs on the command line for ports that don’t exist in the pipeline.
An error is now reported if
psvi-requiredis true but the processor doesn’t support XML Schema validation. (Saxon EE is required for PSVI support.)Renamed the “
schema-aware” command line option and configuration property to “licensed”. Cleaned up the tests for schema awareness in several places.Added support for the
[p:]timeoutoption on steps.Added support for the
timeoutparameter onp:http-request.Improved the error message associated with an undeclared prefix in an XPath expression.
Improved the error codes reported for static errors in several places.
Reworked the
MessageReporterinterface; allowed one reporter to chain to another. Added a buffering reporter to keep track of messages. By default the buffering reporter chains to the default reporter which chains to the logging reporter. The buffering reporter holds the last 32 messages. The default reporter prints messages to the console if they have a level that exceeds the verbosity threshold. The logging reporter sends all messages to the Java logger.There’s a new
message-buffer-sizeconfiguration setting to set the number of messages to buffered.Added a new
cx:pipeline-messagesextension step that can retrieve the messages buffered by the buffering reporter.Changed the message reporter and document manager to be unique per-pipeline, rather than shared across multiple pipelines.
Fixed a bug where serialization properties on
p:outputwere not being applied when pipeline outputs were serialized.Fixed a bug where XML Calabash was failing to detect that
p:importmust precedep:inputandp:output. Fixed that error in many of the tests in the extra test suite.Improved support for Schematron assertions. Assertions are now applied to non-XML values by first performing “cast content type” on them.
Added support for a
cx:hrefattribute onp:pipeinfo. When present, the processor behaves as if the referenced document appeared where the reference appears. Thep:pipeinfomust be empty and thecx:hrefmust point to ap:pipeinfodocument. This makes it practical to share Schematron assertions across pipelines.Fixed an obscure bug in the debug logging message associated with
p:sleep.Upgraded from SchXslt1 to SchXslt2 version 1.3.
Cleaned up the error reporter in many steps.
Removed the defunct
debugconfiguration setting.Improve the reference documentation for steps. Defer to the specification and to Erik Siegal’s excellent XProcRef for standard step descriptions.
- 3.0.0-alpha7, 24 Dec 2024
Added the Schematron assertions feature.
Added a
catchcommand to the debugger to catch steps that fail. Added an option to thestepcommand to stop after a step executes.Fixed a bug in the way steps are handled in nested, common imports.
Fixed p:filter to work as expected rather than as documented. See also, PR #645, the documentation fix.
Updated the trace listener to record when steps fail.
Tinkered with the message listener to align its methods with the recent changes to
--verbosity.
- 3.0.0-alpha6, 23 Dec 2024
Added an interactive debugger.
Added a tracing feature.
Fixed issue #48 by supplying extension attributes to atomic steps.
Added support for a
--initcommand line option to support registering extension functions before running a pipeline.Refactored the API that provides inputs to atomic steps. The inputs are now cached by the implementation and made available when the step is run. The previous API didn’t require that inputs be cached, but the overwhelming majority of steps do. Centralizing that feature simplifies atomic step implementations and avoids bugs.
Fixed a bug where
p:storecould not store binary outputs. Generally improved handling of serialized outputs. Implemented support for thecc:serializationconfiguration option.Refactored the paged media steps. Documented the extensions supported by
p:css-formatterandp:xsl-formatter.Documented the
p:system-propertyfunction, including the vendor-specific property names.Refactored the logging-related configuration. Switched to the Logback backend. Changed the
--debugoption so that it enables debug logging.Refactored and reorganized the
--verbosityvalues. They now align with debugging log levels.Refactored how “empty” is handled. Empty inputs are now addressed when the graph model is built, not during pipeline construction. This simplifies construction and fixed at least one bug.
Fixed a bug in the way the error explanations file was parsed.
Attempted to make sure that error messages include the location of the error. Things are improved, though perhaps not fixed everywhere.
Refactored how step and model IDs are managed. The new system produces simpler, more predictable APIs.
- 3.0.0-alpha5, 15 Dec 2024
Refactored the way context information is maintained both at compile time and run time. This is a re-refactor of the refactor I started back in June when I discovered that it must be possible for the Saxon configuration for each step to be different. The problem I discovered shortly after releasing alpha4 was that the runtime context was still using the compile time environment when evaluating expressions. Mostly this manifested in the wrong value for the
p:episodesystem property.It was all a bit of a mess so I threw it out and started over. Again. It’s better now, I think, but there’s still room for improvement.
Updated the serializer to make sure that XHTML documents are serialized as XML, not HTML.
Added a stub implementation of
p:lookup-uri.Fixed issue #32 by adding a (debug logging) warning if an input or output port trivially accepts no documents. That is, if it has a content-types constraint that includes no inclusive members or if
*/*is the last exclusive member.Fixed issue #31 by making some documentation improvements, including documenting the additional properties accepted by
p:system-propertyin the Reference Guide.
- 3.0.0-alpha4, 07 Dec 2024
Resolved the remaining
p:validate-with-json-schematest failures. Updated to json-schema-validator version 1.5.4. This required adding a dependency on GraalVM’s polyglot JavaScript library.Updated the build script to use a more recent version of XercesImpl.
Fixed several bugs related to the way static options are resolved.
Fixed a bug where
[p:]inline-expand-textwas incorrectly controlling AVTs in attributes on the element where it occurred.Made many improvements to
p:import-functionssupport.Added special handling for
use-whenonp:import.Support variables in
matchexpressions onp:viewport.Fixed error codes for several tests. Correctly report static errors in more cases.
Reworked SVG output so that there’s one file for all the pipelines and one file for all the graphs (instead of multiple files for each).
Added support for the
--stepoption.Fixed a bug in the attribute value template parser. It failed to handle nested comments correctly.
- 3.0.0-alpha3, 02 Dec 2024
Fixed issue #9, which reveals that the XPath parser is still a bit too ad hoc.
Fixed a couple of NVDL tests by sorting out the cache for schemas. Updated the
p:xincludestep so that it looks in the cache.Added
cx:cache-addandcx:cache-deleteto let pipeline authors update the cache.Made a bunch of improvements to static option handling.
Resolved the situation where two steps with the same type (private steps in different libraries, for example) would not work correctly.
These changes resolved the remaining input, option, with-option, step-available, and
p:runtests.
- 3.0.0-alpha2, 26 Nov 2024
Fixed issue #3,
[p:]messageattributes were not supported on steps.Attempted to fix issue #2, XML Calabash failed on startup on Windows. The problem, correctly identified by Martin, was in the attempt to create a URI from a path. On Windows, paths contain
\and those are forbidden in URIs.I’ve adopted the solution suggested by Martin, and tested that it passes a “smoke test” on Windows. But I’m not highly confident that this is the end of the Windows path issues.
Removed “empty steps” from the runtime graph. These are steps that generate no output, designed to model
p:emptybindings. They clutter the graph and I don’t think they’re required any more. An unbound input is now “welded shut” so that no inputs are expected.
- 3.0.0-alpha1, 24 Nov 2024
Initial publication.