International PHP Conference Munich 2025

XSLTProcessor::registerPHPFunctionNS

(PHP >= 8.4.0)

XSLTProcessor::registerPHPFunctionNSRegistra uma função PHP como uma função XSLT com namespace

Descrição

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

Este método permite usar uma função PHP como uma função XSLT com namespace dentro de folhas de estilo XSL.

Parâmetros

namespaceURI
O URI do namespace.
name
O nome da função local dentro do namespace.
callable
A função PHP a ser chamada quando a função XSL for chamada dentro da folha de estilo. Quando uma lista de nós é passada como parâmetro para a função de retorno, o argumento se torna um array contendo os nós DOM correspondentes.

Erros/Exceções

  • Lança uma exceção ValueError se um nome de chamada de retorno não for válido.
  • Lança uma exceção ValueError se options contiver uma opção inválida.
  • Lança uma exceção ValueError s overrideEncoding for uma codificação desconhecida.
  • Lança uma exceção TypeError se uma função de retorno informada não for chamável.

Valor Retornado

Nenhum valor é retornado.

Exemplos

Exemplo #1 Chamada de função PHP simples a partir de uma folha 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: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);
?>

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês)

Não há notas de usuários para esta página.
To Top