You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@forrest.apache.org by David Crossley <cr...@apache.org> on 2005/08/12 07:11:49 UTC

passing parameters from sitemaps to stylesheets

Gav.... wrote:
> 
> How do I check for project.i18n=true (from forrest.properties created by 
> forrest seed) from this when statement.
> 
> I have :-
> 
>  <xsl:choose>
>       <xsl:when test="config.i18n = 'true'">   /* also tried $config/i18n 
> and a few others, this is where I'm stuck */
>                 (i18n compatible stuff)
>       </xsl:when>
>                <xsl:otherwise>
>                        (Remove i18n stuff)
>                 </xsl:otherwise>
>  </xsl:choose>

Ah, this is turning in to a useful lesson. How to
pass parameters from the sitemaps into the stylesheets
and how to access project properties.

Notice that pelt/xslt/html/site2xhtml.xsl
imports common/xslt/html/site2xhtml.xsl
Look at the latter.

<xsl:variable name="config" select="//skinconfig"/>

That sets $config to all of the values from the
project's skinconf.xml file. This information has
been previously aggregated by the sitemap into the 
xml stream that we are transforming.

<xsl:param name="path"/>

That was passed to this stylesheet from the sitemap.

Lets look at the sitemaps to find out how:
cd /svn/asf/forrest/main/webapp
grep site2xhtml *
more sitemap.xmap

That shows that the sitemap resource named "skinit"
was called with <map:parameter name="path" value="{0}"/>
That passes the value of the uri being processed.

Looking at the skinit resource, a transformer then
applies the relevant stylesheet and passes the
parameter "path".

So you could get other properties into your final
stylesheet in that way. Looking at the sitemaps
you can see that those values are obtained from
properties using the syntax {project:blah} or
{defaults:blah} {request:blah} {forrest:blah} etc.

The main/webapp/WEB-INF/xconf/forrest-core.xconf
shows how those values are made available using
"sitemap input modules".

-David