Victor Okunev wrote: > Hi All, > > I have an XSLT style sheet that I use to generate an HTML table. Is it > possible with Forrest v0.7 to perform the transformation as part of > the site build and include the results under a document's section? > Here is a pseudo code that kind of illustrates what I am after: > > index.xml > > <?xml version="1.0" encoding="UTF-8"?> > <!-- > Copyright.... > --> > <!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" > "http://forrest.apache.org/dtd/document-v20.dtd"> > <document> > <header> > <title>Page Title</title> > </header> > <body> > <section id="sectionid"> > <title>Section Title</title> > <transform src="data.xml" stylesheet="table.xsl"/> > </section> > </body> > </document>
Yes, the Cocoon sitemap enables this and more. This is a good situation to explain the powers of teh Cocoon sitemap. Remove that <transform ... from your source xml and use the sitemap language to specify the extra transformer to inject the table into the xml stream. http://forrest.apache.org/docs/project-sitemap.html I attached some example files to a new issue. http://issues.apache.org/jira/browse/FOR-814 You can download and use them. Later we will create a document from this explanation. The source file xdocs/one-announce.xml is the main announcement text. Like yours above, but without the <transform> pseudo-stuff and with another section. The data table will be inserted in the top of the first section. Here is the data file xdocs/one-data.xml <data> <item>Foo</item> </data> Here is the relevant section of the sitemap ... <map:pipelines> <map:pipeline> <map:match pattern="**-announce.xml"> <map:aggregate element="announce-and-data"> <map:part src="{project:content.xdocs}{1}-announce.xml"/> <map:part src="{project:content.xdocs}{1}-data.xml"/> </map:aggregate> <map:transform src="{project:resources.stylesheets}/add-table.xsl" /> <map:serialize type="xml-document"/> </map:match> </map:pipeline> </map:pipelines> Browser request is localhost:8888/one-announce.html So that generates an aggregated xml stream like this ... <announce-and-data> <document> ... the normal source xdoc, e.g. one-announce.xml </document> <data> <item>Foo</item> </data> </announce-and-data> The add-table transformer then strips off the outer wrapper, copies over the <document> content, deals with the first <section> element and inserts the table by processing the <data> element. It serialises as the "xml-document" which is Forrest's internal format. Forrest takes over and does the rest of the transforming and rendering. That is the general idea. There are probably other ways to do it too. The new dispatcher will be even more versatile. -David