(PHP 5 >= 5.0.4, PHP 7, PHP 8)
XSLTProcessor::registerPHPFunctions — Activa el uso de PHP en las hojas de estilo XSLT
Este método permite utilizar las funciones PHP como funciones XSLT en las hojas de estilo XSL.
functions tiene como valor por defecto null, lo que significa que,
por defecto, llamar a este método habilita el acceso a todas
las funciones PHP.
functionsUtilice este parámetro para restringir las funciones PHP accesibles desde XSLT.
Este parámetro puede ser uno de los siguientes:
null para indicar que se permiten todas las funciones,
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.
Lanza una ValueError si el nombre de un callback no es válido.
Levanta una excepción ValueError si
options contiene una opción inválida.
Levanta una excepción ValueError si
overrideEncoding utiliza un codificado desconocido.
Lanza una TypeError si un callback dado no es llamable.
No se retorna ningún valor.
| 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.
|
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);
?>