What I found may be a bug in {global:XXX} input module
First the sitemap then the explanation:
<map:component-configurations>
<global-variables>
<baseURL>myapp01</baseURL>
</global-variables>
</map:component-configurations>
<map:pipeline type="noncaching">
<map:match pattern="stylesheets/*">
<map:generate src="stylesheets/{1}"/>
<map:serialize/>
</map:match>
<map:match pattern="picker/**">
<map:mount check-reload="yes" reload-method="synchron" src="picker/"
uri-prefix="picker"/>
</map:match>
</map:pipeline>
A part of sub sub sitemap that matches "picker/**" looks like this:
<map:pipeline type="noncaching">
<map:match pattern="form/*">
<map:generate src="data/{1}/form.xml"/>
<map:transform src="cocoon://{global:baseURL}/stylesheets/reportform2html.xsl">
<map:parameter name="baseURL" value="/{global:baseURL}"/>
</map:transform>
<map:transform type="simpleform"/>
<map:serialize/>
</map:match>
<map:match pattern="data/*/*/*">
<map:generate type="serverpages" src="data/{1}/content.xsp"/>
<map:transform src="stylesheets/picker-table.xsl">
<map:parameter name="baseURL" value="/{global:baseURL}"/>
<map:parameter name="formname" value="{2}"/>
<map:parameter name="fieldname" value="{3}"/>
</map:transform>
<map:serialize/>
</map:match>
<map:match pattern="content/*/*/*">
<map:select type="request-parameter">
<map:parameter name="parameter-name" value="visited"/>
<map:when test="1">
<map:act type="form-validator">
<map:parameter name="descriptor"
value="data/{1}/form-descriptor.xml"/>
<map:parameter name="validate-set" value="main"/>
<map:aggregate element="content">
<map:part src="cocoon:/form/{../1}" strip-root="true"/>
<map:part src="cocoon:/data/{../1}/{../2}/{../3}"/>
</map:aggregate>
<map:serialize/>
</map:act>
</map:when>
</map:select>
<map:aggregate element="content">
<map:part src="cocoon:/form/{1}"/>
</map:aggregate>
<map:serialize/>
</map:match>
<!--+
| 1 - picker source
| 2 - form name
| 3 - field name
+-->
<map:match pattern="*/*/*">
<map:aggregate element="root">
<map:part src="cocoon://content/{1}/{2}/{3}"/>
</map:aggregate>
<map:transform src="cocoon://{global:baseURL}/stylesheets/site2html.xsl">
<map:parameter name="baseURL" value="/{global:baseURL}"/>
</map:transform>
<map:serialize type="html"/>
</map:match>
</map:pipeline>
</map:pipelines>
Shortly:
The default view (<map:match pattern="*/*/*">) is being constructed of :
1. the form displayed on top of the page
2. results from database (filtered with data entered in form) if form has been
submitted
My cocoon serves a lot of subsitemaps (serveral web applications in one web
application). Sometimes several versions of the same application exist in the
same cocoon space so I needed the way to distinguish between them.
The "main subsitemap" contains global variable definition named baseURL that I
add to all links. What's wrong then?
If you request
http://localhost:8080/myapp01/picker/form/pickername - this part of the page
gets properly rendered but if you request:
http://localhost:8080/myapp01/content/pickername/formname/fieldname
you get an error:
Unable to get transformer handler for
cocoon:///stylesheets/reportform2html.xsl
which leads us to this line of code:
<map:generate src="data/{1}/form.xml"/>
<map:transform src="cocoon://{global:baseURL}/stylesheets/reportform2html.xsl">
<map:parameter name="baseURL" value="/{global:baseURL}"/>
</map:transform>
When requesting "form/pickername"
"cocoon://{global:baseURL}/stylesheets/reportform2html.xsl" gets resolved to :
"cocoon://myapp01/stylesheets/reportform2html.xsl" but it does not resolve
when "content/pickername/formname/fieldname" gets requested.
Is it a bug ?
ouzo
--
__
| / \ | Leszek Gawron // \\
\_\\ //_/ [EMAIL PROTECTED] _\\()//_
.'/()\'. Phone: +48(600)341118 / // \\ \
\\ // recursive: adj; see recursive | \__/ |