каким образом (вроде бы есть какая-то функция и библиотека) в php произвести трансформирование xml+xsl к примеру в html или в pdf.
разбиралась с этой темой и вот следующая проблема назрела: при сохранении результата трансформации в переменнуую с последующим выводом на экран всё работает.. а вот в файл почему-то сохранять не хочет.. хотя и ошибок не выдаёт. не могу понять почему.. вторая проблема: если поместить значения (xml и xsl) вместо переменных в файлы и считывать их оттуда то выдаёт ошибку not well-formed (invalid token) вот что прочитала по поводу этой ошибки в инете: не могу понять почему же вылазит эта ошибка если всего навсего тот же код помещается в файлики PHP: $xmlData = '<?xml version="1.0" encoding="Windows-1251"?> <document> <game> <title>Railroad Tycoon II Platinum</title> <genre>Economy strategy</genre> <designer>PopTop software</designer> <publisher>G.O.D. games</publisher> <year>2001</year> </game> <game> <title>Grand Prix 4</title> <genre>Avto simalate</genre> <designer>Geoff Crammond and Simergy</designer> <publisher>Infogrames Entertainment</publisher> <year>2002</year> </game> </document> '; $xslData = '<?xml version="1.0" encoding="windows-1251"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" indent="yes" encoding="Windows-1251"/> <xsl:template match="/"> <xsl:apply-templates/> </xsl:template> <xsl:template match="document"> <html><head> <title>Games</title> </head> <body> <h1>Games</h1> <table cellpadding="2" cellspacing="2" border="1"> <tr> <td>Name</td> <td>Janr</td> <td>Year</td> <td>Developer</td> <td>Publ</td> </tr> <xsl:apply-templates select="game"/> </table> </body></html> </xsl:template> <xsl:template match="game"> <tr> <td><b><xsl:value-of select="title"/></b></td> <td><xsl:value-of select="genre"/></td> <td><xsl:value-of select="year"/></td> <td><xsl:value-of select="designer"/></td> <td><xsl:value-of select="publisher"/></td> </tr> </xsl:template> </xsl:stylesheet> '; $arguments = array( '/_xml' => $xmlData, '/_xsl' => $xslData ); $xh = xslt_create(); $path=$_SERVER['DOCUMENT_ROOT']; $uploadfile =$path. '/1/result.xml'; $result = xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', $uploadfile, $arguments); if ($result) { print "SUCCESS, sample.xml was transformed by sample.xsl into result.xml"; print ", result.xml has the following contents\n<br>\n"; print "<pre>\n"; readfile($uploadfile); print "</pre>\n"; } else { print "Sorry, sample.xml could not be transformed by sample.xsl into"; print " result.xml the reason is that " . xslt_error($xh) . " and the "; print "error code is " . xslt_errno($xh); } xslt_free($xh);
Не понял кто куда сохраняется? Полученная после преобразования строка или кто? Значит, где-то ошибка Если открыть файл в firefox он показывает где. Я сам пользуюсь функциями (точнее, объектом) по ссылке. Там процесс немного по-другому происходит.
строка в файл result.xml: PHP: $uploadfile =$path. '/1/result.xml'; $result = xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', $uploadfile, $arguments); я проверяла в xmlwriter'e. но не могу понять всё же.. ведь тот же самый код. если рассматривать как строку.. то всё чётко.. а если считывать с файла.. то ошибку пишет... как так может быть?! не помогло