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 PiroumianFrom: "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 paramsAssume 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.Yes, {myxml:/myvar} or {myxml:myvar} in this case.and {myxml:/*/myvar} if I do not want an override?
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]