(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
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.
options
contains an invalid option.
overrideEncoding
is an unknown encoding.
No devuelve 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);
?>