Hi
Upon recommendation from this list, I initially used XPathDirectoryGenerator,
but it was too slow for online use. Since I know when a file is changed, I
call the following URL which produces one large XML file with the contents of
all files in the directory.
A FileChainingGenerator would probably be a better solution, but here I have a
full Cocoon XML/XSLT solution. Not very elegant, but at least it works. If
somebody comes up with something better, I'll be happy ;-)
Cheers Martin
----
The sitemap entry:
<!-- Update the (cached) list of all files and write it to the file allfiles.xml -->
<map:match pattern="allfiles-update">
<map:generate type="directory" src="docs">
<!-- regexp to exclude all files that have characters after ".xml" -->
<!-- e.g. auto-save files -->
<map:parameter name="exclude" value=".*\.xml.+"/>
</map:generate>
<map:transform src="stylesheets/lib/aggregate.xsl"/>
<map:transform type="xinclude"/>
<map:transform src="stylesheets/lib/sourcewrite.xsl">
<map:parameter name="sourcefile" value="docs/allfiles.xml"/>
</map:transform>
<map:transform type="write-source"/>
<map:serialize type="xml"/>
</map:match>
----
The stylesheet aggregate.xsl (makes list of XLinks)
<?xml version="1.0" encoding="utf-8"?>
<!-- =======================================================================
Make include tags for all files given in the input (from DirectoryGenerator)
======================================================================= -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:dir="http://apache.org/cocoon/directory/2.0"
xmlns:xi="http://www.w3.org/2001/XInclude"
version="1.0">
<xsl:output method="xml"/>
<xsl:template match="/">
<allglaciers>
<xsl:apply-templates/>
</allglaciers>
</xsl:template>
<xsl:template match="dir:directory">
<xsl:for-each select="dir:file">
<xsl:sort select="@name"/>
<xi:include parse="xml" href="cocoon:/{../@name}/{@name}#xpointer(/*)" />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
----
The stylesheet sourcewrite.xsl (makes the sourcewriting tags)
<?xml version="1.0" encoding="utf-8"?>
<!-- =======================================================================
Make source-writing tags
======================================================================= -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:param name="sourcefile"/>
<xsl:output method="xml"/>
<xsl:template match="/">
<source:write xmlns:source="http://apache.org/cocoon/source/1.0">
<source:source><xsl:value-of select="$sourcefile"/></source:source>
<source:fragment>
<xsl:copy-of select="*"/>
</source:fragment>
</source:write>
</xsl:template>
</xsl:stylesheet>
----
Jeff Turner <[EMAIL PROTECTED]> writes:
> On Sat, Oct 12, 2002 at 02:08:16PM +0100, Alex McLintock wrote:
> > Hi folks,
> >
> > I am trying to figure out how to get Cocoon to display all the xml files in
> > a directory without being explicitly told each of their names in the
> > sitemap.
>
> Have a look at the XPathDirectoryGenerator in the scratchpad. With it,
> you can generate a directory listing, with a node extracted from each
> file. Eg, I used it to extract <description> elements from a list of Ant
> scripts:
>
> http://aft.sourceforge.net/examples/
>
> The relevant config was:
>
> <map:sitemap ..
> <map:components ..
> <map:generators ..
> <map:generator name="xpathdirectory"
> src="org.apache.cocoon.generation.XPathDirectoryGenerator"/>
>
> .....
> <!-- examples/index.html, listing all scripts -->
> <map:match pattern="examples/index.xml">
> <map:generate type="xpathdirectory"
> src="content/xdocs/examples#/project/description"/>
> <map:transform
> src="resources/stylesheets/antdirectory2document.xsl"/>
> <map:serialize type="xml"/>
> </map:match>
>
>
> --Jeff
>
>
> > I guess I need a combination of the Directory Generator and the Aggregation
> > tools.
> >
> > I am not too worried about the order of the files otherwise I would have to
> > use an XML database - which I would like to avoid if possible.
> >
> > PS I have looked in the Langham/Ziegeler book but can't find anything
> > useful.
> >
> > Do I need to write a DirectoryAggregation Generator in Java? perhaps others
> > would find it useful too.
> >
> > Alex
>
> ---------------------------------------------------------------------
> 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]>
>
>
--
Martin L�thi [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]>