- From: Norman Walsh <ndw@nwalsh.com>
- Date: Mon, 25 Jun 2007 10:43:32 -0400
- To: public-xml-processing-model-wg@w3.org
- Message-ID: <87myyogkmj.fsf@nwalsh.com>
/ Richard Tobin <richard@inf.ed.ac.uk>, Henry Thompson <ht@inf.ed.ac.uk> was heard to say:
| Further to discussion during yesterday's telcon, herewith a proposal
| about input and output defaulting for pipelines.
|
| It basically adopts Richard's suggestion that a pipeline's inputs/outputs
| default if there is a need for them to do so, because their first
| component needs an input/final component produces an output.
|
| Here's how this works in detail:
|
| 1) We make defaulting more symmetrical for p:input and p:output, by
| adding a 'default' attribute to p:input, allowed only in
| declaration contexts (as there already is one on p:output). An
| input to a step is _the_ default input iff
|
| a) it is the only declared input and it was not declared with
| default='no';
| or
| b) it is declared with default='yes'.
|
| It is an error to declare more than one input as default='yes'.
| It is _not_ an error to have no default inputs.
| It is _not_ an error to have no default outputs (this is a change).
I don't think that's a change. Unless you meant to write "It _is_ an
error to have no default outputs."
| The default input of a step is bound to the default readable port if
| it is not otherwise bound;
|
| Non-default inputs are only bound to the default readable port if
| you call for that to happen by writing
| <p:input port="not-the-default-input-port"/>
So it's an error to leave a non-default input unspecified? What's the
value of this change?
| 2) Pipelines w/o a declared default input get an un-named default
| input iff their first contained step has an unbound default input.
Ok.
| 3) Pipelines w/o a declared default output get an un-named default
| output iff their last contained step has an unbound default output.
Ok.
| This means that not only does
|
| <p:pipeline>
| <p:identity/>
| </p:pipeline>
|
| do the obviously right thing, but so does
|
| <p:pipeline name='top'>
| <p:input port='stylesheet' default='no'/>
| <p:xslt>
| <p:input port='stylesheet'>
| <p:pipe step='top' port='stylesheet'/>
| </p:input>
| </p:xslt>
| </p:pipeline>
|
| To construct a pipeline which has no input, just start it with a step
| which needs no default input, e.g.
|
| <p:pipeline>
| <p:identity>
| <p:input port='source'>
| <p:document href="http://www.example.org/fixedInput.xml"/>
| </p:input>
| </p:identity>
| . . .
| </p:pipeline>
|
| This is the obvious case for a pipeline with no input, that is, a
| pipeline with a fixed input.
Ok.
| Exactly parallel, to construct a pipeline which produces no output,
| just end it with a step which produces no default output.
|
| We currently don't have an easy way to do this, but by analogy with
| the previous (pipeline with fixed input) example, a pipeline with
| fixed output _ought_ to be such a case:
|
| <p:pipeline>
| . . .
| <p:store href="http://www.example.org/fixedOutput.xml"/>
| </p:pipeline>
|
| To accomplish this, we propose two additional related changes:
|
| 4) The declaration for p:store should change to look like this:
|
| <p:declare-step type="p:store">
| <p:input port="source"/>
| <p:output port="result" default="no"/>
| . . .
| </p:declare-step>
|
| That is, p:store _has_ no default output.
Bleh. I suppose I can live with it, but I'd be happier, personally, if
pipeline authors creating pipelines with no output were required to
end with a p:sink step.
| 5) It _is_ an error for the _default_ output of a step to fall on the
| floor.
Why?
Be seeing you,
norm
--
Norman Walsh <ndw@nwalsh.com> | The trip doesn't exist that can set you
http://nwalsh.com/ | beyond the reach of cravings, fits of
| temper, or fears. If it did, the human
| race would be off there in a body.--
| Seneca
Received on Monday, 25 June 2007 14:43:55 UTC