Tuesday, May 22, 2007

XML pipelines: XPL and XProc

XML Prague Logo

As blogged about earlier, we will be speaking on June 16 at XML Prague about practical applications of XML pipelines. This will be the first time I attend this conference and I am looking forward to it as I will be in good company! In the conference paper, I briefely compare XPL to XProc, and I thought I would share this on our blog.

First, a little bit of history to explain where we come from. XPL stands for XML Pipeline Language. It was developed by Alessandro Vernet and myself at Orbeon in 2002, along with an implementation which became open source in 2004 under LGPL, as part of Orbeon PresentationServer (now Orbeon Forms). In 2005, we submitted a specification for XPL at W3C. Orbeon now participates in the XML Processing Working Group at W3C, which was created subsequently.

Even though Orbeon Forms now focuses on being the best possible open source forms solution, XPL is still at the core of the platform, holding together critical bits including:

So how does XPL compare with XProc? They are quite close languages (as of May 2007, since XProc is still a working draft). In particular, both:

  • Have the same goal: performing sequences of operations on XML documents.

  • Have an XML-based syntax.

  • Support the exchange of XML documents between "steps" such as XSLT, XInclude, and many more (called "processors" in XPL terminology).

  • Support steps with multiple inputs and outputs.

  • Support iterations and conditionals.

XProc introduces new features over XPL, including:

  • Exception handling, a feature we had long wished to implement in XPL.

  • Viewports, which apply subpipelines to one or more subsections of a document.

  • Passing sequences of documents instead of just one document between steps.

  • Parameters and options.

  • A standard step library, which ensures a minimum of interoperability between compliant implementations.

In short, for most practical purposes XProc can be seen as a superset of XPL. Most existing XPL pipelines can be transformed into XProc with a simple XSLT stylesheet, provided that the same steps are available on both sides. Conversely, a subset of XProc can be implemented on top of XPL with a similar transformation.

A very important aspect of XProc is that it will be a standard and have multiple (hopefully) interoperable implementations. This should pave the way for an explosion of applications of XML pipelines, and as the authors of one of XProc's ancestor languages, we at Orbeon will have to contain our pride ;-)

No comments:

Post a Comment