Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
2.7.5 Syntax: allow p:inline to be optional. #38
XProc 1.0 offers relatively few default behaviors, requiring instead that pipelines specify every construct fully. User experience has demonstrated that this leads to very verbose pipelines and has been a constant source of complaint. XProc 2.0 will introduce a variety of syntactic simplifications as an aid to readability and usability, including but not limited to:
Allow p:inline to be optional.
To make things easier to use and author we are proposing new p:inline syntax behaviour where p:inline is optional.
elements that can contain p:inline are;
I think the crux of this change is what are the heuristics to discriminate the following potential sibling elements
That is if we intended to inline an element from XProc own namespace, clearly the following would not work
and would have to resort to
This is exactly the kind of edge case that we should ask authors to use when they mean 'something else'.
So the heuristic roughly is;
Any element which can contain a p:inline can alternately contain inline content (as long as its not in XProc own namespace) which will be wrapped in a document node and treated exactly as its set out in XProc spec section 5.12.
If the author wants to exclude inline prefixes then they will need to explicitly use p:inline.
Similarly, where it is intended to inline an element from XProc's own namespace, such as (p:empty|p:data|p:namespaces|p:pipeinfo|p:documentation) then an explicit p:inline will be required, otherwise an appropriate error will be thrown.
Lastly, if the author intends to include multiple inline document nodes then multiple explicit p:inline(s) would then be required with no mixing of implicit and explicit p:inline behaviour allowed.
referenced this issue
Oct 4, 2014
now with diffs
(I've learned how to push github around with this issue ... apologies for the churn ... I will leave the various commits here (instead of squashing them into one) as a testament to my ignorance.)
spec with changes
for discussion at 12/11/14 meeting