XProc 3.0: A Pipeline Language

XProc is a language for describing pipelines, sequences of operations to be performed on a set of documents. This is the homepage for the current set of XProc specifications. It also contains links to other reference information, implementations, and helpful resources. You will find additional information at XProc.org.

If you’d like to add something to these pages, please feel free to open an issue with the request or edit the page and send us the changes as a pull request.

SpecificationsReferencesImplementationsTest suite

The date of last publication is not available at this time.


The following drafts are the most currently published specifications.

XProc 3.0: An XML Pipeline Language

The editorial team believes that the core language specifiction is in “last call”. We are unaware (at the time of publication) of any substantive issues. If you find the language specification unclear or believe that you’ve found an error or omission, please let us know.

XProc 3.0: Standard Step Library

The standard step library contains all of standard atomic steps, that is, the steps that are available in all implementations of XProc 3.0.

The XProc community hopes to have this document, and the remainder of the step documents, in “last call” by June, 2019.

Additional specifications

Not all steps make sense in every environment where an XProc processor might run. For example, paged media steps are unlikely to be supported on a mobile device, and steps that operate on files might not make sense in an embedded environment.

To simplify the task of identifying which steps an implementation supports, suites of steps considered “optional” are organized into separate specifications:

Dynamic pipeline execution (p:run)
A step that runs pipelines constructed dynamically.
File steps
Steps related to accessing files on a filesystem (rename, move, delete, etc.).
JSON steps
Steps related to processing JSON documents.
Operating system steps
Steps related to accessing aspects of the underlying operating system (information about the system and the ability to execute commands on it).
Paged media steps
Steps related to producing paged media (e.g, PDF files).
Text steps
Steps related to accessing text files (head, tail, etc.).
Validation steps
Steps related to validation (of XML, JSON, etc.).

It’s likely that additional, optional libraries will be created. (Steps for linked data, for sending mail, for accessing ODBC services have all been suggested.)

If you find any of the step specifications unclear or believe that you’ve found an error or omission, please let us know. Please also tell us if you have suggestions for new step libraries or if you think that an optional step should be required or vice versa.


A programmer’s reference to XProc 3.0 will be available.


As XProc 3.0 development proceeds, two implementations are being developed:


MorganaXProc currently supports XProc 1.0 and a 3.0 implementation is being developed.

XML Calabash

XML Calabash currently supports XProc 1.0 and a 3.0 implementation is being developed.

Test suite

A test suite is being developed to improve the reliability and interoperability of XProc 3.0 implementations. There are several ways to view the test suite, including:


All of the tests in alphabetical order.

Implementation reports

Tracks implementation results against the test suite.