(PHP 5 >= 5.0.4, PHP 7, PHP 8)
XSLTProcessor::registerPHPFunctions — Aktiviert die Nutzbarkeit von PHP-Funktionen als XSLT-Funktionen
Diese Methode aktiviert die Nutzbarkeit von PHP-Funktionen als XSLT-Funktionen innerhalb eines XSL-Stylesheets.
functions
Dieser Parameter ermöglicht es, die via XSL aufrufbaren Funktionen einzuschränken.
Dieser Parameter kann eines der folgenden sein: ein String (ein Funktionsname), ein indiziertes Array von Funktionsnamen oder ein assoziatives Array, dessen Schlüssel die Funktionsnamen und die zugehörigen Werte die Callables sind.
options
eine ungültige Option enthält, wird ein
ValueError ausgelöst.
overrideEncoding
eine unbekannte Kodierung ist,
wird ein ValueError ausgelöst.
Es wird kein Wert zurückgegeben.
Version | Beschreibung |
---|---|
8.4.0 | Invalid callback names now throws a ValueError. Passing a non-callable entry now throws a TypeError. |
8.4.0 |
Es ist nun möglich, Callables als Callbacks zu verwenden,
wenn Array-Einträge mit functions
kombiniert werden.
|
Beispiel #1 Einfacher Aufruf einer PHP-Funktion durch ein 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:php="http://php.net/xsl">
<xsl:output method="html" encoding="utf-8" indent="yes"/>
<xsl:template match="allusers">
<html><body>
<h2>Benutzer</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);
?>