XSLTProcessor::registerPHPFunctionNS

(PHP >= 8.4.0)

XSLTProcessor::registerPHPFunctionNSEnregistre une fonction PHP en tant que fonction XSLT dans un espace de noms

Description

public XSLTProcessor::registerPHPFunctionNS(string $namespaceURI, string $name, callable $callable): void

Cette méthode permet d'utiliser une fonction PHP en tant que fonction XSLT dans les feuilles de style XSL.

Liste de paramètres

namespaceURI
L'URI de l'espace de noms.
name
La fonction locale à l'intérieur de l'espace de noms.
callable
La 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.

Erreurs / Exceptions

  • Lance une ValueError si le nom d'un callback 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 un callback donné n'est pas appelable.

Valeurs de retour

Aucune valeur n'est retournée.

Exemples

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);
?>

Voir aussi

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top