imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 23.06.2008, 14:46     # 1
Melkor
Full Member
 
Аватар для Melkor
 
Регистрация: 25.11.2001
Адрес: Imho.ws
Сообщения: 941

Melkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царстве
Динамическое XML не проходит трансформацию

То же самое, но в файле проходит, но если генерится скриптом, то нет.
Пример генерации:
PHP код:
<?php
header
("Content-type: application/xml");
//header("Content-type: text/xml");
    
$xw = new xmlWriter();
    
$xw->openMemory();

    
$xw->startDocument('1.0','UTF-8');
    
$xw->startElement ('ul'); // <ul>

    
$xw->writeElement ('li''Test php Document');
    
$xw->writeElement ('li''Test xml Document');

    
$xw->endElement(); // </ul>
    
echo $xw->outputMemory(true);

?>
Заголовок вроде посылаю, в .htaccess прописал
Код:
<Files *xml>
ForceType application/x-httpd-php
</Files>
получаю ошибку:
Warning: XSLTProcessor::transformToXml()
parser error : Start tag expected, '<' not found in...
Что курить дальше?
__________________
Когда умираешь, да еще так долго и трудно, очень хочется хоть немного насолить живым, просто невозможно удержаться от искушения!
М.Фрай
Melkor вне форума  
Старый 24.06.2008, 16:56     # 2
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
А выдается-то корректный документ? Никаких варнингов, ошибок и прочей дряни не добавляется случайно?
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 25.06.2008, 13:59     # 3
Melkor
Full Member
 
Аватар для Melkor
 
Регистрация: 25.11.2001
Адрес: Imho.ws
Сообщения: 941

Melkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царстве
Выдается валидный, как домой прийду кину аттач с примером.
Тут по-моему дело в том, что пхп файл читается, а не запускается. То есть первая строчка читается <?php, а не как декларация.

Добавление той строки в htaccess по-идее должно это решить, но видимо этого не хватает. Может надо что-то в настройках изменить...
__________________
Когда умираешь, да еще так долго и трудно, очень хочется хоть немного насолить живым, просто невозможно удержаться от искушения!
М.Фрай
Melkor вне форума  
Старый 25.06.2008, 15:34     # 4
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Так я не могу понять, у Вас проблема с парсингом XML или не можете назначить обработчик, чтобы файлы обрабатывались с помощью PHP?

Что именно выдает сервер-то? Что поступает на вход XSLT-процессору?
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 25.06.2008, 15:58     # 5
Melkor
Full Member
 
Аватар для Melkor
 
Регистрация: 25.11.2001
Адрес: Imho.ws
Сообщения: 941

Melkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царстве
Я не могу сделать так, чтобы вот этот код работал:
PHP код:
    <?php
    $xp 
= new XsltProcessor();

    
// create a DOM document and load the XSL stylesheet
    
$xsl = new DomDocument;
    
$xsl->load('style.xsl');

    
// import the XSL styelsheet into the XSLT process
    
$xp->importStylesheet($xsl);
    
// create a DOM document and load the XML datat
    
$xml_doc = new DomDocument;
    
$xml_doc->load('content.php');

  
// transform the XML into HTML using the XSL file
    
if ($html $xp->transformToXML($xml_doc))
    {
        echo 
$html;
    }
    else
    {
        
trigger_error('XSL transformation failed.'E_USER_ERROR);
    } 
// if


?>

// content.php
<?php
//header("Content-type: application/xml");
//header("Content-type: text/xml");
    
$xw = new xmlWriter();
    
$xw->openMemory();

    
$xw->startDocument('1.0','UTF-8');
    
$xw->startElement ('ul'); // <ul>

    
$xw->writeElement ('li''Test php Document');
    
$xw->writeElement ('li''Test xml Document');

    
$xw->endElement(); // </ul>
    
echo $xw->outputMemory(true);

?>
Вылетает с ошибкой:
Warning: DOMDocument::load() [function.DOMDocument-load]: Start tag expected, '<' not found in file:///D%3A/xampp/htdocs/Basics_xml/imho/content.php, line: 16 in D:\xampp\htdocs\Basics_xml\imho\php_handler.php on line 21

При этом если я даю этот документ то все работает.
Код:
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
<ul>
	<li>Test php Document</li>
	<li>Test xml Document</li>
</ul>
Это в общем-то результат вывода content.php в броузер.

Как я понимаю проблема в том, что DomDocument открывает файл как он есть, а набо бы открыть его как скрипт и взять уже результат.
Вложения
Тип файла: rar imho.rar (1.9 Кбайт, 1 просмотров - Кто скачивал? )
__________________
Когда умираешь, да еще так долго и трудно, очень хочется хоть немного насолить живым, просто невозможно удержаться от искушения!
М.Фрай
Melkor вне форума  
Старый 25.06.2008, 16:52     # 6
Melkor
Full Member
 
Аватар для Melkor
 
Регистрация: 25.11.2001
Адрес: Imho.ws
Сообщения: 941

Melkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царстве
у меня есть менее удобный вариант обхода:
запихать все это в функцию и выдавать так:
PHP код:
function doit()
{
$string = <<<XML
<?xml version='1.0' encoding='utf-8' ?>

<ul>
    <li>Test php Document</li>
    <li>Test xml Document</li>
</ul>
XML;
return $string;

}

$xp->transformToXML(DomDocument::loadXML( my_function() )
__________________
Когда умираешь, да еще так долго и трудно, очень хочется хоть немного насолить живым, просто невозможно удержаться от искушения!
М.Фрай
Melkor вне форума  
Старый 25.06.2008, 18:00     # 7
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Цитата:
Сообщение от Melkor Посмотреть сообщение
$xml_doc->load('content.php');
Конечно же это загрузит PHP - код, а не XML, как результат выполнения скрипта content.php.
Как Вариант, можете попробовать грузить его через Веб-сервер, типа такого:
$xml_doc->load('http://example.com/content.php');
Как Вариант, можете выполнить его на сервере типа такого:
$xml_doc->load( passthru('/usr/bin/php content.php'));

Но лучше, лучше все же сделать так:
В content.php убираете вывод, то есть удаляете (комментируете) строку echo $xw->outputMemory(true); а там где процессите, вместо процитированной строки делаете так:
PHP код:
include('content.php');
$xml_doc->load$xw->outputMemory(true) ); 
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 25.06.2008, 19:31     # 8
Melkor
Full Member
 
Аватар для Melkor
 
Регистрация: 25.11.2001
Адрес: Imho.ws
Сообщения: 941

Melkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царстве
Да, последний вариант лучше всего и главное работает Только надо через loadXML загружать, иначе какие-то странные потери в коде

Остановился на таком варианте:

PHP код:
    <?php
    $xp 
= new XsltProcessor();

    
// create a DOM document and load the XSL stylesheet
    
$xsl = new DomDocument;
    
$xsl->load('style.xsl');

    
// import the XSL styelsheet into the XSLT process
    
$xp->importStylesheet($xsl);
    
// create a DOM document and load the XML datat
    
$xml_doc = new DomDocument;

    include(
'content.php');

  
// transform the XML into HTML using the XSL file
    
if ($html $xp->transformToXML(DomDocument::loadXML$xw->outputMemory(true))))
    {
        echo 
$html;
    }
    else
    {
        
trigger_error('XSL transformation failed.'E_USER_ERROR);
    } 
// if
?>
вывод в броузер через loadXML()
Код:
<h2>Style loaded</h2>start<ul>
<li>Test php Document</li>
<li>Test xml Document</li>

</ul>end
вариант 2:

вывод в броузер через load()
Код:
<h2>Style loaded</h2>startend
Вопрос можно считать решенным
__________________
Когда умираешь, да еще так долго и трудно, очень хочется хоть немного насолить живым, просто невозможно удержаться от искушения!
М.Фрай
Melkor вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 22:25.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.