За последние 24 часа нас посетил 52561 программист и 1764 робота. Сейчас ищут 875 программистов ...

XSL и registerPHPFunctions

Тема в разделе "Прочие вопросы по PHP", создана пользователем lexinfo, 13 май 2011.

  1. lexinfo

    lexinfo Активный пользователь

    С нами с:
    16 янв 2007
    Сообщения:
    51
    Симпатии:
    0
    Адрес:
    Ростов-на-Дону
    Есть такая штука: http://php.net/manual/en/xsltprocessor. ... ctions.html

    Есть такой XML
    HTML:
    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <node1 version="2">  
    3. <result>
    4. <rowset>
    5. <row typeID="11489">
    6. <row typeID="11489">
    7. </rowset>
    8. </node1>
    Есть такой XSL
    HTML:
    1. <?xml version="1.0" encoding="windows-1251"?>
    2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
    3.     <xsl:output method="html" encoding="windows-1251" indent="yes"/>
    4.     <xsl:template match="node1">
    5.         <div class="page-title"><h2>нода</h2></div>
    6.         <div class="inner">
    7.             <xsl:for-each select="result/rowset/row">
    8.                 <div class="page-subtitle"><h2><xsl:value-of select="php:function ('getItemNameById',@typeID)"/></h2></div>
    9.             </xsl:for-each>
    10.         </div>     
    11.     </xsl:template>
    12. </xsl:stylesheet>
    есть такая ф-ция
    PHP:
    1. function getItemNameById($typeID)
    2.     {
    3.         .....
    4.         return "ываыва";
    5.     }
    и вот так я применяю стиль к XML
    PHP:
    1. $xsl = new DomDocument();
    2.         $xsl->loadXML($input_xsl);
    3.        
    4.         $xml = new DomDocument();
    5.         $xml->loadXML($input_xml);
    6.  
    7.         $proc = new XsltProcessor();
    8.         $proc->registerPhpFunctions();
    9.        
    10.         $proc->importStylesheet($xsl);
    11.         echo $proc->transformToXML($xml);
    Кто скажет, ПОЧЕМУ в стиле не работает строчка
    <xsl:value-of select="php:function ('getItemNameById',@typeID)"/>
    ?????

    Я пробовал и php:function и php:functionString и в класс и в класс со статик методом и с неймспейсом, нифига! Кто курил эту дрянь, подскажите%)
     
  2. lexinfo

    lexinfo Активный пользователь

    С нами с:
    16 янв 2007
    Сообщения:
    51
    Симпатии:
    0
    Адрес:
    Ростов-на-Дону
    Проблема решена!

    HTML:
    1. <xsl:stylesheet version="1.0"
    2.    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    3.   xmlns:php="http://php.net/xsl"
    4.    xsl:extension-element-prefixes="php"
    5. >
    6. <xsl:output method="xml" indent="yes" encoding="utf-8" />
    7. <xsl:namespace-alias stylesheet-prefix="php" result-prefix="xsl" />