Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использование нескольких XML, первые шаги в xml+xslt+php 
:(
    Опции темы
yalo
Дата 27.7.2012, 06:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 24.5.2006

Репутация: нет
Всего: 2



Здравствуйте.
У меня такой вопрос. Я только начала пробовать изучать технологию php+xml+xslt. Имею на руках дизайн и верстку в html.
Сайт обычной сложности, не слишком сложный, но и не совсем чтоб примитивный. Обычный сайт  для продажи косметики разных производителей. Примерная схема такая его:

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

ШАПКА (логотип + поле поиска по сайту + рисунок корзины с подписью сколько в ней товара, НЕ ИЗМЕНЯЕТСЯ (не считая количества товаров в корзине..))

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

ГОРИЗОНТАЛЬНОЕ МЕНЮ (на всю ширину сайта, НЕ ИЗМЕНЯЕТСЯ)

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

ВЕРТИКАЛЬНОЕ МЕНЮ         |    СОДЕРЖИМОЕ ТЕКУЩЕЙ СТРАНИЦЫ (изменяется)
(имеет                                  |
уровни вложенности,          |
ИЗМЕНЯЕТСЯ)                       |

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

ПОДВАЛ (контакты + краткое горизонтальное меню, НЕ ИЗМЕНЯЕТСЯ)

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Кое-что сама уже разумеется почитала, и что такое xml, и что такое xslt, общую схему на простых примерах схватила, например на таком:
Код

// Вывод кода HTML в виде текста
header('Content-Type: text/plain;');

// Объект исходного XML-документа
$xml = new DOMDocument(null, 'windows-1251');
$xml->load('test.xml');

// Объект стиля
$xsl = new DOMDocument(null, 'windows-1251');
$xsl->load('test.xsl');


// Создание парсера
$proc = new XSLTProcessor();

// Подключение стиля к парсеру
$proc->importStylesheet($xsl);

// Обработка парсером исходного XML-документа
$parsed = $proc->transformToXml($xml);

// Вывод результирующего кода
echo $parsed;  // НА ЭТОМ МЕСТЕ, ПРАВДА, ОТКРЫВАЕТСЯ В БРАУЗЕРЕ СЛОВНО БЛОКНОТОМ.. НЕ ПОЙМУ ПОЧЕМУ

// Запись файла с результирующим кодом
file_put_contents('myparsed.html', $parsed); // А ЕСЛИ ЭТОТ ФАЙЛ ОТКРЫТЬ ПОТОМ БРАУЗЕРОМ, ТО ВСЕ ОК..  ПОЧЕМУ ТОГДА ЧЕРЕЗ ECHO НЕ ПОЛУЧАЕТСЯ ВЫВЕСТИ ТОЖЕ САМОЕ?


В целом пример заработал (правда, некоторые нюансы указала в последних комментариях кода), но вот я, глядя на свой макет, понимаю, что не хочется, чтобы мой пхп генерил для каждой страницы по 10 раз то, что и так уже будет всегда статично (горизонт. меню, подвал, даже почти вся шапка (но ее ведь тоже можно разбить на две части - изменяемая и не изменяемая)). Хочется иметь что-то типа: header_st.xml, header_dyn.xml, menu_st.xml, menu_dyn.xml, content.xml, footer.xml, а для парсинга как-то их все учитывать.. Гуглила темы на сайте, что-то похожее нашла, где посоветовали использовать xinclude, сделала по мануалу, но не заработало, и я вот уже думаю, что может как-то по-другому лучше делать, без xinclude? С xinclude выдавалась ошибка:
Namespace prefix xi on include is not defined in Entity.

PM MAIL ICQ   Вверх
krypt3r
Дата 27.7.2012, 06:57 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 9.6.2009

Репутация: 2
Всего: 16



Что-то код у вас какой-то странный местами.
1. Это
Код

$xml = new DOMDocument(null, 'windows-1251');

заменить на стандарт
Код

$xml = new DOMDocument('1.0', 'utf-8');

и юзать соответствующую кодировку в проекте.
2.
Код

// Обработка парсером исходного XML-документа
$parsed = $proc->transformToXml($xml);

Почитайте, что делает transformToXml(). Думаю, вам нужно что-то типа
Код

$parsed = $proc->transformToDoc($xml)->saveHTML();

3.
Цитата

// НА ЭТОМ МЕСТЕ, ПРАВДА, ОТКРЫВАЕТСЯ В БРАУЗЕРЕ СЛОВНО БЛОКНОТОМ.. НЕ ПОЙМУ ПОЧЕМУ

Это неудивительно, у вас же написано первой строкой, что нужно обрабатывать как text/plain. Если хотите человеческого вывода разметки HTML в браузер, укажите text/html

Добавлен аттач. Пример использования связки PHP+XML+XInclude+XSLT

Это сообщение отредактировал(а) krypt3r - 27.7.2012, 08:22

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  xinclude.zip 2,62 Kb
PM MAIL   Вверх
yalo
Дата 29.7.2012, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 24.5.2006

Репутация: нет
Всего: 2



krypt3r, спасибо большое. Посмотрела пример - мне кажется, это то, что мне нужно:) Надо правда еще поизучать файл index.xsl, с xml у меня получше дела, а вот с xslt сложнее, но я посмотрела - по xslt теория даже в википедии есть:) Но если что - ожидайте вопросов;) Спасибо:)
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: X технологии | Следующая тема »


 




[ Время генерации скрипта: 0.1124 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.