(PHP >= 8.4.0)
XSLTProcessor::registerPHPFunctionNS — Registra uma função PHP como uma função XSLT com namespace
$namespaceURI, string $name, callable $callable): voidEste método permite usar uma função PHP como uma função XSLT com namespace dentro de folhas de estilo XSL.
namespaceURIO URI do namespace.
nameO nome da função local dentro do namespace.
callableA função PHP a ser chamada quando a função XSL for chamada dentro da folha de estilo. Quando uma lista de nós é passada como parâmetro para a função de retorno, o argumento se torna um array contendo os nós DOM correspondentes.
Lança uma exceção ValueError se um nome de chamada de retorno não for válido.
Lança uma exceção ValueError se
options contiver uma opção inválida.
Lança uma exceção ValueError s
overrideEncoding for uma codificação desconhecida.
Lança uma exceção TypeError se uma função de retorno informada não for chamável.
Nenhum valor é retornado.
Exemplo #1 Chamada de função PHP simples a partir de uma folha de estilo
<?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);
?>