Perhaps the penultimate XProc draft
Today, the XML Processing Model Working Group published a new working draft. Not the very last working draft, but possibly very close.
For the past few months, the XML Processing Model Working Group has been busily resolving issues raised during the CR. So busy with XProc, in fact, that we forgot about our heartbeat requirement.
Today, we published a new working draft of XProc: An XML Pipeline Language. In addition to editorial improvements and clarifications, this draft contains a small number of significant changes:
-
Changed
p:choose
andp:try
. An output port produces a sequence if that port produces a sequence in any subpipeline. -
Changed
p:error
. Added primary output portresult
.
Taken together, these two changes make it much easier for pipeline
authors to write p:choose
steps where one of the branches
uses a p:error
.
-
Changed
p:exec
. Addedarg-separator
,path-separator
, andfailure-threshold
. Input can be zero or one document only. Added support for a result code.
Implementor experience revealed that our design for p:exec
was insufficient. These changes fix problems with platform-specific
path separators and dealing with arguments that contain spaces.
-
Clarified
p:http-request
. Interaction with HTTP redirects and cookies is now explicit; the interaction of media types and serialization, several aspects of multipart messages, and a number of other areas have been clarified as well.
The p:http-request
step was the subject of
a lot of discussion. We made quite a few changes,
almost exclusively clarifications.
-
Clarified the interpretation of base URIs and the
xml:base
attribute.
This last change clarifies that the inherent base URI of a node
can exist independent of an xml:base
attribute.
In particular, removing the xml:base
attribute
does not change the inherent base URI. (Though adding one does change the
base URI, of course, so perhaps “independent” wasn't exactly the right
word.)
We're almost done
The bottom line is that we really are almost finished. The test suite still needs to be fleshed out, and our implementors need to get to complete coverage, but I think that language evolution is coming to an end.
Ironically, in the time between requesting publication of
today's draft and today, the WG identified and corrected one
more issue. We added a
p:value-available()
function to allow pipeline
authors to identify options that have no specified value.
Clearly, we can't absolutely promise nothing else will change, but the chair is setting the bar pretty high.