Есть код PHP: Код (Text): <?php header("Content-type: text/html; charset=utf-8"); $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>Users</h2> <table> <xsl:for-each select="user"> <tr><td> <xsl:value-of select="php:function('ucfirst',string(uid))"/> <xsl:value-of select="php:function('test')"/> </td></tr> </xsl:for-each> </table> </body></html> </xsl:template> </xsl:stylesheet> EOB; function test(){ echo 'Тестовая функция'; } $xmldoc=new DOMDocument(); $xmldoc->loadXML($xml); $xsldoc=new DOMDocument(); $xsldoc->loadXML($xsl); $proc = new XSLTProcessor(); $proc->registerPHPFunctions(); $proc->importStyleSheet($xsldoc); echo $proc->transformToXML($xmldoc); ?> Вопрос::Когда вызываются стандартные функции PHP - все в порядке ..., когда я пытаюсь вызвать пользовательскую функцию, он делает вывод не там где нужно, а перед всеми тэгами!!!! Помогите разобраться в чем тут соль???? Гуглю эту тему третий день ... Мозг взрывается!!! Спасайте.
видимо этот код обрабатывается до вывода всего документа, нужно смотреть систему в целом... ну или извращаться с ob_start() ...
Это понятно что перед всем ..., непонятно как заставить его во время срабатывать ... И заставить его нужно не средствами PHP а средствами XSLT ..., в моем случае PHP выступает как сборщик и не более ... Вся логика лежит в XSLT ...
заработало ..., огромное спасибо )) а в чем разница в данном случае??? почему return ставит на место а echo фигней страдает???
440hz - респект echo пишет в вывод а return ни чего не пишет а возвращает значение тому, кто вызвал ф-цию.