- From: <Toman_Vojtech@emc.com>
- Date: Wed, 24 Sep 2008 09:30:01 -0400
- To: <xproc-dev@w3.org>
- Message-ID: <6E216CCE0679B5489A61125D0EFEC7870CBA7AF3@CORPUSMX10A.corp.emc.com>
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:32:12 UTC