XSLTProcessor::registerPHPFunctions

(PHP 5 >= 5.0.4, PHP 7, PHP 8)

XSLTProcessor::registerPHPFunctionsActiva el uso de PHP en las hojas de estilo XSLT

Descripción

public XSLTProcessor::registerPHPFunctions(array|string|null $functions = null): void

Este método permite utilizar las funciones PHP como funciones XSLT en las hojas de estilo XSL.

Parámetros

functions

Utilice este parámetro para restringir las funciones PHP accesibles desde XSLT.

Este parámetro puede ser uno de los siguientes: un string (nombre de una función), un array indexado que contiene nombres de funciones, o un array asociativo donde las claves representan el nombre de la función y el valor asociado es un callable.

Errores/Excepciones

  • Lanza una ValueError si el nombre de un callback no es válido.
  • Throws a ValueError if options contains an invalid option.
  • Throws a ValueError if overrideEncoding is an unknown encoding.
  • Lanza una TypeError si un callback dado no es llamable.

Valores devueltos

No devuelve ningún valor.

Historial de cambios

Versión Descripción
8.4.0 Los nombres de callback inválidos ahora lanzan una ValueError. Pasar una entrada no llamable ahora lanza una TypeError.
8.4.0 Ahora es posible utilizar callable como callbacks cuando se utiliza functions con entradas de tipo array.

Ejemplos

Ejemplo #1 Sencilla llamada a una función PHP desde una hoja 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:php="http://php.net/xsl">
<xsl:output method="html" encoding="utf-8" indent="yes"/>
<xsl:template match="allusers">
<html><body>
<h2>Users</h2>
<table>
<xsl:for-each select="user">
<tr><td>
<xsl:value-of
select="php:function('ucfirst',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->registerPHPFunctions();
$proc->importStyleSheet($xsldoc);
echo
$proc->transformToXML($xmldoc);
?>

Ver también