Sylvain Wallez wrote:
>
> Carsten Ziegeler a écrit :
> >
> > Hi,
> >
> > I currently run into the problem that I created pipelines which I
> > thought were possible, but currently are not support by Cocoon:
> >
> > It is not possible to nest anything other than a map:part into
> > a map:aggregate, so the following doesn't work:
> > <map:aggregate>
> >   <map:select type="test">
> >     <map:when test="a">
> >       <map:part src="a"/>
> >     </map:when>
> >     <map:otherwise>
> >       <map:part src="b"/>
> >     </map:otherwise>
> >   </map:select>
> >   <map:part src="constant"/>
> > </map:aggregate>
> >
> > Is this a bug or is this by design?
> > My personal opinion is, that this should be possible.
>
> I guess this is by design. The above can be written as follows :
>
> <map:match pattern="variablepart.xml">
>   <map:select type="test">
>     <map:when test="a">
>       <map:generate src="a"/>
>     </map:when>
>     <map:otherwise>
>       <map:generate src="b"/>
>     </map:otherwise>
>   </map:select>
>   <map:serialize/>
> </map:match>
>
> <map:match pattern="...">
>  <map:aggregate>
>    <map:part src="cocoon:/variablepart.xml"/>
>    <map:part src="constant"/>
>  </map:aggregate>
> </map:match>
>
> It is sure less readable, but if we allow statements other than
> <map:part> in <map:aggregate>, people will certainly soon ask for
> <map:generate> or <map:transform> inside <map:part> !
>
Yes, this workaround is possible - but with the extra cost of internal
processing which I wanted to avoid with my example above.
To be honest, if I think about this, yes, a map:generate would be
much better as a map:part! It would avoid some internal processings as well.
Hmm, a map:transform - yes why not! Ok, just kidding.
Yes, of course you're right that people always wanted more than
is available. But I think this is not a reason why we should forbid
putting a map:select inside a map:aggregate. Because if we forbid this,
sometime people will ask for this and we are in the same situation.

> > Another restriction we currently have is already entered as a bug with
> > the number 4357: An Action is not possible as a root element inside
> > a map:pipeline, only map:match can be a used as a root element.
> > So here again, is this by design?
>
> This was allowed before we faced the 64 kbytes bytecode limit in the
> generated class. IIRC, you were the one that faced this ;)
>
Hey, very good memory!
> We then decided to break the generated code into submethods based on
> map:pipeline/map:match which as a side effect forbids any other
> top-level construct.
>
> So this restriction is not "by design", but "by implementation" ! The
> TreeProcessor (still have to write views for it to be finished) doesn't
> have this limitation.
>
Yes, I noticed this when I looked at the sitemap.xsl. As far as I saw
it should really be very easy to allow actions on the top-level again.
So, I'm +1 on removing this restriction!

Carsten

> > I think we shouldn't make such restrictions. But at least if we make
> > these restrictions we should document them.
> >
> > Regards,
> > Carsten
> >
>
> Sylvain
>
> --
> Sylvain Wallez
> Anyware Technologies - http://www.anyware-tech.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, email: [EMAIL PROTECTED]
>


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to