you could use map:aggregate, but because of the structure you'd need to do
it in two steps - one to aggregate modules into a column element, and then
one to aggregate the columns into a page element.

if you have the flexibility to change the structure, you could use xinclude
or cinclude so for instance <module>AboutIntro.xhtml</module> would become
something like
<module><cinclude:include src="AboutIntro.xhtml"/></module>

then you'd add the cinclude transformer as a step in your pipeline (probably
right before your other transformer)  and that should do it.  If you can't
change the structure you could also add a simple transform step that would
convert from the origiginal <module>filename</module> to the cinclude
version

the docs provide a lot more detail - look for the under userdocs >
transformers

There may be some other options that don't occur to me at the moment.

HTH,
Geoff

> -----Original Message-----
> From: Jeff Ramsdale [mailto:[EMAIL PROTECTED]]
> Sent: Wednesday, January 29, 2003 2:16 PM
> To: [EMAIL PROTECTED]
> Subject: Aggregating XML
>
>
> Hi there,
>
> I'm relatively new to Cocoon and XML and I've been lurking on the
> list for a
> while. I have a problem that's stymied me--perhaps someone could
> help me? I
> want to build an aggregate web page from a set of simple XHTML pages by
> extracting the contents of their bodies and aggregating them. I
> have an XML
> file that designates the structure of the page:
>
> <?xml version="1.0"?>
> <page>
>   <column>
>     <module>AboutIntro.xhtml</module>
>     <module>AboutQContinued.xhtml</module>
>   </column>
>   <column>
>     <module>AboutQ3.xhtml</module>
>   </column>
> </page>
>
> I have a stylesheet that I mean to use to aggregate the files,
> but I haven't
> figured out a way to pull in the bodies of the files designated by the XML
> above. I've designated below where I've been inserting my test code:
>
> <?xml version="1.0"?>
> <xsl:stylesheet
>     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version='1.0'>
>   <xsl:output method="html" />
>   <xsl:template match="/">
>     <html>
>       <xsl:call-template name="page" />
>     </html>
>   </xsl:template>
>   <xsl:template name="page">
>     <xsl:apply-templates/>
>   </xsl:template>
>   <xsl:template match="column">
>     <p>
>       <xsl:text>Column</xsl:text>
>       <br />
>       <xsl:apply-templates select="module" />
>     </p>
>   </xsl:template>
>   <xsl:template match="module">
>     <xsl:variable name="mod">
>       <xsl:value-of select="." />
>     </xsl:variable>
> <!-- HERE'S THE MISSING CODE -->
>     <xsl:text>Module</xsl:text>
>     <br />
>   </xsl:template>
> </xsl:stylesheet>
>
> What's the missing piece? I tried using xinclude and cinclude, but my
> impression is that they are intended for an XML file to include
> another XML
> file, not for a stylesheet to include XML. (I do understand that a
> stylesheet _IS_ XML, though, so perhaps I just missed how I
> should have done
> that?). I also tried to do a map:aggregate from my pipeline, but couldn't
> figure out how to do that based on the contents of my XML file.
>
> If my approach is misguided, feel free to correct me. Also, if I
> should know
> of other projects doing similar things, do let me know. (I'm just
> beginning
> to read about Forrest, for instance.)
>
> Thanks, all!
>
> Jeff
>
>
>
> ---------------------------------------------------------------------
> 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]>

Reply via email to