Преобразование xm+xsl с помощью sablotron. Достало уже все!!!!

vil

Guest
Преобразование xm+xsl с помощью sablotron. Достало уже все!!!!

Всем привет!!!
О великие программеры на php, пожалуйста помогите, умоляю!!!! Скоро вешаться пойду нафиг!!!!

Я делаю сабж. Делаю это так:

<?php
$xmlData = '<?xml version="1.0" encoding="windows-1251" ?>
<my_root>
<head />
<page>
<mainmenu>
<menuitem link="/">Меню 1</menuitem>
<menuitem link="/classroom/">Меню 2</menuitem>
<menuitem link="/work/">Меню 3</menuitem>
<menuitem link="/courses/">Меню 4</menuitem>
<menuitem link="/news/">Меню 5</menuitem>
<menuitem link="/docs/">Меню 6</menuitem>
<menuitem link="/register/">Меню 7</menuitem>
<menuitem link="http://link.ru">Меню 8</menuitem>
<menuitem link="/files/">Меню 9</menuitem>
<menuitem link="/quit/">Меню 10</menuitem>
</mainmenu>
<column width="30%">
<hd>Новости</hd>
<news date="2004-01-15">
Новость 1
<link href="/news/?news_id=150">подробнее</link>
</news>
<news date="2004-11-21">
Новость 2
<link href="/news/?news_id=141">подробнее</link>
</news>
<news date="2004-11-19">
Новость 3
<link href="/news/?news_id=140">подробнее</link>
</news>
<news date="2004-11-17">
Новость 4
<link href="/news/?news_id=139">подробнее</link>
</news>
</column>
<column width="50%">
<hd>Информация</hd>
<br />
<btext>
Который день не могу решить одну проблему!!! АААА!!! Обращаться в психушку!!
<link href="mailto:p[email protected]">Психи: [email protected]</link>
</btext>
</column>
<footer>
<footermenu>
<copyright>Пост</copyright>
</footermenu>
</footer>
</page>
</my_root>';

// Создание объекта документа из текстовой строки
$xmldoc = domxml_open_mem($xmlData);

//print($xmldoc->dump_mem());


include_once("class_xslt.php");
$xslt=new Xslt();
$xslt->setXmlString($xmldoc);
$xslt->setXsl("ent.xsl");
if($xslt->transform())
{
$ret=$xslt->getOutput();
echo $ret;
}
else {
print("Error:".$xslt->getError());
}
$xslt->destroy();
?>

Значит xml документ находится в $xmlData, а xsl - в файле ent.xsl

Использую класс class_xslt.php взятый отсюда
http://www.sourceforge.net/projects/phpxmlclasses - самый последний файл class_xslt_1.2

В итоге парсер выдает это:
<B>Error:XML parser error 5: unclosed token
!!!Ответьте пожалуйста Что это такое?????? Как решить эту проблему???</B>

Но самое интересное в этом:
Когда я за место строки $xslt->setXmlString($xmldoc);
подставляю $xslt->setXmlString($xmlData); - ВСЕ работает!!!!!!!

И еще один вопрос если в атрибутах элемента я вставляю знак "&" - <b>парсер выдает "Error:XML parser error 4: not well-formed"</b>

<b>Все стоит на фрях 5.3-RELEASE-p10. Саблотрон версии 1.0.1. expat_1.95.8 . iconv library version 1.9 . есть поддержка domxml</b>

<b>!!!!!!Пожалуйста ответьте. Как избавиться от первой проблемы,потому что все написано именно с использованием функций domxml!!!!!!!!!!!!!!!!!!!!!!!!! Что такое с функцией domxml_open_mem. Почему он пишет не закрытый маркер?????</b>

-~{}~ 24.06.05 08:51:

Да и еще забыл:
Стоит на машике Apache/1.3.33 (Unix) PHP/4.3.11 mod_perl/1.29 mod_ssl/2.8.22 OpenSSL/0.9.7d rus/PL30.20
 

slach

Новичок
тебе сообщения об ошибках перевести или что??

ты подсовываешь НЕВЕРНО оформленные данные
тебе парсер честно говорит, что у тебя ошибка в документах
сохрани в файл и потом открой XML и XSL данные по отдельности в MSIE
посмотри какие ошибки он тебе выдает

есть утилиты проверки на well-formed - это xmllint.exe и xmlwf.exe (брать тамже где брал libxml2 бинарники под win32 и expat), показывают в каком именно месте в XML данных ошибка

пойди прочитай ЧТО ТАКОЕ XML что такое well-formed и valid документы

операционная система тут вообще непричем
 

.::PhoenikS::.

Новичок
Но самое интересное в этом:
Когда я за место строки $xslt->setXmlString($xmldoc);
подставляю $xslt->setXmlString($xmlData); - ВСЕ работает!!!!!!!
---------------------------------
потому как методу, как ясно из его названия, надо давать агрумент типа string (т.е. твой xmlData), а ты пытаешься сунуть DOMDocument (объект), вот ничего и не работает (DOM кстати тебе вообще не нужен тут :))

короче, внимательней читай доки
 

vil

Guest
!!!!!!!!!!!!! Огромное спасибо: slach и ::phoenikS::!!! За ваши ответы!!!!!!!
Ооооооооооооооооо, я щас в таком восторге!!!
Все таки свежей головой посмотреть на проблему всегда помогает!!!!!

Наконец-то все работает!!!!!!!!

to slach проверил сначала как ты сказал - все документы валидные, все было рульно!Ослик отображал по отдельности так как надо!!!

to ::phoenikS:: вот после твоего сообщения как раз таки зацепило! ЁЁЁЁ!!!!!!!

Нужно было сделать вот так:$xslt->setXmlString($xmldoc->dump_mem());

УРА!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Как же я тупил! офигенно!!!!!!!!!!!!!! сам удивляюсь!!!!!!!!!!!
Эх, ребята наставили на путь истинный!!!!!!!!!!!!
 

slach

Новичок
поменьше эмоций, побольше конструктива

welcome to XSLT world ;)
 
Сверху