Sylvain Wallez wrote:
> 
> IMO, we really need the "context:/" (single slash) we talked 
> about some time ago, that resolves relatively to the 
> currently executing sitemap (i.e. the one defining the VPC). 
> Relative sources (with no protocol) must always be resolved 
> relative to the sitemap where the VPC is called. 
> However, the implementation of some VPCs, just as in my 
> example above, needs some resources to be resolved relative 
> to the sitemap in which the VPC is defined.
> 
> So my example could be rewritten as follows:
> 
> <><map:virtual-generator type="foo">
>   <map:generate src="{src}"/>
>   <map:act type="lang-select">
>     <map:transform type="i18n"/>
>   </map:act>
>   <map:transform type="xslt" src="context:/stylesheets/{bar}.xsl/>
> </map:virtual-generator>
> 
> That way, there is no magical absolutization applied.
> 
> Thoughts?
> 
Yes, this is the "no magic" solution :) which works and which is not bad,
but I see one potential problem for users:
You have a different behaviour in the same sitemap if you use:

   <map:transform type="xslt" src="tylesheets/bar.xsl/>

in a virtual component or in a regular pipeline. And this is imho very
difficult to explain. We will get thousands of requests saying:
"Why can't this nice Cocoon not find my stylesheet"?

My first idea was to do it the other way round, so if you want to
access a resource of the current sitemap (not the sitemap the VPC
is defined in) you use a special protocol (I just name it 'current'
for the sake of the example):

 <map:virtual-generator type="foo">
   <map:generate src="current:{src}"/>
   <map:act type="lang-select">
     <map:transform type="i18n"/>
   </map:act>
   <map:transform type="xslt" src="stylesheets/{bar}.xsl/>
 </map:virtual-generator>

If in the example from above, {src} is relative, it's resolved relative
to the current sitemap; if it's absolute 'current:' is ignored.
But for me this looks a little bit ugly as well...

Hmmm.

Carsten

Reply via email to