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" <[EMAIL PROTECTED]>
> >>On Thursday, Dec 19, 2002, at 09:14 Europe/London, Konstantin 
> >>Piroumian
> >>>From: "Geoff Howard" <[EMAIL PROTECTED]>
> 
> <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
[EMAIL PROTECTED]
    fingerprint: 99B0 1D9D 7919 644A 4837  7D73 FEF9 6856 335A 9E08

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to