Piotr,
> -----Original Message-----
> From: Piotr Legiecki [mailto:piotrlg@;sci.pam.szczecin.pl]
> Sent: Thursday, November 14, 2002 2:36 PM
> To: [EMAIL PROTECTED]
> Subject: Re: R: Difference between cocoon: and file:// in map:part
>
>
> Luca Morandini wrote:
> > Piotr,
> >
> > the "cocoon:" pseudo-protocol doesn't search for files, but for
> pipelines.
> >
> > With this pseudo-protocol you can build pipelines and call them (more or
> > less as subroutines) from any aggregation.
> >
>
> I see. So when I want to separate navigation and content (having
> menu.xml and books.xml) and join them using aggregate, *but* use
> different xsl files for them I can write something like this:
>
> <map:pipeline>
> <map:match pattern="">
> <map:aggregate element="site">
> <map:part src="cocoon:/menu.xml"/>
> <map:part src="cocoon:/books.xml"/>
> </map:aggregate>
> <map:transform src="styles/menuandbook2html.xsl"/>
> <map:serialize/>
> </map:match>
> </map:pipeline>
>
>
> <map:pipeline>
> <map:match pattern="menu.xml">
> <map:read src="content/menu.xml"/>
> <map:transform src="styles/menu.xsl"/>
> <map:serialize/>
> </map:match>
> </map:pipeline>
>
> <map:pipeline>
> <map:match pattern="books.xml">
> <map:read src="content/books.xml"/>
> <map:transform src="styles/books.xsl"/>
> <map:serialize/>
> </map:match>
> </map:pipeline>
>
> Right? Hm. I'm not sure about it. What happens when line
> <map:part src="cocoon:/menu.xml"/>
> is executed?
XML which is produced by the pipelines (called by map:part) will be
integrated in your "main" pipeline.
> Cocoon jumps directly to pipeline which matches the
> pattern, makes something there (ie *map:read* (or should I use
> map:generate?)
You *must* use map:generate in this case. A reader is a generator and a
serializer in one and usally used for non-xml files like pictures. Therefore
it shouldn't be possible to call a pipeline with a reader from a aggregator
pipeline.
> source xml, *transform* using xsl, *serialize* (is this
> neccessery here?)) and returns to second map:part.
I think it's neccessary here because otherwise your pipeline is not valid.
As far as I know each pipeline needs one generator/aggregator and one
serializer. Between them you can place as many transformers as you need.
The serializer in this case will not be called - your pipelines called by
map:part retrun sax events and not serialized data.
>
> So the joined parts are not xml files anymore but html files? So I
> can't use
> <map:transform src="styles/menuandbook2html.xsl"/>
> on them anymore and I can't also use
> <map:serialize/>
You have to possiblities:
1. Each of the map:part-pipelines returns the xml in the form you need it
for your client. But make sure to use the XML serializer and not the
html-serizalizer. (map:serialize type="xml"/>)
2.
<map:aggregate element="site">
<map:part src="content/menu.xml"/>
<map:part src="content/books.xml"/>
</map:aggregate>
<map:transform src="styles/menuandbook2html.xsl"/>
<map:serialize type="html"/>
In this case you read your books and your menu directly (without using
sub-pipelines) and you only have one stylesheets that transforms your xml in
html.
>
> Is it the right way to use aggregate or I have simply missused
> this feature?
>
> And when use separate <map:pipeline> for matches and when to group this
> matches under one <map:pipeline>? I know it looks like completely
> another question;-)
Have a look at http://outerthought.net/wiki/Wiki.jsp?page=DesignPipelines
Regards,
Reinhard
>
> Regards
> Piotr Legiecki
>
>
> ---------------------------------------------------------------------
> Please check that your question has not already been answered in the
> FAQ before posting. <http://xml.apache.org/cocoon/faq/index.html>
>
> To unsubscribe, e-mail: <[EMAIL PROTECTED]>
> For additional commands, e-mail: <[EMAIL PROTECTED]>
>
---------------------------------------------------------------------
Please check that your question has not already been answered in the
FAQ before posting. <http://xml.apache.org/cocoon/faq/index.html>
To unsubscribe, e-mail: <[EMAIL PROTECTED]>
For additional commands, e-mail: <[EMAIL PROTECTED]>