| ||
От PHP к XML по шагамИгорь Дидковский Задача сделать сайт эффективным обычно заканчивается его автоматизацией. Для этого web-страницы разбивают на составные части. Документ в таком случае храниться отдельноот программной части, обеспечивающей его представление в окошке браузера. Для автоматизации используют языки описания сценариев, встраиваемых в web-страничках. Например до недавнего времени я использовал для этих нужд PHP - язык очень простой и достаточно мощный, хотя для того чтобы организовать совместную работу нескольких человек придется создавать общий инструментарий (с помощью которого отдельные кусочки сайта начинают работать как единое целое), согласовывать дизайн каждой страницы, и множество других мелких нюансов не имеющих никакого отношения к контенту сайта (то о чем вы собираетесь поведать миру). Конечно удобства в таком сайте маловато, в чем я собственно и убедился когда сайт стал трудно управляем. Начались поиски каких-то пакетов, которые помогут укротить мое творение. Все пакеты, которые мне попадались были очень неудобны в использовании, и в них я не нашел того что так долго искал. Хотя некоторые уже давно нашли именно то, что я обнаружил только недавно. Мое первое впечатление от XML - недоверие к непонятной технологии. Сам формат XML не несет в себе ничего нового - это своеобразный файл базы данных, оформленный в виде гипертекста. Хотя я действительно хотел узнать больше о применении XML на практике все мои "открытия" заканчивались возможностью читать данные из XML с помощью обычных языков программирования. Ничего удивительного - еще до XML так много лет делает SQL, а еще раньше Clipper. Как мне тогда казалось все достоинства с лихвой перекрываются недостатками. Когда я наконец научился подключать к XML знакомые мне стили CSS у меня сложилось мнение что самостоятельно он и гипертекстом быть не умеет, и PHP с XML не работает. Наконец не все браузеры с ним работают(только Internet Explorer и Gecko последних версий). Тут все-таки выясняется что есть все-таки у XML какой-то свой язык стилей, но какой-то не такой, а точнее совсем не такой к какому я привык. Он был намного сложнее CSS. XSLT не отвечает за расцветку и форму шрифтов, таблиц и прочего барахла, он выполняет те функции, которые раньше выполнялись на PHP или другом скриптовом языке при шаблонизации сайта. Вообще удобно, но даже на тех браузерах что способны работать с XML и XSLT, интерпретируется XSLT неоднозначно. Для того чтобы пережить трудные времена я использую PHP. Но поскольку в PHP поддержка XML и XSLT осуществляется лишь на уровне экспериментов, пришлось активизировать модули расширения PHP. Поподробнее расскажу как заставить работать PHP с XML и XSLT. Поскольку эта статья больше интересна уже опытным владельцам сайтов, то я предположу что у вас установлен наиболее универсальный домашний набор, не зависящий отвыбора платформы: Apache, PHP, а так же браузер Mozilla. Для начала скачайте и установите бинарники sablotron, iconv и expat c сайта http://sourceforge.net/projects/expat/. Саблотрон желательно версии не ниже 0.95, иначе на нормальную поддержку кириллицы не надейтесь. В дистрибутиве PHP4 должна быть папка /extensions c находящимися там модулями расширения, некоторые из которых мы и активизируем. Для этого раскройте в редакторе файл php.ini. Найдите в нем следующий раздел:
;;;;;;;;;;;;;;;;;;;;;; Вообще-то можно активировать только последний, но некоторые часто всречающиеся в сети скрипты используют первый модуль. Эти модули связывают установленный до этого Sablotron и Expat c PHP. Чтобы модули успешно нашлись после перезагрузки web-сервера, нужно изменить еще одну строчку в разделе
;;;;;;;;;;;;;;;;;;;;;;;;; Установите следующий параметр: extension_dir = ./extensions/ Теперь можно сохранить файл и перезагрузить сервер. Никаких изменений в работе любимого сервера Apache вы заметить не должны. Теперь поговорим собственно о способе, которым можно заставить браузер Opera 6 или Netscape Navigator 4.7 работать с XML-сайтом. Для начала зайдите на сайт http://www.sourceforge.net/ projects/phpxmlclasses, и возьмите c него самую свежую версию этого сборника. В этом архиве должно лежать несколько вложенных архивов. Найдите тот, который называется class_xslt.tgz (не бойтесь, даже WinRAR их открывает). Теперь у вас есть скрипт, который пригодиться нам в дальнейшем(в архиве есть все необходимые пояснения; необходимо лишь немного понимать английский язык). Теперь, если вы все правильно сделали, можно приступать непосредственно к переводу сайта с PHP на рельсы XML/XSLT. Весь инструментарий, который имеется уже в нашем распоряжении позволит сделать это безболезненно, растянув по времени на столько, на сколько это будет необходимо. Начнемпо шагам. У меня был сайт, построенный (частично он еще таковым и остался) из отдельных кусочков ("голова", "хвост", все как обычно). В отдельном файле находились функции "головы" и "хвоста". Каждый файл документа находился отдельно и выглядел примерно так:
<? Чтобы адаптировать такой файл под новые требования воспользуйтесь скриптом, который мы с вами уже скачали. Разместите class_xslt.php в корневой папке вашего сайта. Теперь необходимо преобразовать имеющиеся в вашем "lib.inc.php"(у вас он наверняка по другому называется) "голову" и "хвост" в один шаблон. Это делается очень просто, но поскольку среди вас делать это мало кто умеет, то я вам немножко помогу:
<?xml version='1.0' encoding='windows-1251'?> Теперь наш первый файл стилей XSLT полностью готов к работе. Как вы заметили описанные здесь вставки <xsl:template> избавляют от постоянной головной боли при совместной работе и поддержке сайта, посколько жестко регламинтируют структуру документа. На основе нашего примера напишем документ XML. Воспользуемся строками, которые несут смысловую нагрузку:
<h1>Приветствие</h1> Чтобы она у нас вышла именно такой заглянем в XSLT и поймем что нужно немного изменить эти строчки при переносе их в XML-документ:
<?xml version='1.0' encoding='windows-1251'?> Теперь, когда почти все составные части будущей странички готовы можно немного побаловаться, и посмотреть как же все-таки будет выглядеть XML на практике. Для этого достаточно в документ XML перед тегом <ARTICLE> добавить следующую строчку: <?xml-stylesheet type="text/xsl" href="article.xsl"?> , где article.xsl - написанный нами стильЕсли такой документ просмотреть в современном браузере, совместимом с XML и XSLT, то вы увидите все именно так как должны. Однако, если владелец "отсталого" браузера захочет открыть страничку с вашего сервера, то он в лучшем случае ничего не увидит. Чтобы особо не переживая дожить до лучших времен будем парсить XML-файлы через уже настроенное нами расширение PHP. С помощью Sablotron(это xslt-парсер;Expat - соответственно xml-парсер) все браузеры, обращающиеся к нашему серверу будут получать чистый код XHTML. В результате такой сайт будет работать даже на самых "отсталых" браузерах. Итак, заменяем старый код странички welcome.php:
<?php Вот и все. При желании можно получить сайт внешне ничем не отличающийся от существовавшего до того. P.S. Несмотря на явный прогресс XML-технологий их использует небольшой процент сайтмейкеров, и еще меньшее число осуществляет поддержку среди бесплатных хостингов. Единственных хостинг, который мне удалось найти http://www.hut.ru/. Владельцы сайтов на этом хостинге спокойно могут сливать подобные написанным скрипты - Саблотрон там работает нормально(сам просил исправить!). Надеюсь описанный здесь метод автоматизации будет вами успешно использоваться. До новых встреч на моем сайте. Домашняя страница автора: http://e-skin.hut.ru/
| ||
Copyright © "Internet Zone", http://www.izcity.com/, info@izcity.com |