MorganaXProc-IIIee (extended edition)
Coming soon! --- Coming soon! --- Coming soon!
MorganaXProc-IIIee (Extended Edition) is a complete implementation of XProc 3.1 (Community group report 30 May 2025). It covers all required and optional features of the core specification as well as of the standard step specification. In addition all other specified steps of the Additional Specifications are implemented. The only feature not covered (yet) is passing PSVI annotication between steps.
More specific:
-
All required and optional features of the core specs are implemented. In addition to the features implemented in MorganaXProc-IIIse this includes
-
Support for
p:import-functionsfor XPath 3.1 functions from XSLT and/or XQuery: Functions defined in XSLT and/or XQuery can be used in XPath expressions in XProc. With extension attribute
[p:]timeoutpipeline authors can control long running steps by suggesting a duration after which the processor aborts step execution and raises a dynamic error.While MorganaXProc-IIIee comes with a large library of steps and XProc offers the possibility to define new steps based on this steps, there might be cases where a step is needed to perform additional operations. With atomic extension steps programmers can do exactly this by declaring an atomic step and use attribute
mox:classto specify the class ( in a JVM compatible language like Java, Scala, Kotlin) implementing this step.
-
As with MorganaXProc-IIIse, all file steps like
p:directory-list,p:file-copy,p:file-delete,p:file-mkdiretc. are supported.In addition to the validation steps supported by MorganaXProc-IIIse, validation with NVDL (
p:validate-with-nvdl) and DTD (p:validate-with-dtd) are implemented.Dynamic pipeline execution with
p:runis supported. This allows users to run an XProc pipeline which is dynamically created, i.e. by another XProc pipeline, an XSLT stylesheet, etc.The operation system steps
p:os-infoandp:os-execare supported. Stepp:os-infoallows authors to obtain information about the operation system underlying the pipeline's execution. Withp:os-execexternal (non XProc) commands are executed. Those commands can get there standard input from a pipeline, and return there standard output and standard error to the pipeline, allowing interaction between XProc and non XProc algorithms.With the paged media step, XProc pipelines can created paged media like PDF. While
p:xsl-formattertakes XSL as source to produce paged media formats, stepp:css-formatterapplies CSS (for paged media) to XML or HTML documents. Currently XSL processing uses Apache⢠FOP. A connector for another XSL processor is in final testing. CSS processing is done with WeasyPrint.-
The extended edition also offers support for processing Invisible XML (
p:invisible-xml (p:ixml)), sending e-mails viap:send-mail, and implements text related steps (likep:markdown-to-html). In addition to the steps and features specified by the XProc 3.1 community group, MorganaXProc-IIIee comes with processor-provided extension steps like
mox:profile-image,mox:convert-image,mox:epubcheckormox:text-wrap-lines. Some useful extension functions are supplied too, e.g.mox:is-well-formed-document()ormox:evaluate-xpath().MorganaXProc-IIIee is also the primary target to implement optimizations to speed up pipeline execution. The most effective so far is an advanced implementation of p:for-each using system threads to process documents parallel. More of this is to come in the future.
For a full overview please see feature matrix or the combined reports against the test suite.
A first draft of a manual is available here.
MorganaXProc-IIIee will be available with a perpetual license including free updates for one year, and early access to critical bug fixes primarily for a single computer (desktop or laptop). Other types of license might be available on request.