Call any PHP5 function in XSLT

Just comitted a patch to the PHP 5 ext/xsl extension, which makes it possible to call any PHP function from within your XSLT stylesheets. While this is pure evil for purists (and you certainly can shoot yourself in the foot with this), it can come quite useful in some cases (if you don’t have to write cross-processor XSLT…). Anyway, here’s a
short XSLT example:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl" version='1.0'>
<xsl:template match="/">
<xsl:value-of select="php:function('date', 'r')"/>
</xsl:template>
</xsl:stylesheet>

This would output the current date as defined in RFC822. Like date(‘r’) in PHP does. Therefore the first argument is the name of the function, the next ones are the usual parameters to this function. You can of course also call your self-defined functions.

I will try to write a little Tutorial in the next few days (How to use ext/xsl at all is described on my slides from this year’s php-conference).

And by the way, EXSLT support was also added to ext/xsl lately

wow, das nenn ich mal hack. da werden die xsl-puristen im n-Eck springen :]
Wird diese Funktionalität dann in der PHP5 Standartversion enthalten sein, oder muss man das selbst nachinstallieren?

Ohnehin, wieviel der neuen XML-Funkntionalität von PHP5 wird mit der Standartversion laufen? Oder muss man dann XSLT-Prozessoren u.ä. seperat installieren?

Dank und gruß
Benjamin

ext/xsl wird nicht per default installiert werden. Der Rest der neuen XML Sachen schon.

ext/xsl braucht halt noch ne Bibliothek mehr als der Rest, darum wird das optional bleiben

Das “Call any php function from XSLT” wird dabei sein, wenn man eben ext/xsl mitinstalliert hat. Sprich das beim kompilieren von PHP mit angegeben hat.

schade, das ist ein schönes gimmick. Aber wenn es in php5 nen ordentlichen XSLT Prozessor gibt, bin ich auch schon glücklich… ;]
Danke!

nur um das klar zu stellen. Wenn XSLT in PHP5 miteinkompiliert wurde, dann hat man auch dieses Feature. XSLT wird aber nicht standardmässig mitkompiliert. Das muss beim ./configure extra angeben werden…

Hope that helps

hmmm…
da ich z.Zt. wie viele andere User auch auf einen Webspace Provider angewiesen bin, ist das ja nicht so schön. Mein Provider [1&1] bietet zwar jetzt schon XSLT-Support aber bei gleichzeitiger Rechenzeitgegrenzung von 2 Sekunden, was ja bei der derzeitigen Performanz praktisch immer
dazu führt, dass der XSLT-Prozesse gekillt wird.

Da kann man ja für XML und XSLT nur hoffen, dass viele Wespace Provider bei PHP5 XSLT mit installieren.

Auch wenn das vielleicht ein bischen dreist ist, sowas im Commentbereich eines Blogs zu fragen,
aber Welche XML/XSL Funktionalitäten werden den in der Standartversion von PHP5 enthalten sein?

Das ist ja keine zu unwichtige Frage, weil viele die in PHP entwickeln, ja auch gerne wollen würden, dass ihre Skripte auf allen PHP5 Servern laufen…

Danke und Gruß nochmal
Benjamin

alles was in ext/dom, ext/xml und ext/simplexml ist, wird standardmässig einkompiliert (die provider können’s natürlich immer noch disablen)

alles was mit XSLT zu tun hat, muss man explizit enablen.

HTH

ok, cool, das ist scheint schon mal viel mehr zu können als in php4,
wenn ich das bis jetzt richtig im Überblick habe ;]

Danke!

[…] …) name your comment: comment […]