НЕ ТАК СТРАШЕН XML...
:::::::::::::::::::::::::::::::::::::::::
Век живи - век учись, и через сто лет
станешь дряхлым и мудрым.
:::::::::::::::::::::::::::::::::::::::::
- введение
- Зачем веб-разработчикам XML-технологии
- Взаимодействие веб-программиста и дизайнера
- XML + XSLT + XSLT-процессор = HTML
- IE 5 и серверное преобразование
- заключение
Все мы помним это чудное мгновение, когда, отбив на клаве свои первые html-теги и узрев в броузере СВОЮ первую страничку, мы почувствовали себя настоящими web-программерами и web-дизайнерами! Позже в страничке появлялось содержание, мы росли с нашим первым (..вторым, третьим..и т.д.) сайтом, узнавая все больше и больше об Интернете, о возможностях html, по ходу дела осваивая графические редакторы... доросли до js, апплетов и таблиц стилей... Однако новая информация о новых возможностях продолжала прибывать сумашедшими темпами. Одной такой волной принесло (на мою-нашу) голову загадочную аббревиатуру - XML. Когда эта информация пришла ко мне, а я с нею же пришла к своим знакомым программистам, те первым делом спросили - а ты чем собственно занимаешься? В честь чего собственно такие вопросы? Однако информацию не зажали. Результат - эта статья, которая на самом деле есть лекция по основам (вернее, первым шагам) в XML.
В первую очередь следует заметить, что здесь не будет рассматриваться суперзадача в электронном бизнесе (пока...), тем более, что в процессе разработки такого проекта возникает большое количество параллельных-последовательных проблем, и совершенное знание XML не гарантирует создания безупречного проекта. Не будут описаны правильно сформированные и состоятельные XML-документы, DTD и XML Schema, XML-сущности и многе другое, о чем обычно пишут в книгах по XML и что любой желающий может свободно загрузить с сайта W3C. Я собираюсь написать всего лишь о применении XML-технологий к Web, и буду рассказывать лишь о тех возможностях, которые XML открывает перед веб-разработчиками. Поэтому то, что в работе не нужно, останется за кадром. XML-технологии не ограничиваются собственно языком XML - это также DOM, SAX, XSL, XSLT, XSD и еще целое множество очень интересных аббревиатур.
Первое, что я бы хотел сказать - это то, что XML не имеет ничего общего с HTML, кроме синтаксиса и общих предков, и говорить о переходе с HTML на XML абсолютно бессмысленно.На XML переходить надо, но не с HTML. Именно о том, где и как может сейчас применяться XML, и пойдет речь в данной статье.
Сегодня область применения XML в Web ограничена веб-сервером. Основная причина - отсутствие у посетителей броузеров с поддержкой XML. То есть броузер по-прежнему должен получать HTML, а XML используется только для внутренних нужд сервера:
- как средство хранения документов на сервере (об отличиях между хранением документов и данных я расскажу позже);
- как средство обмена данными и документами с другими программами и людьми;
- как средство разделения труда между людьми, в той или иной степени участвующими в разработке веб-сайта
Серверные скрипты будут оперировать исключительно XML-документами, и вся забота на перевод этих документов в HTML - в формат, понятный броузеру, ложится на плечи веб-дизайнера.
Собственно, в этом нет ничего плохого: каждый должен заниматься своим делом. Дизайнер не должен вникать в алгоритм работы скрипта, а программисту незачем разбираться в нагромождении таблиц, картинок и распорок, сооруженном дизайнером.
Программист генерирует XML-документ, содержащий данные для отображения на веб-странице (например, результаты SQL-запроса), и затем запускает XSLT-процессор (см. ниже), который на основе XML и таблицы стилей, созданной дизайнером, генерирует HTML.
Роль дизайнера в этом процессе - описание преобразования XML-документа в HTML на языке XSLT (XML Stylesheet Language for Transformations). Проще говоря, дизайнер создает для XML документа таблицу стилей - файл *.XSL. 3. XML + XSLT + XSLT-процессор = HTML
Интерпретирует таблицу стилей XSLT и осуществляет преобразование XSLT-процессор - программа или библиотека, устанавливаемая на сервере программистом/администратором. На вход ей передаются в простейшем случае 2 файла: *.xml и *.xsl, а на выходе получается html.
Ну и пример, чтоб не было скучно:
Файл test1.xml:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="./test1.xsl"?>
<html><sql>
<row>
<IP>aaa</IP>
<when>bbb</when>
<down>ccc</down>
</row>
<row>
<IP>aaa1</IP>
<when>bbb1</when>
<down>ccc1</down>
</row>
</sql></html>
Файл test1.xsl:
<?xml version="1.0" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<head>
<title>XML test 1</title>
</head>
<body>
<xsl:apply-templates select="//sql"/>
</body>
</html>
</xsl:template>
<xsl:template match="sql">
<table border="1">
<xsl:for-each select="row">
<tr>
<xsl:for-each select="*">
<td><xsl:value-of select="."/></td>
</xsl:for-each>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
Помещаем эти два файла в один каталог. Теперь осталось найти только XSLT-процессор. Мы воспользуемся MSXML - процессором от Microsoft, который поставляется с IE5 и, как следствие, есть на каждой машине с Windows.
Итак, загружаем test1.xml в IE5. Вы увидите простую HTML-таблицу:
<html>
<head>
<title>XML test 1</title>
</head>
<body>
<table border="1">
<tr>
<td>aaa</td>
<td>bbb</td>
<td>ccc</td>
</tr>
<tr>
<td>aaa1</td>
<td>bbb1</td>
<td>ccc1</td>
</tr>
</table>
</body>
</html>
Эта таблица и есть HTML, получившийся в результате применения к test1.xml таблицы стилей test1.xsl. В примере операторами XSLT
XSL изначально задумывался логическим продолжением CSS. Оба стандарта были разработаны для отделения представления (форматирования, оформления) документа от его структуры (иерархического разделения документа на абзацы, заголовки, таблицы, разделы). Цель - улучшение разделения труда между контент-провайдером (тем, кто предоставляет данные для отображения на странице) и дизайнером (тем, кто определяет, как эти данные должны отображаться).
CSS позволял хранить отдельно лишь атрибуты тегов. Вследствие того, что таблица в HTML является не средством структурирования, а средством форматирования, большинство таблиц появляются в коде благодаря дизайнеру, а не контент-провайдеру, не говоря уже об изображениях. В результате затрудняется внесение изменений в контент после этапа дизайна, причем трудности в случае изменения _структуры_ контента возникают даже при хранении его в БД.
XSL же позволяет произвольно перестраивать дерево XML/HTML. Таблицей стилей можно выполнять фильтрацию и сортировку данных, добавлять, изменять и удалять теги и атрибуты, превращать данные и атрибуты друг в друга, а также произвольным образом перемещать теги, данные и атрибуты по дереву.
В результате из XSL получился универсальный язык трансформации XML-документов XSLT, который используется не только в Web, но и везде, где требуется преобразования форматов данных.
Поэкспериментировав с пятым эксплорером в предыдущей главе, вы убедились, что он может отображать XML. И, возможно, у Вас возник резонный вопрос: "А зачем нам преобразование на сервере, если IE умеет работать с XML напрямую? "
Да, действительно, IE 5 умеет работать с XML/XSLT, и, таким образом, является кандидатом в XML-броузеры. Если вы обратите внимание на тип XSL-документа, то увидите там две буквы "WD", что означает "working draft". То есть IE пытается соответствовать лишь черновой версии спецификации XSLT, которай давно устарела.
Проблема заключается в XSLT-процессоре, который находится в файле msxml.dll. После обновления этой DLL до MSXML 3 или 4 все становится на свои места, и можно смело писать ссылку на правильный стандарт.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">,
и вообще все чудесно.
- Требовать от всех посетителей обновления MSXML можно лишь в некоторых случаях разработки для корпоративного интранета;
- Остаются еще IE4, Opera, враг всех веб-мастеров Нетскейп и WML-броузеры сотовых телефонов.
Заключение
- Предвестники XML/XSLT (об HTML-шаблонах);
- Использование XSLT-процессоров в серверных скриптах (на примере Sablotron или LibXSLT или MSXML);
- Что такое документы и зачем их на сервере хранить;
- Туториалы по XSLT;
- О структуре и типах веб-контента. (Взгляд на документы, мультимедиа- и реляционные данные со стороны XML);
- о синтаксисе XML (он очень прост, если отбросить все ненужное)- ... (хочется писать о C, Perl и UML, но давайте сначала остановимся на XML);
читайте продолжение - CGI: от printf("") до XML
Андрей Мельников © 2001
ICQ #29804514
Внимание! Вся информация, размещенная на этом сайте в разделах "статьи" или "рассылки", является собственностью NunDesign. О полном или частичном использовании материалов вы можете узнать на странице "авторское право".
