XSLTProcessor::registerPHPFunctionNS

(PHP >= 8.4.0)

XSLTProcessor::registerPHPFunctionNSRegister a PHP function as namespaced XSLT function

Описание

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

This method enables the ability to use a PHP function as a namespaced XSLT functions within XSL stylesheets.

Список параметров

namespaceURI
The URI of the namespace.
name
The local function name inside the namespace.
callable
The PHP function to call when the XSL function gets called within the stylesheet. When a node list is passed as parameter to the callback, the argument becomes an array containing the matched dom nodes.

Возвращаемые значения

Функция не возвращает значения после выполнения.

Примеры

Пример #1 Simple PHP Function call from a stylesheet

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

Смотрите также

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top