Re: For-each question

Norman Walsh wrote:
> / Jeni Tennison <jeni@jenitennison.com> was heard to say:
> | I would much rather <p:choose> (and <p:for-each>) *weren't*
> | self-contained, and could point to inputs from their ancestors.
> 
> What does it mean when a for-each points to inputs among its ancestors
> and preceding siblings?

You mean when a step inside a for-each does that, right?

>   <p:for-each select="//chapter" ref="#valid/result" name="loop">
>     <p:declare-output port="result" name="chapter-docs"/>
> 
>     <p:step kind="transform" name="makehtml"/>
>       <p:input port="document" ref="#loop/#matched"/>
>       <!-- somehow we have to expose the matched regions as documents;
>            here I'm imagining that for-each always declares a magically
>            named input port which will be used for that purpose -->
>       <p:input port="stylesheet" ref="#build-stylesheet/result"/>
>       <p:output port="result" ref="#loop/chapter-docs"/>
>     </p:step>
>   </p:for-each>

I'd call this an error.  The for-each is like a mini-pipeline and
needs to have that extra input declared:

<p:for-each select="//chapter" ref="#valid/result" name="loop">
     <p:declare-input port="#build-stylesheet/result"
                      name="the-stylesheet"/>
     <p:declare-output port="result" name="chapter-docs"/>

     <p:step kind="transform" name="makehtml"/>
       <p:input port="document" ref="#loop/#matched"/>
       <!-- somehow we have to expose the matched regions as documents;
            here I'm imagining that for-each always declares a magically
            named input port which will be used for that purpose -->
       <p:input port="stylesheet" ref="the-stylesheet"/>
       <p:output port="result" ref="#loop/chapter-docs"/>
     </p:step>
   </p:for-each>

That give you the ability to rename the input too--which might be very
nice if the reference is strange.

--Alex Milowski

Received on Saturday, 22 July 2006 14:20:31 UTC