W3C home > Mailing lists > Public > public-xml-processing-model-wg@w3.org > August 2007

Re: Comments on August 10 editors' draft through section 2.6

From: Norman Walsh <ndw@nwalsh.com>
Date: Wed, 22 Aug 2007 14:30:02 -0400
To: public-xml-processing-model-wg@w3.org
Message-ID: <m27inna0d1.fsf@nwalsh.com>
/ ht@inf.ed.ac.uk (Henry S. Thompson) was heard to say:
| 2.1 Steps:
|  Should we make
|   "The steps that occur directly inside a compound step are called
|    contained steps."
|  more accurate, e.g. by saying
|   "The steps that occur as children or, in the case of *p:choose* and
|    *p:try*, as grandchildren, of a compound step are called contained
|    steps."

On further reflection, I don't think I want to call the grandchildren
of a p:choose it's contained steps. I think a p:choose contains p:when
and p:otherwise steps and each of those has its own contained step.

| 2.1.1 Step names:
|  In the discussion of the example, both p:choose and p:when are given
|  names, so one concludes they are steps.  But in the production for
|  subpipeline above, only p:choose appears.  I think we need to say
|  something explicit, sooner rather than later, about the slightly
|  anomalous state of p:when, p:otherwise and p:catch, perhaps along the
|  lines of:
|    p:when, p:otherwise and p:catch have a special status.  Although
|    they behave in many ways as compound steps, in that they wrap a
|    subpipeline and may specify inputs and outputs, they are not
|    independent.  They *must* only appear immediately within p:choose
|    (p:when and p:otherwise) or p:try (p:catch).
|    On the other hand p:choose and p:try are special too, in that they
|    *must not* contain other steps directly, but only indirectly.
|  which might go somewhere near the end of 2.1.

I added the following near the end of 2.1:

<para>This simple distinction between atomic and compound steps is
occasionally stretched. The immediate children of some compound steps,
e.g. <tag>p:choose</tag> and <tag>p:try</tag>, are special. In the
case of <tag>p:choose</tag>, the <tag>p:when</tag> and
<tag>p:otherwise</tag> elements serve as wrappers around different
pipelines at most one of which will be processed. In the case of
<tag>p:try</tag>, the <tag>p:catch</tag> element is a wrapper around a
subpipeline that will only be processed if the initial
<tag>p:group</tag> fails. Acknowledging this slight irregularity, we
nevertheless treat all compound steps as if they directly contained
one or more subpipelines.</para>

| 2.2 Inputs and Outputs:
|  The list of allowed sources for input bindings needs something added
|  along the lines of
|    * A special port provided by an ancestor compound step,
|      e.g. 'current' for p:for-each and p:viewport


|  Similarly, the second bullet of allowed destinations for outputs
|  should read somethign like:
|    * One of the outputs declared on the top-level p:pipeline step, or
|      on its container.

Actually, I think it's sufficient to say simply "on its container".
The p:pipeline can't connect one of its outputs to one of its

|  Note the asymmetry between the above two changes -- is it correct?

I changed bullet four of the "input" list to simply:

<para>One of the inputs declared on one of its ancestors.</para>

It turns out that the only compound step on which we provide p:inputs
is p:pipeline, so it amounts to the same thing but reads more

| 2.3 Primary Inputs and Outputs:
|  I'm not happy that the definitions of primary i/o are contractdicted
|  by the prose which immediately follows.  I suggest they be rewritten
|  along the following lines:

I like your proposed text, but I don't see any contradiction in what
follows. Clue, please?

|   Definition: If a step has a document input port which is explicitly
|   marked "primary='yes'", or if it has exactly one document input
|   port, and that port is _not_ explicitly marked "primary='no'", then
|   that input port is the primary input port of the step.] If a step
|   has a single input port and that port is explicitly designated as
|   not being the primary input port, or if a step has more than one
|   input port and none is explicitly designated the primary, then the
|   primary input port of that step is undefined.
|   It is an error (xxx) for a step to explicitly designate more than
|   one document input port as primary.
|  and similarly for output ports.
|  ------
|  The following can't be right:
|   "Additionally, if a compound step has no declared inputs and the
|    first step in its subpipeline has an unbound primary input, then an
|    implicit primary input port (named \u201csource\u201d) will be added
|    to the compound step."
| Compound steps other than p:pipeline _can't have_ declared inputs.
| The passing of the _default readable port_ down is handled by the
| general rule in 2.7, modified if necessary by the individual compound
| steps.
| I think this was drafted in false parallel to the subsequent para, and
| should be changed to _only_ apply to p:pipeline, as follows:


|   "Additionally, if a p:pipeline step has no declared inputs and the
|    first step in its subpipeline has an unbound primary input, then an
|    implicit primary input port (named \u201csource\u201d) will be
|    added to the p:pipeline (and consequently bound to the first step's
|    primary input port)."
| A similar parenthesis could be added to the parallel sentence for
| outputs:
|   "If a compound step has no declared outputs and the last step in
|    its subpipeline has an unbound primary output, then an implicit
|    primary output port (named \u201cresult\u201d) will be added to the
|    compound step (and consequently the last step's primary output will
|    be bound to it)."


| ------
|  Overall, I am a bit worried about the bulleted lists here, as they
|  are not all exactly right -- perhaps at the end of the section we
|  could add something such as

Where is "here"?

|    The above lists of possible port-to-port connections are only
|    summaries---the exact details are given below in sections 2.7 and
|    5.11.
| 2.5 Parameters:
|  A parallel change to the one suggested above should be made to the
|  definition of primary parameter input port.


| ------
|  availble -> available

Got it.

| [C.2 Fragment Identifiers:
|   Excellent!]


| I'm going to ship this and pick up with section 2.7 in a subsequent
| message.

Please do!

                                        Be seeing you,

Norman Walsh <ndw@nwalsh.com> | All things are contingent. And there is
http://nwalsh.com/            | chaos.--Spalding Gray

Received on Wednesday, 22 August 2007 18:28:53 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 8 January 2008 14:21:54 GMT