У меня проблема с использованием PHP 5 XSLTProcessor для манипулирования следующим XML-документом.Проблема не в том, что вывод обрабатывается XSLT, а к элементам вывода html добавляются xmlns: php = "http://php.net/xsl" *. Пример ниже.
PHP:
$xmldoc = DOMDocument::load($xml);
$xsldoc = DOMDocument::load($xslt);
$proc = new XSLTProcessor();
$proc->registerPHPFunctions();
$proc->importStyleSheet($xsldoc);
echo $proc->transformToXML($xmldoc);
XML:
<allusers>
<user>
<uid>bob</uid>
</user>
<user>
<uid>tom</uid>
</user>
</allusers>
XSLT:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:php="http://php.net/xsl"
xsl:extension-element-prefixes="php">
<xsl:output method="html" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="allusers">
<h2>Users</h2>
<table>
<xsl:for-each select="user">
<tr><td>
<xsl:value-of select="php:function ('MyClass::firstLetter',string(.))"/>
</td></tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
И нечетный вывод (обратите внимание на xmlns: php = "http://php.net/xsl"):
<!DOCTYPE html>
<html>
<head></head>
<body>
<h2 xmlns:php="http://php.net/xsl">Users</h2>
<table xmlns:php="http://php.net/xsl">
<tr><td>b</td></tr>
<tr><td>t</td></tr>
</table>
</body>
</html>
Есть идеи? Я уверен, что у меня есть все необходимые импорты, и я использую их правильно, но если кто-то может показать мне, что или где я иду не так, это было бы здорово. Заранее спасибо.