forrest-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Crossley <cross...@apache.org>
Subject Re: Rendering XML transformed from aggregated content
Date Thu, 07 Jan 2010 01:10:16 GMT
Phillip Hall wrote:
>
> I have a problem rendering the Forrest site from two XML files
> aggregated in a pipeline from the Sitemap.xmap file.
> 
> I am using Forrest 8.0. I created an XSL stylesheet to format the
> combined XML files wih "document" root tags as per v-13 DTD.
> 
> However this is not displayed with the Forrest skin but as raw HTML.
> 
> How can I apply the default Forrest skin to this XML output?
> 
> I have searched the Forrest FAQ and the mail Archives without finding
> a solution. Please help.
> 
> sitemap.xmap insert :
> 
>   <map:pipelines>
>     <map:pipeline>
> 
>       <map:match pattern="**index.html">

Not 100% sure of my answer, but i reckon that should be
       <map:match pattern="**index.xml">
i.e. the internal request for the content xml.

With the match as you have it, it is intercepting the "output"
html request and finalising (i.e. map:serialize) the output
to xml.

>         <map:aggregate element="site">
>           <map:part src="{properties:content.xdocs}index.xml"/>
>           <map:part src="{properties:content.xdocs}index-two.xml"/>

Also to match sources in sub-directories you will need:
           <map:part src="{properties:content.xdocs}{1}index.xml"/>
etc.

There is a document explaining the "**" and "*" pattern matching
and token usage.

>         </map:aggregate>
> 
>         <map:transform
> src="{properties:resources.stylesheets}/docs-to-document.xsl"/>
>         <map:serialize type="xml-document"/>
>       </map:match>
> 
>     </map:pipeline>
> 
> 
> My "docs-to-document.xsl"  transform :
> 
> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> <xsl:output method="xml"/>

This output method has no effect in a Cocoon-based app.
The "map:serialize" in the sitemaps does that job.

-David

>   <xsl:template match="/site">
>     <xsl:element name="document">
>       <xsl:element name="header">
>         <xsl:element name="title">
>           <xsl:value-of select="/site/document/header/title"/>
>         </xsl:element>
>       </xsl:element>
>       <xsl:element name="body">
>         <xsl:for-each select="//section">
>           <xsl:copy-of select="."/>
>         </xsl:for-each>
>       </xsl:element>
>     </xsl:element>
>   </xsl:template>
> </xsl:stylesheet>

Mime
View raw message