(PHP >= 8.4.0)
XSLTProcessor::registerPHPFunctionNS — Enregistre une fonction PHP en tant que fonction XSLT dans un espace de noms
$namespaceURI, string $name, callable $callable): voidCette méthode permet d'utiliser une fonction PHP en tant que fonction XSLT dans les feuilles de style XSL.
namespaceURIL'URI de l'espace de noms.
nameLa fonction locale à l'intérieur de l'espace de noms.
callableLa fonction PHP à appeler lorsque la fonction XSL est appelée dans la feuille de style. Lorsqu'une liste de nœuds est passée en paramètre à la fonction de rappel, l'argument devient un tableau contenant les nœuds DOM correspondants.
Lance une ValueError si le nom d'une fonction de rappel n'est pas valide.
Lève une exception ValueError si
options contient une option invalide.
Lève une exception ValueError si
overrideEncoding utilise un encodage inconnu.
Lance une TypeError si une fonction de rappel donnée n'est pas appelable.
Aucune valeur n'est retournée.
Exemple #1 Appel simple d'une fonction PHP depuis une feuille de style
<?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);
?>