New XProc Working Draft

Volume 11, Issue 42; 01 May 2008; last modified 08 Oct 2010

The XML Processing Model Working Group has published a new Working Draft of XProc: An XML Pipeline Language.

The working group has, I think, finished its review of all the comments received. Last November, we revealed several significant changes adopted by the Working Group. Today, we're revealing the rest of them.

The changes (since November) in the XProc working draft published today are:

  1. Fairly substantial syntax changes. A p:pipeline is now just syntactic sugar for a particular p:declare-step.

  2. Significantly reworked the syntax and semantics of variables, options, and parameters. Added p:variable. Imposed a syntactic distinction between declaration (p:option) and use (p:with-option/p:with-param) of options and parameters.

  3. Clarified the scope of variables and options.

  4. Removed value attribute from p:variable, p:option, p:with-option, and p:with-param.

  5. Removed automatic declaration of parameter input ports; you have to declare them explicitly if you need them.

  6. Added p:base-uri() and p:resolve-uri() XPath extension functions to support (XPath 1.0) pipelines that need access to the base URI of documents.

  7. Removed ignored namespaces, added p:pipeinfo.

  8. Redefined the p:label-elements step to use a step-local variable in the XPath context.

  9. Added psvi-required attribute to pipelines.

  10. Changed definition of p:error to better address localization issues.

The syntax changes, and making p:pipeline syntactic sugar for a particular p:declare-step, have the effect of making very simple, straight-through pipelines syntactically simple again.

Reorganizing some of the option and parameter elements, and adding a variable element, makes the language bigger (in the sense that it has more elements) but I think it has significantly reduced some of the confusing sublty that used to exist around declaration and use of options.

In general, I think these are all changes for the better. And I think we're done. This is a Last Call working draft in all but name. The changes are significant enough that we thought it would be best to float them in an ordinary working draft first. That will, I hope, save us the embarrassment of having to do more than two last calls.

Read and review! Comments on these items, in particular, please.

Gazing into my crystal ball, I see another last call in June, Candidate Recommendation in July, and a Recommendation before the end of the summer.