Posted by Patrick Brunmayr on 10/03/07 20:07
On 3 Okt., 21:44, salmobytes <Sandy.Pittendr...@gmail.com> wrote:
> Let's say I have some XML that looks vaguely like:
>
> <template>
> <div id="displayDivOne" src="mkNav()" />
> ......etc.
> </template>
>
> I want to use the div line to call a class function, I.E. $this->mkNav();
>
> without creating a hard-coded switch statement.
>
> ....I'd like to say something like:
> $cnt=0;
> foreach ($xml->xpath("/template/div") as $adiv)
> {
> $this->divs[$cnt] = '<div id="'.$adiv[@id].'">';
> $myfunc = $adiv[@src];
>
> $this->divs[$cnt] .= $myfunc;
> .....or maybe something like:
> eval ("$this->divs[$cnt] .= $myfunc");
>
> $this->divs[$cnt] .= '</div>';
> $cnt++;
> }
>
> ...but of course none of the above works.
> I don't want to have to remember to modify a switch
> statement every time I add a new function to the class,
> that might end up specified in the XML.
Hi
You could parse the xml file with php xslt processor. The Xslt
Processor class has
a function called registerPHPFunction(). You can find it in the doc!
The you you
could do something like this
<xsl:foreach select="template/div">
// this line calls the php function
$this->divs[$cnt] = <xsl:value-of select="php:function(@func)"/>;
</xsl:foreach>
Maybe this is a solution of your problem
[Back to original message]
|