Re: Another take on versioning

Jeni Tennison <jeni@jenitennison.com> writes:

> Put another way, what I'm suggesting is:
[...]

Ok, so...taking this as far as I can...

1. We replace the existing p:import mechanism with a version attribute.
   If the version requested > version of processor, then run in forwards
   compatible mode.

2. While loading/analyzing a pipeline

   a. Discard unrecognized attributes on elements in the XProc namespace
   b. Discard unrecognized elements in the XProc namespace
   c. Discard unrecognized options on XProc steps
   d. Discard unrecognized ports on XProc steps
   e. Turn any reference to an unrecognized port into <p:empty/>
   f. Mark any unrecognized step in the XProc namespace as invalid

3. Perform static analysis on the result. You get what you get. Maybe
   you get errors, maybe you don't. Maybe there are more independent
   pipeline fragments, maybe there aren't. Your gun, your bullet, your
   foot.

4. In forwards-compatible mode, it is a dynamic error (err:XD0032) to  
   attempt to evaluate a step that is marked “invalid”."

The most troubling part of this approach is the way in which "invalid"
has to percolate through the pipeline and be taken into consideration
in different places:

  1. When evaluting if all of the branches of a p:choose have the same
     signature, ignore any branch that directly contains an invalid
     step. If all the branches are invalid, then the p:choose is
     invalid.

  2. When evaluating if the p:try/p:group and p:catch branches of
     a p:try have the same signature, ignore either clause if it
     contains an invalid step. If the p:catch includes an invalid
     step, then the p:try is invalid.

  3. If a subpipeline contains an unrecognized step (not in a p:choose
     or p:try/p:group), then that subpipeline has to be marked
     invalid.

If you don't do this, then I don't think it's possible to build the
dependency graph.

                                        Be seeing you,
                                          norm

-- 
Norman Walsh <ndw@nwalsh.com> | Feature, n. A bug that's too hard to
http://nwalsh.com/            | fix.

Received on Monday, 12 October 2009 14:48:40 UTC