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

Two versions are available:

December 2019 “last call” draft

The editorial team believes that the core language specification is in “last call”. We are unaware (at the time of publication) of any substantive issues. This draft is stable and will not be updated. (The previous draft remains unchanged.)

Current editorial draft

The current editorial draft tracks changes made since the “last call” draft. For the most part, only editorial changes are expected. See the Change Log appendix for a list of substantive changes. This draft is updated regularly as the editorial team address issues.

If you find (either version of) 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 plans to have this document, and the remainder of the step documents, in “last call” by spring, 2020.

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.).
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).
Mail steps
Steps related to email.
Paged media steps
Steps related to producing paged media (e.g, PDF files).
RDF/Semantic web steps
Steps related to RDF and semantic web technologies.
Text steps
Steps related to accessing text files (Markdown, etc.).
Validation steps
Steps related to validation of XML.
Extensible Validation Report Language (XVRL)
XVRL is a unified vocabulary for validation reports, see github.com/xproc/xvrl.

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.