On parameters

As reluctant as I am to bring parameters up again...

I've been thinking about how to implement the decisions we made last
week.

Given that we allow

  <p:parameter-set name="foo">
    <p:pipe step="somewhere" port="something"/>
  </p:parameter-set>

I think an implementation basically has to treat p:parameter-set as a
mostly ordinary step step with an arbitrary number of inputs.

What's more, given that the parameter set can contain document
references, I think it follows that in

  <p:xslt>
    <p:use-parameter-set name="foo"/>
    <p:input port="source">...</p:input>
    <p:input port="stylesheet">...</p:input>
  </p:xslt>

the p:use-parameter-set is effectively an input. It has to be
considered an input, certainly, when searching for loops in the graph.

Does it not follow that we can (should?) lose the p:parameters step
and simply describe p:parameter-set and p:use-parameter-set in the
terms I've outlined above?

Parameter sets that load several documents are just like other steps
that load several documents. Two steps that use the same parameter set
are just like two steps that read the same output from some other
step.

If you're persuaded by my reasoning above, would you also be persuaded
that:

  <p:xslt>
    <p:use-parameter-set name="foo"/>
    <p:use-parameter-set name="bar"/>
    <p:use-parameter-set name="#pipeline-parameters"/>
  </p:xslt>

is basically just the same as

  <p:xslt>
    <p:source port="paramters">
      <p:pipe step="foo" port="result"/>
      <p:pipe step="bar" port="result"/>
      <p:pipe step="#pipeline-parameters" port="result"/>
    </p:source>
  </p:xslt>

And if you've gone that far, why would you not continue with the
observation that:

  <p:parameter-set name="foo">
    <p:use-parameter-set port="foo"/>
    <p:use-parameter-set port="bar"/>
    <p:use-parameter-set port="#pipeline-parameters"/>
    <p:parameter name="somename" value="1"/>
  </p:parameter-set>

is basically just the same as

  <p:parameter-set name="foo">
    <p:input port="parameters">
      <p:pipe step="foo" port="result"/>
      <p:pipe step="bar" port="result"/>
      <p:pipe step="#pipeline-parameters" port="result"/>
    </p:input>
    <p:parameter name="somename" value="1"/>
  </p:parameter-set>

And then we simply have a new port named "parameters" on (some|all)
steps and a new step called "p:parameter-set".

                                        Be seeing you,
                                          norm

-- 
Norman Walsh <ndw@nwalsh.com> | Everything should be made as simple as
http://nwalsh.com/            | possible, but no simpler.

Received on Tuesday, 12 June 2007 17:41:23 UTC