W3C home > Mailing lists > Public > xproc-dev@w3.org > September 2008

RE: compound steps and primary inputs

From: <Toman_Vojtech@emc.com>
Date: Wed, 24 Sep 2008 09:52:53 -0400
Message-ID: <6E216CCE0679B5489A61125D0EFEC7870CBA7B39@CORPUSMX10A.corp.emc.com>
To: <xproc-dev@w3.org>

If you don't specify any binding in p:iteration-source, it just reads
the data from the default readable port.

(Side note: I just noticed I was using "default/implicit readable input
port" in my previous e-mails. That is a nonsense and it should read
"default readable port")

Regards,
Vojtech 

> -----Original Message-----
> From: mozer [mailto:xmlizer@gmail.com] 
> Sent: Wednesday, September 24, 2008 3:49 PM
> To: Toman, Vojtech
> Cc: xproc-dev@w3.org
> Subject: Re: compound steps and primary inputs
> 
> Vojtech,
> 
> And what about p:iteration-source ? it *IS* the only input source of
> the for-each
> 
> Regards,
> 
> Xmlizer
> 
> 
> On Wed, Sep 24, 2008 at 3:30 PM,  <Toman_Vojtech@emc.com> wrote:
> > Compound steps, such as p:for-each or p:group (even p:pipeline) are
> > also their own declarations. That means that the 
> p:input/p:output elements
> > you specify on a compound step determine the signature of 
> the compound step
> > (and what will be the primary input/output ports, if any).
> >
> > p:for each does not allow you to specify an input port. 
> Unless you say
> > otherwise, it will read documents from the implicit 
> readable input port and
> > for each of the documents it executes the subpipeline. In 
> each iteration,
> > the document is available via the "curent" input port. This 
> input port is
> > created by the XProc processor and is only visible to the 
> subpipeline.
> 
> 
> 
> >
> > Compound steps that don't declare (or can't declare) an 
> input port are just
> > wrappers around the subpipeline, and the data from the 
> implicit readable
> > input port just "flows through", directly to the subpipeline.
> >
> > Regards,
> > Vojtech
> >
> > ________________________________
> > From: xproc-dev-request@w3.org 
> [mailto:xproc-dev-request@w3.org] On Behalf
> > Of James Garriss
> > Sent: Wednesday, September 24, 2008 2:54 PM
> > To: XProc Dev
> > Subject: Re: compound steps and primary inputs
> >
> > I understand what a primary input port is.  What I don't 
> know is how I know
> > that p:for-each has only one input.  If I look at a step 
> like p:filter, it's
> > obvious from it's declaration (I'm catching on to the 
> terms!) that it has
> > only one input port:
> >
> > <p:declare-step type="p:filter">
> >      <p:input port="source"/>
> >      <p:output port="result" sequence="true"/>
> >      <p:option name="select" required="true"/>              
>        <!--
> > XPathExpression -->
> > </p:declare-step>
> >
> > But p:for-each doesn't seem to have a declaration.  It 
> looks sorta like
> > BNF/parser-token-stuff to me.  So what tells me that 
> p:for-each has only one
> > input?
> >
> > <p:for-each
> >   name? = NCName>
> >     ((p:iteration-source? &
> >       (p:output |
> >        p:log)*),
> >      subpipeline)
> > </p:for-each>
> >
> > James Garriss
> > http://garriss.blogspot.com
> >
> >
> >
> > ________________________________
> > From: Norman Walsh <ndw@nwalsh.com>
> > Date: Tue, 23 Sep 2008 16:45:22 -0400
> > To: XProc Dev <xproc-dev@w3.org>
> > Subject: Re: compound steps and primary inputs
> > Resent-From: XProc Dev <xproc-dev@w3.org>
> > Resent-Date: Tue, 23 Sep 2008 20:46:27 +0000
> >
> > James Garriss <james@garriss.org> writes:
> >
> >> Do all compound steps have primary inputs?  I ask because 
> I can't tell by
> >> reading the WD if p:for-each has a primary input or not.  
> I'm probably
> >> missing a key word somewhere.
> >
> > The p:for-each step has only one input and the rules say
> >
> >   [Definition: If a step has a document input port which is 
> explicitly
> >   marked "primary='true'", or if it has exactly one document input
> >   port and that port is not explicitly marked 
> "primary='false'", then
> >   that input port is the primary input port of the step.]
> >
> > By the second clause, the input port of p:for-each is primary.
> >
> >> When I use it in Calabash 0.6.1, it behaves as if it does:
> >>
> >> <p:declare-step xmlns:p="http://www.w3.org/ns/xproc">
> >>     <p:input port="source">
> >>         <p:document href="BookStore.xml"/>
> >>     </p:input>
> >>     <p:output port="result"/>
> >>     <p:filter select="/BookStore/Book[Date>'1970']"/>
> >>     <p:for-each>
> >>         <p:output port="result"/>
> >>         <p:identity/>
> >>     </p:for-each>
> >> </p:declare-step>
> >>
> >> The output of filter, a sequence of documents 
> (<Book>...</Book>), is being
> >> inputted (is that a word?) into p:for-each.
> >
> > That's right. And that's what you want, isn't it?
> >
> >> Appreciate any insights!
> >
> > 1. You only need to use p:filter if some part of the 
> expression you want
> > to test against is computed by the pipeline.
> >
> > 2. A p:for-each that contains only an identity step is a little, uh,
> > redundant.
> >
> > I believe that you could simplify the pipeline above to just this:
> >
> > <p:declare-step xmlns:p="http://www.w3.org/ns/xproc">
> >     <p:input port="source">
> >         <p:document href="BookStore.xml"/>
> >     </p:input>
> >     <p:output port="result"/>
> >     <p:identity select="/BookStore/Book[Date>'1970']"/>
> > </p:declare-step>
> >
> >                                         Be seeing you,
> >                                           norm
> >
> > --
> > Norman Walsh <ndw@nwalsh.com> | If we lived alone in a featureless
> > http://nwalsh.com/            | desert we should learn to place the
> >                               | individual grains of sand 
> in a moral or
> >                               | aesthetic hierarchy.--Michael Frayn
> >
> 
> 
Received on Wednesday, 24 September 2008 13:54:30 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Wednesday, 24 September 2008 13:54:30 GMT