Re: The defaulting story

/ Norman Walsh <Norman.Walsh@Sun.COM> was heard to say:
| I don't think I'm ready to spend telcon time on it, but maybe it's
| time to start sketching out our defaulting story in email.

Recasting it as a story without names.

Here's a pipeline:

<p:pipeline name="fig1"
	    xmlns:p="http://www.w3.org/2006/11/pipeline">
  <p:input port="source" sequence="no"/>
  <p:input port="schemaDoc" sequence="yes"/>
  <p:output port="result">
    <p:pipe step="s2" port="result"/>
  </p:output>

  <p:step type="p:xinclude" name="s1">
    <p:input port="source">
      <p:pipe step="fig1" port="source"/>
    </p:input>
  </p:step>

  <p:step type="p:validate" name="s2">
    <p:input port="source">
      <p:pipe step="s1" port="result"/>
    </p:input>
    <p:input port="schema">
      <p:pipe step="fig1" port="schemaDoc"/>
    </p:input>
  </p:step>
</p:pipeline>

If we establish the rule that a component with one unspecified input
is automatically connected to the output from the preceding sibling,
then we get:

<p:pipeline name="fig1"
	    xmlns:p="http://www.w3.org/2006/11/pipeline">
  <p:input port="source" sequence="no"/>
  <p:input port="schemaDoc" sequence="yes"/>
  <p:output port="result">
    <p:pipe step="s2" port="result"/>
  </p:output>

  <p:step type="p:xinclude" name="s1">
    <p:input port="source">
      <p:pipe step="fig1" port="source"/>
    </p:input>
  </p:step>

  <p:step type="p:validate" name="s2">
    <p:input port="schema">
      <p:pipe step="fig1" port="schemaDoc"/>
    </p:input>
  </p:step>
</p:pipeline>

I don't see how to extend that rule to include parents.

If we add the rule that a component with one output named is
automatically attached to the single output from its last child, we
get:

<p:pipeline name="fig1"
	    xmlns:p="http://www.w3.org/2006/11/pipeline">
  <p:input port="source" sequence="no"/>
  <p:input port="schemaDoc" sequence="yes"/>
  <p:output port="result"/>

  <p:step type="p:xinclude" name="s1">
    <p:input port="source">
      <p:pipe step="fig1" port="source"/>
    </p:input>
  </p:step>

  <p:step type="p:validate" name="s2">
    <p:input port="schema">
      <p:pipe step="fig1" port="schemaDoc"/>
    </p:input>
  </p:step>
</p:pipeline>

And finally, if we say that steps are only optionally named, then
we get:

<p:pipeline name="fig1"
            xmlns:p="http://www.w3.org/2006/11/pipeline">
  <p:input port="source" sequence="no"/>
  <p:input port="schemaDoc" sequence="yes"/>
  <p:output port="result"/>

  <p:step type="p:xinclude">
    <p:input port="source">
      <p:pipe step="fig1" port="source"/>
    </p:input>
  </p:step>

  <p:step type="p:validate">
    <p:input port="schema">
      <p:pipe step="fig1" port="schemaDoc"/>
    </p:input>
  </p:step>
</p:pipeline>

Here, I've assumed that it's an error if you attempt to use defaulting
and there's more than one choice (e.g, if the preceding sibling has
more than one output or you've left more than one input unspecified).

On the whole, I like my original name-based rules better. I think
they're easier to explain and provide for slightly more abbreviation.

                                        Be seeing you,
                                          norm



-- 
Norman Walsh
XML Standards Architect
Sun Microsystems, Inc.

Received on Thursday, 21 December 2006 14:54:23 UTC