Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #53, АПРЕЛЬ 2005 г.

Копилка технологий

Степан Ильин aka Step

Спецвыпуск: Хакер, номер #053, стр. 053-084-1


(step@real.xakep.ru)

Язык XML в разрезе

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

Полярность принципов

Возможно, кто-то заметит: "XML - это продвинутая версия HTML, верно?". Не совсем так. Это заблуждение очень распространенное, и виновато в его возникновении внешнее сходство XML- и HTML-документов. Обе технологии описаны с помощью обобщенного языка разметки SGML (Standart Generalised Markup Language), благодаря чему имеют схожий синтаксис, основанный на тегах (словах, заключенные в < и >) и атрибутах имя="значение". Еще одно сходство технологий - их активное использование в интернете, что еще сильнее вводит в заблуждение неподготовленного пользователя. Но! XML и HTML — это все-таки совершенно разные технологии.

Вспомним HTML — язык гипертекстовой разметки. Его основная задача состоит в описании внешнего вида web-страницы (расположение таблиц, настройки стилей, шрифта и т.п.), которое в соответствии со спецификацией стандарта обрабатывается браузером и выводится пользователю на экран. Расширенный язык разметки XML (eXtensible Markup Language) – напротив, не имеет какого-либо отношения к внешнему оформлению данных, зато напрямую определяет их структуру. В то же время XML требует, чтобы создание документа производилось строго в соответствии с описанной им структурой. Важно, что визуализация данных возложена на плечи сторонних средств, которые лишь обрабатывают XML-файл. Однажды созданный XML-документ может быть представлен в совершенно разном виде. Для примера возьмем наш журнал и опишем его в XML - зададим его структуру, содержащую название каждой статьи, вступление, непосредственно ее текст. Размеченный таким образом XML-документ может быть представлен самыми разными способами. Причем XML в этом случае выступает в качестве контейнера, хранящего строго структурированные данные, в то время как сам вывод информации осуществляется, например, с помощью того же HTML.

Подобный подход имеет массу достоинств. Например, если потребуется составить содержание номера, то из XML следует взять только заголовки. Верстаем журнал - придется выводить абсолютно всю информацию.

В конце концов, HTML – это независимый и полностью самостоятельный язык, а XML часто рассматривают как комплекс технологий. Другими словами, под аббревиатурой XML подразумевается не только расширенный язык разметки, но еще и десяток родственных технологий, таких как XHTML, XLS и т.д.

Вскрытие покажет

Существенные отличия между технологиями становятся еще более очевидными после тщательного осмотра. Используемые для составления HTML-документов теги и сама структура HTML предопределены, то есть программист во время составления HTML-документа может использовать только те теги, которые предусмотрены стандартом - например, <p>, <h1> и т.д.

В расширенном языке разметки используется совершенно другой подход. Программист XML может самостоятельно определять теги и значения, а затем с их помощью обозначать общую структуру документа. Итак, тег <p> в XML совершенно не обозначает параграф, как это было бы в HTML. В зависимости от выбора программиста это может быть и какой-то параметр (parameter) или, например, счетчик страниц (page). Естественно, такой подход предоставляет практически неограниченные возможности для описания структуры данных. Приведу несколько примеров, чтобы точнее изложить свои мысли. Для начала пример кода HTML:

Содержание  Вперед на стр. 053-084-2