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

Re: CR draft ready for review

From: Norman Walsh <ndw@nwalsh.com>
Date: Fri, 21 Nov 2008 07:47:51 -0500
To: public-xml-processing-model-wg@w3.org
Message-ID: <m2abbtqm88.fsf@nwalsh.com>
Toman_Vojtech@emc.com writes:

> Today I found two small things:
>
> 5.1.2 says:
>
> "If a parameter input port on a ***p:pipeline*** is not bound, it is
> treated as if it was bound to an automatically created p:sink step. In
> other words, if a ***p:pipeline*** does not contain any steps that have
> parameter input ports, ..."
>
> Shouldn't the text use "pipeline which contains the step" instead of
> p:pipeline? The containing pipeline can be represented also by
> p:declare-step, not only p:pipeline, so the text may be misleading that
> this behavior applies only to p:pipeline.

No, I don't think so. This clause really does only apply to p:pipeline.

If you say

  <p:pipeline>
    ...

you *implicitly* get an primary parameter input port named "parameters".
If there's no binding for a primary input port, that's an error. So in 
the case where you have a p:pipeline and don't use the parameter input port,
we need to say what happens to it. We say that it's implicitly bound to
p:sink so that it just "goes away".

If you use p:declare-step, then you don't get the parameter input port
implicitly, you have to put it in *explicitly*. If you put it in
explicitly, you have to explicitly bind it too, or that is an error.

> I am also wondering: how can anything be bound (be it only formally) to
> p:sink which has no output ports?

Consider this pipeline:

<p:declare-step ...>
  <p:input port="source"/>
  <p:input port="params" kind="parameter"/>
  <p:output port="result"/>
  <p:identity/>
</p:declare-step/>

It's not valid because it has an unbound primary input port. But this
one is fine:

<p:declare-step name="main" ...>
  <p:input port="source"/>
  <p:input port="params" kind="parameter"/>
  <p:output port="result">
    <p:pipe step="identity" port="result"/>
  </p:output>
  <p:identity name="identity"/>
  <p:sink>
    <p:input port="source">
      <p:pipe step="main" port="params"/>
    </p:input>
  </p:sink>
</p:declare-step/>

> 5.1.2/Example 10 says:
> "This p:pipeline declares that it accepts parameters."
>
> The pipeline contains no parameter input port, so I think we should
> remove the sentence.

Nope. It's a p:pipeline, so it *does* declare parameters. From 4.1:
 
  The p:pipeline element is just a simplified form of step
  declaration. A document that reads:

  <p:pipeline some-attributes>
    some-content
  </p:pipeline>

  can be interpreted as if it read:

  <p:declare-step some-attributes>
    <p:input port='source' primary='true'/>
    <p:input port='parameters' kind='parameters' primary='true'/>
    <p:output port='result' primary='true'>
    some-content
  </p:declare-step>

                                        Be seeing you,
                                          norm

-- 
Norman Walsh <ndw@nwalsh.com> | It is better to waste one's youth than
http://nwalsh.com/            | to do nothing with it at all.--Georges
                              | Courteline

Received on Friday, 21 November 2008 12:48:33 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Friday, 21 November 2008 12:48:34 GMT