XSLTProcessor::registerPHPFunctionNS
(PHP >= 8.4.0)
XSLTProcessor::registerPHPFunctionNS — Register a PHP function as namespaced XSLT function
说明
public XSLTProcessor::registerPHPFunctionNS(string
$namespaceURI
, string $name
, callable $callable
): voidThis 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.
错误/异常
- Throws a ValueError if a callback name is not valid.
-
Throws a ValueError if
options
contains an invalid option. -
Throws a ValueError if
overrideEncoding
is an unknown encoding. - Throws a TypeError if a given callback is not callable.
返回值
没有返回值。
示例
示例 #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);
?>
参见
- DOMXPath::registerPhpFunctionNS() - Register a PHP functions as namespaced XPath function
- DOMXPath::registerPhpFunctions() - Register PHP functions as XPath functions
- XSLTProcessor::registerPhpFunctions() - Enables the ability to use PHP functions as XSLT functions
+添加备注
用户贡献的备注
此页面尚无用户贡献的备注。
备份地址:http://www.lvesu.com/blog/php/xsltprocessor.registerphpfunctionns.php