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

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: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to