cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christian Haul <h...@dvs1.informatik.tu-darmstadt.de>
Subject Re: current status of global input module / variables
Date Thu, 19 Dec 2002 11:48:31 GMT
On 19.Dec.2002 -- 11:21 AM, Jeremy Quinn wrote:
> 
> On Thursday, Dec 19, 2002, at 10:55 Europe/London, Konstantin Piroumian 
> wrote:
> 
> >From: "Jeremy Quinn" <jeremy@media.demon.co.uk>
> >>On Thursday, Dec 19, 2002, at 09:14 Europe/London, Konstantin 
> >>Piroumian
> >>>From: "Geoff Howard" <cocoon@leverageweb.com>
> 
> <snip/>
> 
> >>Is it possible to use the XMLModule in such a way that values from the
> >>XML conf file can be overridden by request parameters?
> >
> >Yes, that was the intention for creating the ChainMetaModule. See how 
> >it is
> >configured in cocoon.xconf and add a similar configuration for your 
> >case.
> >
> 
> Something like this in cocoon.xconf? :
> 
> <component-instance
> 	class="org.apache.cocoon.components.modules.input.XMLFileModule" 
> 	logger="core.modules.xml" name="myxml">
>         <file src="context://my-conf.xml"/>
> </component-instance>
> 
> <component-instance
> 	class="org.apache.cocoon.components.modules.input.ChainMetaModule" 
> 	logger="core.modules.input" name="chain">
> 	     <input-module name="request-param"/>
> 	     <input-module name="myxml"/>
> </component-instance>
> 
> 
> Then how do you access the variables in the sitemap?
> Like this?:
> 
> 	{chain:/*/my-var} if I want it overridden by request params

Assume that the parameter is named "my-var" and the my-conf.xml looks
like

<my-var>value</my-var>

note: this is the only node.

Then you'd access it through

    {chain:/my-var} or {chain:my-var}

If a request parameter with the same name exists, it would be
preferred over the value from the file.

> and
> 
> 	{myxml:/*/myvar} if I do not want an override?

Yes, {myxml:/myvar} or {myxml:myvar} in this case.

So, if your my-conf.xml looks like

<root>
   <my-var>value</my-var>
   <section>
     <other-var>value</other-var>
   </section>
</root>

it would be {chain:root/section/other-var} and the request parameter
would need to be "root/section/other-var". If you don't like that,
consider adding the SimpleMappingMetaModule around the myxml in the
chain config: (I assume that the component has been declared as simple-map)

 <component-instance
 	class="org.apache.cocoon.components.modules.input.ChainMetaModule" 
 	logger="core.modules.input" name="chain">
         <input-module name="simple-map">
           <prefix>/root/section/</prefix>
 	       <input-module name="request-param"/>
         </input-module>
 	     <input-module name="myxml"/>
 </component-instance>

which would result is {chain:other-var} being looked up as
{myxml:/root/section/other-var} and {request-param:other-var} but of
course {chain:my-var} would turn into {myxml:/root/section/my-var}
which is not desired here. SimpleMappingMetaModule supports some more
mapping options if you need it.

	Chris.
-- 
C h r i s t i a n       H a u l
haul@informatik.tu-darmstadt.de
    fingerprint: 99B0 1D9D 7919 644A 4837  7D73 FEF9 6856 335A 9E08

---------------------------------------------------------------------
To unsubscribe, e-mail: cocoon-dev-unsubscribe@xml.apache.org
For additional commands, email: cocoon-dev-help@xml.apache.org


Mime
View raw message