(PHP >= 8.4.0)
XSLTProcessor::registerPHPFunctionNS — Register a PHP function as namespaced XSLT function
$namespaceURI, string $name, callable $callable): voidThis method enables the ability to use a PHP function as a namespaced XSLT functions within XSL stylesheets.
namespaceURIThe URI of the namespace.
nameThe local function name inside the namespace.
callableThe PHP function to call when the XSL function gets called within the stylesheet. When a node list is passed as parameter to the callback, the argument becomes an array containing the matched dom nodes.
Throws a ValueError if a callback name is not valid.
Wenn options eine ungültige Option enthält, wird ein
ValueError ausgelöst.
Wenn overrideEncoding eine unbekannte Kodierung ist,
wird ein ValueError ausgelöst.
Throws a TypeError if a given callback is not callable.
Es wird kein Wert zurückgegeben.
Beispiel #1 Simple PHP Function call from a stylesheet
<?php
$xml = <<<EOB
<allusers>
<user>
<uid>bob</uid>
</user>
<user>
<uid>joe</uid>
</user>
</allusers>
EOB;
$xsl = <<<EOB
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:my="urn:my.ns">
<xsl:output method="html" encoding="utf-8" indent="yes"/>
<xsl:template match="allusers">
<html><body>
<h2><xsl:value-of select="my:count(user/uid)" /> users</h2>
<table>
<xsl:for-each select="user">
<tr>
<td>
<xsl:value-of select="my:uppercase(string(uid))"/>
</td>
</tr>
</xsl:for-each>
</table>
</body></html>
</xsl:template>
</xsl:stylesheet>
EOB;
$xmldoc = new DOMDocument();
$xmldoc->loadXML($xml);
$xsldoc = new DOMDocument();
$xsldoc->loadXML($xsl);
$proc = new XSLTProcessor();
$proc->registerPHPFunctionNS('urn:my.ns', 'uppercase', strtoupper(...));
$proc->registerPHPFunctionNS('urn:my.ns', 'count', fn (array $arg1) => count($arg1));
$proc->importStyleSheet($xsldoc);
echo $proc->transformToXML($xmldoc);
?>