XProc

Last updated
XProc
Filename extension
.xpl
Internet media type
application/xproc+xml
Type of format Scripting language / Data processing
Extended from XML
Standard XProc 3.1
Website https://xproc.org

XProc is an XML transformation language for processing documents in pipelines: chaining conversions and other steps together to achieve the desired results. It can handle documents in XML, HTML, JSON, text and binary.

Contents

The current (stable) version is 3.1. [1] While XProc 1.0 [2] is a W3C Recommendation, XProc 3.1 is a standard developed by the W3C XProc Next Community Group. [3]

Its main characteristics are:

Example

The following is a (very) simple XProc pipeline:

<p:declare-stepxmlns:p="http://www.w3.org/ns/xproc"version="3.0"><p:inputport="source"/><p:outputport="result"/><p:add-attributeattribute-name="timestamp"attribute-value="{current-dateTime()}"/><p:deletematch="@data"/></p:declare-step>

So if you supply the following XML document to this pipeline:

<exampledata="321"><itemdata="123">Somedata...</item></example>

It comes out as:

<exampletimestamp="2024-09-11T15:05:22.82+02:00"><item>Somedata...</item></example>

The exact date and time recorded in the timestamp attribute is of course dependent on the date and time the pipeline is executed.

Understanding and learning XProc

The learning page of the XProc website [4] contains links to all the learning and reference materials the XProc community group is aware of. There is a special 101 section with introductory learning materials.

History

Ideas for something, some programming language, for processing were there right from the beginnings of XML, at the end of the twentieth century. But it was not until the end of 2005 that the W3C started a working group called the XML Processing Model Working Group. This resulted in the recommendation for XProc 1.0 dated May 11, 2010. [2]

There were various attempts to create working XProc 1.0 processors. The only two currently available as open source products that implement the full 1.0 standard are XML Calabash [5] and MorganaXProc. [6]

After the release of version 1.0, the XProc working group continued debating a next version. Ideas were raised for version 2.0. This was based on a non-XML syntax which didn’t raise a lot of support from the community. Engagement in the working grouped waned and in 2016 it ceased to exist.

In June 2017 the XProc Next Community Group [3] was founded and started working on a new version, now completely XML based. Because this was a completely different approach than the 2.0 initiative, the version number was increased to 3.0. A stable version was released on 12 September 2022. [1]

In 2024 the working group started work on a minor update which was released as XProc 3.1 on 29 May 2025. It fixes a few errata in the language specification and the standard step library and also publishes the following step libraries as finished specifications [7] :

Implementations

The following processors support XProc 3.0 and above:

Implementations of XProc 3
NameMaintainerCompletenessNotes
MorganaXProc-IIIse Achim BerndzenImplements all required features plus most of the optional parts of the XProc 3.1 standard [9] [10] .
XML Calabash 3 Norman Tovey-WalshImplements all required features and most of the optional parts of the XProc 3.1 standard [9] [11] .Also implements a variety of extension steps

XProc 3.0 is backwards incompatible and therefore the above implementations are not expected to support XProc 1.0 [12] .

Older versions

The following processors support the XProc 1.0 standard:

There were several other XProc 1.0 implementations, but these were either incomplete or are not maintained.

The XProc logo and mascot is a fish, called Kanava, after the Finnish word for pipeline. The logo was created by Bethan Tovey-Walsh.

References

  1. 1 2 The XProc website
  2. 1 2 The XProc 1.0 specification
  3. 1 2 The XProc next community group
  4. The XProc 3.0 learning page
  5. 1 2 The XML Calabash 1.0 processor
  6. 1 2 The Morgana XProc 1.0 processor
  7. "XProc - Specifications". xproc.org. Retrieved 2025-08-09.
  8. "XProc 3.1: Standard Step Library". spec.xproc.org. Retrieved 2025-08-09.
  9. 1 2 "XProc - Processors". xproc.org. Retrieved 2025-08-09.
  10. The MorganaXProc-IIIse XProc processor
  11. The XML Calabash 3.0 processor
  12. Tovey-Walsh, Norman (18 Feb 2020). "XProc 3.0: Ready or Not". so.nwalsh.com. Retrieved 2025-08-09.