Сначала, хотелось бы немного рассказать о том, как я пришел к этой идеи. Однажды я переделывал дизайн некого сайта, состоящего где-то из 20 страниц. Я нарисовал макет, по нему сделал шаблон для страниц (все страницы сайта имели одинаковую структуру, отличались только содержанием). Затем, где-то за неделю я перетащил (с небольшой технической доработкой) содержание старого сайта в новый дизайн. Потом оказалось, что дизайн сайта несовершенный и требуется доработать некоторые элементы дизайна. Причем хотелось, чтобы изменение дизайна можно было сразу пронаблюдать на всех страницах сайта. В любом случае, для изменения некоторой детали в дизайне приходилось править все 20 страниц. Чтобы упростить себе жизнь я решил разбить каждую страницу на три файла (заголовок, меню, содержание) и разместил эти файлы в соответствующих папках. Эти файлы содержали информацию, которая отличается для разных страниц. Т.е. получилось 20 файлов с заголовками страниц, 20 – с меню и 20 – с содержанием. Еще получилось несколько файлов, содержащих общую для всех страниц информацию (например, оформление нижней части страницы). Теперь, если мне надо было поменять что-то в общей для всех страниц части, я делал изменение в одном файле и запускал командный файл, который склеивал по частям мои страницы. Таким образом, довольно быстро можно было менять дизайн сайта.

Такой способ меня, в конечном счете, не устроил, и я вспомнил про XML/XSLT. Использование XML позволяет отделить содержание документа (страницы) от его представления. Я просмотрел страницы сайта и прикинул, из каких элементов (говоря языком XML) они состоят, создал файл .XSD, который содержал описание структуры моих документов на языке XML Schema Definition. Переделал все HTML-страницы в XML-страницы, в соответствии с этой схемой. Далее создал файл .XSL, описывающий XSLT (XSL Transformations) для преобразования XML документов в HTML документы. Именно в файле .XSL описывается дизайн всего сайта.

В данной статье я не хочу приводить простых примеров, которые показывают как из XML документа, содержащего элементы “автор” и “книга” с атрибутом “название”, получить несколько вариантов красивых HTML страниц для книжного каталога. Также я не хочу приводить описания языков XML, XSLT и т.д. Я хочу показать, как использовать XML для создания сайтов. Когда я работал над переводом сайта с HTML на XML, у меня возникали некоторые проблемы, вопросы, вообще ставилась под сомнение идея создания относительно сложного сайта в XML. Труднее всего было создать более-менее универсальную схему XML документов. Поэтому я хочу поделиться опытом и дать отправную точку тем, кому это интересно.

После создания сайта в XML я ощутил, что достаточно просто кардинально менять дизайн всего сайта целиком. Также я отметил, что один раз создав XML схему, ее довольно легко адаптировать для создания последующих сайтов. По моему мнению, применяя XML, разработка и поддержка сайта ускоряется и уменьшается объем рутинной работы. Также, применение XML, позволяет строго поддерживать стиль ваше сайта. Хотя у этого подхода, наверное, есть и отрицательные стороны, но я не хотел бы их сейчас касаться.

Браузер Microsoft Internet Explorer 6 и выше может отображать XML документы и связанные с ними таблицы стилей, однако большинство браузеров не может отображать XML. Поэтому я преобразую свои XML документы в HTML и затем выкладываю их на сайт.

Вот часть моего сайта в XML виде:
(Если ваш браузер нормально отображает эти XML страницы, то посмотрите их исходный текст)

bf3.xml
ebay.xml
index.xml
index_en.xml
oliva.xml
oliva_en.xml
softirq.xml

А это XML схема и файл XSLT:

ci.xsl
ci.xsd


Для преобразования XML в HTML я использую Command Line Transformation Utility (msxsl.exe).

Так выглядит командный файл для преобразования всех XML документов в текущей директории в HTML:

dir /b *.xml > list.txt
FOR /F "tokens=1 delims=." %%i in (list.txt) do msxsl %%i.xml ci.xsl -o %%i.htm –xw

Дата последней модификации: 23-декабря-2003