cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jeremy Quinn <jer...@media.demon.co.uk>
Subject Re: current status of global input module / variables
Date Thu, 19 Dec 2002 12:00:10 GMT

On Thursday, Dec 19, 2002, at 11:48 Europe/London, Christian Haul wrote:

> 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.


WOW! This stuff is amazing!
And very complicated!
Thank you very much for this explanation, I would not have groked that!

regards Jeremy


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


Mime
View raw message