GetInfo.Ru – Компьютерная библиотека
Последние поступления
Как выбрать систему управления базы данных
Базы данных03/09/14
Этапы загрузки UNIX (в схеме)
Unix27/03/12
Gatewall Antispam: тотальный контроль электронной почты
Спам21/04/11
Мастер-класс: создаем Интернет-магазин (Часть 1)
Обзоры ПО20/04/11
CorelDRAW Graphics Suite X5: Что нового?
Обзоры ПО20/07/10
Добавить статью
Самые читаемые материалы
PHP: авторизация доступа(81330)
Как сделать Интернет-магазин?(64312)
Сессии в PHP(53748)
Веб-сайт: сборка по кирпичикам(28613)
СЕССИИ - обучение и /правильное/ использование(19172)
Всего статей: 793Всего авторов: 364Подразделов: 47Добавлено за сутки: 0
Статьи  СТАТЬИ Форум  ФОРУМ Рейтинг  РЕЙТИНГ Поиск  ПОИСК Контакты  КОНТАКТЫ
» Главная » PHP » От PHP к XML по шагам

От PHP к XML по шагам


Игорь Дидковский
ididkovsky@mail.ru
http://langos.lrn.ru/

Задача сделать сайт эффективным обычно заканчивается его автоматизацией. Для этого web-страницы разбивают на составные части. Документ в таком случае хранится отдельно от программной части, обеспечивающей его представление в окошке браузера.

Для автоматизации используют языки описания сценариев, встраиваемых в web-страничках. Например до недавнего времени я использовал для этих нужд PHP - язык очень простой и достаточно мощный, хотя для того чтобы организовать совместную работу нескольких человек придется создавать общий инструментарий (с помощью которого отдельные кусочки сайта начинают работать как единое целое), соглассовывать дизайн каждой страницы, и множество других мелких нюансов не имеющих никакого отношения к контенту сайта (то о чем вы собираетесь поведать миру).

Конечно удобства в таком сайте маловато, в чем я собственно и убедился когда сайт стал трудно управляем. Начались поиски каких-то пакетов, которые помогут укротить мое творение. Но все пакеты, которые мне попадались были очень неудобны в использовании, и в них я не нашел того, что так долго искал. Хотя некоторые уже давно нашли именно то, что я обнаружил только недавно.

Мое первое впечатление от XML - недоверие к непонятной технологии. Сам формат XML чем-то напоминает своеобразный файл базы данных описанный языком гипертекста. Хотя я и хотел узнать больше о применении XML на практике, все мои "открытия" заканчивались возможностью читать данные из XML с помощью раличных языков программирования. Еще до XML так поступали с файлами баз данных SQL и Clipper. Как мне тогда казалось все достоинства с лихвой перекрываются недостатками. Когда я наконец научился подключать к XML знакомые мне стили CSS - у меня сложилось мнение что самостоятельно XML гипертекстом быть не умеет, да и 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.96, иначе на нормальную поддержку кириллицы без дополнительных телодвижений не надейтесь.

В дистрибутиве PHP4 должна быть папка /extensions c находящимися там модулями расширения, некоторые из которых мы и активизируем. Для этого раскройте в редакторе файл php.ini. Найдите в нем следующий раздел:

;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;

и снимите знак комментария ";" с модулей php_domxml, php_iconv и php_xslt.

Вообще-то можно активировать только последний, но некоторые часто всречающиеся в сети скрипты используют первый модуль. Эти модули связывают установленный до этого Sablotron и Expat c PHP. Чтобы модули успешно нашлись после перезагрузки web-сервера, нужно изменить еще одну строчку в разделе:

;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;

Установите следующий параметр:

extension_dir = ./extensions/

Предполагается что операционная система способна самостоятельно найти PHP, поэтому добавте его в пути, если этого еще не сделано. Теперь можно сохранить ini-файл в нужном месте. Никаких изменений в работе любимого сервера Apache вы заметить не должны до обновления окошка браузера.

Теперь поговорим собственно о способе, которым можно заставить браузер Opera 6 или Netscape Navigator 4.7 работать с XML-сайтом.

Для начала зайдите на сайт , и возьмите c него самую свежую версию этого сборника. В этом архиве должно лежать несколько вложенных архивов. Найдите тот, который называется class_xslt.tgz (не бойтесь, даже WinRAR их открывает). Теперь у вас есть скрипт, который пригодится нам в дальнейшем(в архиве есть все необходимые пояснения по использованию; нужно лишь немного понимать английский язык).

Теперь, если вы все правильно сделали, можно приступать непосредственно к переводу сайта с PHP на рельсы XML/XSLT. Весь инструментарий, который имеется уже в нашем распоряжении позволит сделать это безболезненно, растянув по времени на столько, на сколько это будет необходимо.

Начнем по шагам. У меня был сайт, построенный (частично он еще таковым и остался) из отдельных кусочков ("голова", "хвост", все как обычно). В отдельном файле находились функции "головы" и "хвоста". Каждый файл документа находился отдельно и выглядел примерно так:

<?
require("lib.inc.php");
php_header();
?>

<h1>Приветствие</h1>

<p>Здарова, чувак!</p>

<?
php_footer();
?>

Чтобы адаптировать такой файл под новые требования воспользуйтесь скриптом, который мы с вами уже скачали.

Разместите class_xslt.php в корневой папке вашего сайта. Теперь необходимо преобразовать имеющиеся в вашем "lib.inc.php" (у вас он наверняка по другому называется) "голову" и "хвост" в один шаблон. Это делается очень просто, но поскольку среди вас делать это мало кто умеет, то я вам немножко помогу:


<?xml version='1.0' encoding='windows-1251'?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">

<xsl:output method="xhtml" encoding="windows-1251"/>

<xsl:template match="/ARTICLE">
<html>
<head>
  <title>Заголовок сайта</title>
</head>

<body>
  <!--ТУТ ДОЛЖНА БЫТЬ "ГОЛОВА"-->
  <xsl:apply-templates/>
  <!--А ТУТ "ХВОСТ"-->
</body>
</html>
</xsl:template>

<!--А ЭТО САМОЕ ИНТЕРЕСНОЕ - СТИЛИ XSLT-->
<xsl:template match="TITLE">
  <h1><xsl:apply-templates/></h1>
</xsl:template>

<xsl:template match="PARA">
  <p><xsl:apply-templates/></p>
</xsl:template>

</xsl:stylesheet>

Теперь наш первый файл стилей XSLT полностью готов к работе. Как вы заметили описанные здесь вставки избавляют от постоянной головной боли при совместной работе и поддержке сайта жестко регламинтируя структуру документа.

На основе нашего примера напишем документ XML. Воспользуемся строками, которые несут смысловую нагрузку:


<h1>Приветствие</h1>

<p>Здарова, чувак!</p>

Чтобы она у нас вышла именно такой заглянем в XSLT и поймем что нужно немного изменить эти строчки при переносе их в XML-документ:

<?xml version='1.0' encoding='windows-1251'?>

<ARTICLE>
<TITLE>Приветствие</TITLE>
<PARA>Здарова, чувак!</PARA>
</ARTICLE>

Теперь, когда почти все составные части будущей странички готовы можно немного побаловаться, и посмотреть как же все-таки будет выглядеть XML на практике. Для этого достаточно в документ XML перед тегом

добавить следующую строчку:
<?xml-stylesheet type="text/xsl" href="article.xsl"?>

, где article.xsl - написанный нами стиль

Если такой документ просмотреть в современном браузере, совместимом с XML и XSLT, то вы увидите все именно так как должны. Однако, если владелец "отсталого" браузера захочет открыть страничку с вашего сервера, то он в лучшем случае ничего не увидит.

Чтобы особо не переживая дожить до лучших времен будем парсить XML-файлы через уже настроенное нами расширение PHP. С помощью Sablotron(это xslt-парсер;Expat - соответственно xml-парсер) все браузеры, обращающиеся к нашему серверу будут получать чистый код HTML. В результате такой сайт будет работать даже на самых "отсталых" браузерах.

Итак, заменяем старый код странички welcome.php:

<?php

include_once("class_xslt.php");
$xslt=new Xslt();
$xslt->setXml("welcome.xml"); // or setXmlString($xml)
$xslt->setXsl("article.xsl"); // or setXslString($xsl)
if($xslt->transform()) {
  $ret=$xslt->getOutput();
  echo $ret;
} else {
  print("Error:".$xslt->getError());
}

?>

Вот и все. При желании можно получить сайт внешне ничем не отличающийся от существовавшего до того.

Несмотря на явный прогресс XML-технологий их использует небольшой процент сайтмейкеров, и еще меньшее число осуществляет поддержку среди бесплатных хостингов. Единственных хостинг, который мне удалось найти http://www.hut.ru/. Владельцы сайтов на этом хостинге спокойно могут сливать подобные написанным скрипты - Саблотрон там работает нормально(сам просил исправить!).

Надеюсь описанный здесь метод автоматизации будет вами успешно использоваться. До новых встреч на моем сайте.

 
24.12.2003
Версия для печати Версия для печати Запомнить ссылку Запомнить ссылку
Ваша оценка:  1   2   3   4   5     

 О проектеПерепечаткаАвторамПартнерыО нас пишут
Наверх
©2003—2007. GETINFO.RU. ВСЕ ПРАВА ЗАЩИЩЕНЫ.