The W3C has announced XProc, a new tool for managing XML-rich processes. As decribed in the specification XProc: An XML Pipeline Language, provides a standard framework for composing XML processes. XProc streamlines the automation, sequencing and management of complex computations involving XML by leveraging existing technologies widely adopted in the enterprise setting.
"XML is tremendously versatile," said Norman Walsh, Mark Logic, and one of the co-editors of the specification. "Just off the top of my head, I can name standard ways to store, validate, query, transform, include, label, and link XML. What we haven't had is any standard way to describe how to combine them to accomplish any particular task. That's what XProc provides."
XProc can be used, for example, to sequence the following set of operations: (1) given a news ticker feed (2) whenever a company is mentioned, use a Web service to contact a stock exchange then (3) insert current share prices into the feed and (4) insert background information about the company that has been extracted from a database. In addition, this enhanced feed could be presented in several ways to multiple users including (5) for print or (6) with an interactive form so that people can purchase shares online. In this scenario, XProc controls a number of processes that might be implemented using other standards such as XQuery, XSLT, XSLT-FO, XForms, and HTML.
Because XProc descriptions are in XML, people can use readily available XML tools to generate, transform, and validate them.
"Processing XML as XML is a hugely powerful design pattern, and XProc makes this easy and attractive," says Henry Thompson, also one of the co-editors of the specification. "XProc exemplifies what W3C does best: we looked at existing practice -- people have been using a number of similar-but-different XML-based languages -- and we produced a consensus standard, creating interoperability and critical mass."
XProc is supported by a test suite that covers all of the required and optional steps of the language as well as all the static and dynamic errors.


