ContextPathModule provides a real filesystem path for a virtual
context-relative path. If this mapping cannot be performed (e.g. Cocoon is
running in a .war file), null will be returned. Compared to
the
RealPathModule this module is able to provide the "real" absolute
path even if the application is mounted outside the webapp tree of Cocoon.
Note: the primary use for this is to support external code that wants a
filesystem path. For example, The FOP 0.20.x serializer doesn't like
relative image paths, and doesn't understand Cocoon URLs (context:, cocoon:
etc). So we pass the *2fo.xsl stylesheet a real filesystem path to where we
keep our images:
A absolute path argument like {contextpath:/resources} will be resolved
from the root context path (ie. COCOON_HOME/build/webapp) whereas a relative
path attribute like {contextpath:./resources} will be resolved from the
location of the sitemap that uses it. If that sitemap is mounted outside the
usual COCOON_HOME/build/webapp the path resolved with this modules points to
the correct location.
<map:transform src="skins/{forrest:skin}/xslt/fo/document2fo.xsl">
<map:parameter name="basedir" value="{contextpath:resources}/"/>
</map:transform>
And then prepend this to all image paths:
...
<xsl:param name="basedir" select="''"/>
...
<xsl:template match="img">
<xsl:variable name="imgpath" select="concat($basedir, @src)"/>
<fo:external-graphic src="{$imgpath}" ...
...
</xsl:template>
author: Giacomo Pati version: $Id: ContextPathModule.java 359191 2005-12-27 08:51:54Z cziegeler $ |