X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Построение сайтов с помощью XML + XSLT, Построение первого сайта на основе XSLT\XML
ThanDdoR
ThanDdoR
Topic Starter сообщение 16.2.2009, 18:00; Ответить: ThanDdoR
Сообщение #1


Задача сделать сайт эффективным обычно заканчивается его автоматизацией. Для этого 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 сайта Тут. Саблотрон желательно версии не ниже 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. Весь инструментарий, который имеется уже в нашем распоряжении позволит сделать это безболезненно, растянув по времени на столько, на сколько это будет необходимо.

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

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

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

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

<?
php_footer();
?>[/php]

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

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

[xml]<?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>[/xml]

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

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

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

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



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

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

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

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

[xml]<?xml-stylesheet type="text/xsl" href="article.xsl"?>[/xml]

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

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

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

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

[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());
}

?>[/php]

Вот пожалуй и всё.
При желании можно получить сайт, внешне ничем не отличающийся от существовавшего до этого.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 16.2.2009, 22:26; Ответить: ZiTosS
Сообщение #2


Молодца, хоть и статья не для начинающих, но написана грамотно ;)
Только вроде написано создание сайта XML/XSLT, а причём тут тогда PHP? Парсер?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ThanDdoR
ThanDdoR
Topic Starter сообщение 17.2.2009, 0:11; Ответить: ThanDdoR
Сообщение #3


да, парсер на PHP ;)
Такой как я себе ещё давно хотел)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
RDF_mw
RDF_mw
сообщение 21.7.2009, 1:23; Ответить: RDF_mw
Сообщение #4


Спасибо, попробую построить сайт на основе XML+XSLT
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Деkа
Деkа
сообщение 18.11.2009, 12:52; Ответить: Деkа
Сообщение #5


полезная темка, спасибоньки :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
I_Need_Money
I_Need_Money
сообщение 1.11.2010, 14:17; Ответить: I_Need_Money
Сообщение #6


Надо будит почитаь на досуге! Спасибо!

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Будет ли склейка сайтов если старый телефон перенести на новый сайт?
2 noviktamw 577 Вчера, 23:05
автор: Liudmila
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыСтатейное продвижение ваших сайтов по качественной базе с тИЦ
тИЦ 10+
237 Intersect 258089 24.4.2024, 12:13
автор: Intersect
Открытая тема (нет новых ответов) Как вы бросили работу и перешли на заработок с сайтов?
20 uahomka 3483 23.4.2024, 11:54
автор: Skyworker
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВечные ссылки с трастовых сайтов
54 1informer 22885 20.4.2024, 18:39
автор: 1informer
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыПродам базу сайтов Wordpress в 16 миллионов доменов! Свежая сборка.
19 Boymaster 11450 20.4.2024, 0:01
автор: Boymaster


 



RSS Текстовая версия Сейчас: 26.4.2024, 2:56
Дизайн