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

Re: Concrete syntax for simple two-step example

From: Alex Milowski <alex@milowski.org>
Date: Thu, 06 Jul 2006 08:43:28 -0700
Message-ID: <44AD2FA0.7000001@milowski.org>
To: public-xml-processing-model-wg <public-xml-processing-model-wg@w3.org>

Henry S. Thompson wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> (Note this is essentially use-case 1 [1])
> 
> <components xmlns="[tbd]">
>  <component name="xsdValidate">
>   <input name="primary"/>
>   <input name="schemaDocs" arity="sequence"/>
>   <output name="primary"/>
>  </component>
>  <component name="xslt1.0">
>   <input name="primary"/>
>   <input name="stylesheet"/>
>   <output name="primary"/>
>  </component>
> <components>

Is the idea here that if the names match, then
they don't need to be declared?

In that case you need some kind of sibling relationship
that you don't have.

That is, what about:

<pipeline xmlns="[tbd]">

  <step name="v1" type="xsdValidate">
   <input name="schemaDocs" href="my.xsd"/>
  </step>

  <step name="s1" type="xslt1.0">
   <input name="stylesheet" href="my.xsl"/>
  </step>

  <step name="s2" type="xslt1.0">
   <input name="stylesheet" href="my2.xsl"/>
  </step>

</pipeline>

Which XSLT step is connected to the output of the
validate step?  In fact, which step starts the
pipeline.

This is why I was advocating a wrapper for sequences
of steps where defaults apply.  Then the sibling
relationship means "sequence":

<pipeline xmlns="[tbd]">

   <sequence>

  <step name="v1" type="xsdValidate">
   <input name="schemaDocs" href="my.xsd"/>
  </step>

  <step name="s1" type="xslt1.0">
   <input name="stylesheet" href="my.xsl"/>
  </step>

  <step name="s2" type="xslt1.0">
   <input name="stylesheet" href="my2.xsl"/>
  </step>

  </sequence>

</pipeline>

This means v1 is followed by s1 which is followed by s2.

If you want s2 to operate on its own:


<pipeline xmlns="[tbd]">

   <sequence>

  <step name="v1" type="xsdValidate">
   <input name="schemaDocs" href="my.xsd"/>
  </step>

  <step name="s1" type="xslt1.0">
   <input name="stylesheet" href="my.xsl"/>
  </step>

  </sequence>

  <step name="s2" type="xslt1.0">
   <input name="stylesheet" href="my2.xsl"/>
  </step>


</pipeline>

Then we have:

    input  ->  v1  -> s1
       \
        -> s2

I think the above is a great example of where defaulting
becomes confusing.  I had imagined defaulting only being
in play when you have a sequence of steps that are
chained together from output to input with some kind of
primary input/output.

Then it becomes:

<pipeline xmlns="[tbd]">
   <source name="primary"/>

   <sequence name="p1">
     <input name="primary" source="$.primary"/>
     <step name="v1" type="xsdValidate">
       <input name="schemaDocs" href="my.xsd"/>
     </step>
     <step name="s1" type="xslt1.0">
       <input name="stylesheet" href="my.xsl"/>
      </step>
   </sequence>

   <step name="s2" type="xslt1.0">
     <input name="primary" source="$.primary"/>
     <input name="stylesheet" href="my2.xsl"/>
   </step>

   <sink name="primary" source="p1.primary"/>
   <sink name="alt" source="s2.primary"/>

</pipeline>

(I'd also put the sink elements at the top with the source... )

BTW, I called 'sequence' the 'pipe' element in my syntax but
it is the same idea.

--Alex Milowski
Received on Thursday, 6 July 2006 15:43:49 GMT

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