За последние 24 часа нас посетили 18144 программиста и 1596 роботов. Сейчас ищет 971 программист ...

XSLT

Тема в разделе "PHP для новичков", создана пользователем AniMEshKa, 22 ноя 2007.

  1. AniMEshKa

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

    С нами с:
    4 сен 2007
    Сообщения:
    151
    Симпатии:
    0
    Адрес:
    Минск
    каким образом (вроде бы есть какая-то функция и библиотека) в php произвести трансформирование xml+xsl к примеру в html или в pdf.
     
  2. AlexGousev

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

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
  3. AniMEshKa

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

    С нами с:
    4 сен 2007
    Сообщения:
    151
    Симпатии:
    0
    Адрес:
    Минск
    спасибо! буду разбираться
     
  4. AniMEshKa

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

    С нами с:
    4 сен 2007
    Сообщения:
    151
    Симпатии:
    0
    Адрес:
    Минск
    разбиралась с этой темой и вот следующая проблема назрела: при сохранении результата трансформации в переменнуую с последующим выводом на экран всё работает.. а вот в файл почему-то сохранять не хочет.. хотя и ошибок не выдаёт. не могу понять почему..
    вторая проблема: если поместить значения (xml и xsl) вместо переменных в файлы и считывать их оттуда то выдаёт ошибку
    not well-formed (invalid token)
    вот что прочитала по поводу этой ошибки в инете:
    не могу понять почему же вылазит эта ошибка если всего навсего тот же код помещается в файлики
    PHP:
    1.  
    2.  
    3. $xmlData = '<?xml version="1.0" encoding="Windows-1251"?>
    4. <document>
    5. <game>
    6.     <title>Railroad Tycoon II Platinum</title>
    7.     <genre>Economy strategy</genre>
    8.     <designer>PopTop software</designer>
    9.     <publisher>G.O.D. games</publisher>
    10.     <year>2001</year>
    11. </game>
    12. <game>
    13.     <title>Grand Prix 4</title>
    14.     <genre>Avto simalate</genre>
    15.     <designer>Geoff Crammond and Simergy</designer>
    16.     <publisher>Infogrames Entertainment</publisher>
    17.     <year>2002</year>
    18. </game>
    19. </document>
    20.  
    21. ';
    22.  
    23. $xslData = '<?xml version="1.0" encoding="windows-1251"?>
    24. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    25. <xsl:output method="html" indent="yes" encoding="Windows-1251"/>
    26.  
    27. <xsl:template match="/">
    28.     <xsl:apply-templates/>
    29. </xsl:template>
    30.  
    31. <xsl:template match="document">
    32.     <html><head>
    33.     <title>Games</title>
    34.     </head>
    35.     <body>
    36.     <h1>Games</h1>
    37.     <table cellpadding="2" cellspacing="2" border="1">
    38.     <tr>
    39.         <td>Name</td>
    40.         <td>Janr</td>
    41.         <td>Year</td>
    42.         <td>Developer</td>
    43.         <td>Publ</td>
    44.     </tr>
    45.         <xsl:apply-templates select="game"/>
    46.     </table>
    47.     </body></html>
    48. </xsl:template>
    49.  
    50. <xsl:template match="game">
    51.     <tr>
    52.         <td><b><xsl:value-of select="title"/></b></td>
    53.         <td><xsl:value-of select="genre"/></td>
    54.         <td><xsl:value-of select="year"/></td>
    55.         <td><xsl:value-of select="designer"/></td>
    56.         <td><xsl:value-of select="publisher"/></td>
    57.     </tr>
    58. </xsl:template>
    59.  
    60. </xsl:stylesheet>
    61. ';
    62.  
    63.     $arguments = array(
    64.         '/_xml' => $xmlData,
    65.         '/_xsl' => $xslData
    66.     );
    67.  
    68. $xh = xslt_create();
    69.  
    70. $path=$_SERVER['DOCUMENT_ROOT'];
    71. $uploadfile =$path. '/1/result.xml';
    72.  
    73. $result = xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', $uploadfile, $arguments);
    74. if ($result) {
    75.     print "SUCCESS, sample.xml was transformed by sample.xsl into result.xml";
    76.     print ", result.xml has the following contents\n<br>\n";
    77.     print "<pre>\n";
    78.     readfile($uploadfile);
    79.     print "</pre>\n";
    80. }
    81. else {
    82.     print "Sorry, sample.xml could not be transformed by sample.xsl into";
    83.     print "  result.xml the reason is that " . xslt_error($xh) . " and the ";
    84.     print "error code is " . xslt_errno($xh);
    85. }
    86.  
    87. xslt_free($xh);
    88.  
    89.  
     
  5. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    для начала прописать: xmlns="http://www.w3.org/1999/xhtml"
     
  6. AlexGousev

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

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    Не понял кто куда сохраняется? Полученная после преобразования строка или кто?

    Значит, где-то ошибка :)
    Если открыть файл в firefox он показывает где.

    Я сам пользуюсь функциями (точнее, объектом) по ссылке. Там процесс немного по-другому происходит.
     
  7. AniMEshKa

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

    С нами с:
    4 сен 2007
    Сообщения:
    151
    Симпатии:
    0
    Адрес:
    Минск
    строка в файл result.xml:
    PHP:
    1.  $uploadfile =$path. '/1/result.xml';
    2.    $result = xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', $uploadfile, $arguments);
    я проверяла в xmlwriter'e. но не могу понять всё же.. ведь тот же самый код. если рассматривать как строку.. то всё чётко.. а если считывать с файла.. то ошибку пишет... как так может быть?!

    не помогло