Projects‎ > ‎

Pipelines - Implementing the XProc W3C Standard in Orbeon Forms

Note: This page describes an Orbeon Forms project, not a feature which is currently part of Orbeon Forms.

About Pipelines

In there simplest form, pipelines are used to do successive transformations on XML documents. They are often used in publishing, for instance to create a web page based on some content, say a newspaper article, a template describing where the different parts of the article should go on a web page, and a theme for the web site which include elements such as a sidebar and a copyright notice.

More generally, pipelines can be used to easily perform operations on XML data, by putting together pre-built components that operate on XML data, doing things such as calling REST services, validating XML data, or transforming it.

Pipeline in Orbeon Forms, XPL, and XProc

Orbeon has defined a pipeline language called XPL, and developed an implementation (the "pipeline engine") which is part of Orbeon Forms. The implementation is open source (under LGPL), like the rest of Orbeon Forms. It is quite robust, and we consider it to be a mature technology, which core implementation hasn't changed much during the last 2 or 3 years. The XPL language as been submitted to the W3C in 2005 and is published on the W3C web site as a member submission.

Since then, a new working group (WG) called the XML Processing Model WG has been created at the W3C to standardize a pipeline language. Orbeon has been part of this WG, and the new language, called XProc bears a number of resemblances with XPL, both from a syntactic and semantic perspective.

Considering how much XPL is being used, we will continue to support the XPL engine in Orbeon Forms. But we also want to provide people with the option of using XProc instead of XPL, and hence our goal of supporting XProc in Orbeon Forms.

Implementing XProc

Multiple approaches can be taken to supporting XProc in Orbeon Forms. Each one will have to be closely evaluated:
  • Extending the XPL engine (written in Java) to support XProc constructs and semantics not present in XPL. This could be done:
    • Strictly in Java
    • Or with a combintation of Java (for the features of XProc missing in XPL) and a preprocessing step (for the features of XProc already present in XPL)
  • Integrate an existing XProc engine, such as XML Calbash from Norman Walsh.
  • Create a new implementation of XProc from scratch.