Разметка документов

Разметка документов

Идею разметки документов будет проще всего проиллюстрировать на примере. Представим себе следующий рекламный текст:

Предлагаем Вашему вниманию новый 3-х камерный холодильник "Горск" объемом 250 л. и стоимостью всего 4500 рублей! Новый дизайн, быстрое охлаждение и низкое энергопотребление, 3-х годовая гарантия на все узлы и агрегаты, а также бесплатная доставка по городу! Заказывайте прямо сейчас по телефону 091-12-15. Фирма "Горск-Холод".

Размещая это объявление где-нибудь на Web-сайте, нам может понадобиться выделить некоторые части, чтобы получить представление вида:

Предлагаем Вашему вниманию новый 3-х камерный холодильник "Горск" объемом 250 л. и стоимостью всего 4500 рублей! Новый дизайн, быстрое охлаждение и низкое энергопотребление, 3-х годовая гарантия на все узлы и агрегаты, а также бесплатная доставка по городу! Заказывайте прямо сейчас по телефону 091-12-15.

Фирма "Горск-Холод".

Идея разметки состоит в том, чтобы использовать для выделения частей документа простые текстовые метки, называемые тегами. Теги разграничивают документ, выделяя в нем части и присваивая им некоторые особенности (например, указывая на то, что часть текста надо подчеркнуть).

Простым примером языка разметки является уже, скорее всего, знакомый читателю HTML — язык разметки гипертекста. В HTML задан набор тегов для визуального форматирования документа, например:

? <P>содержимое</P> — выделяет содержимое, как параграф;

? <BR> — задает перенос строки;

? <B>содержимое</B> — выделяет содержимое полужирным шрифтом;

? <I>содержимое</I> — выделяет содержимое курсивом;

? <U>содержимое</U> — подчеркивает содержимое.

Теги могут быть парными и одиночными. Парные теги (например, <B>содержимое</B>) выделяют часть документа, одиночные (например, <BR>) задают некую инструкцию.

В предыдущем примере текст может быть размечен следующим образом.

Листинг 1.1. HTML-разметка рекламного объявления

<Р>Предлагаем Вашему вниманию новый 3-х камерный холодильник <В>"Горск"</В> объемом 250 л. и стоимостью всего <В>4500</В> рублей! Новый дизайн, <I>быстрое охлаждение</I> и <I>низкое энергопотребление</I>, <В>3-х годовая гарантия</В> на все узлы и агрегаты, а также <I>бесплатная доставка по городу</I>! Заказывайте прямо сейчас по телефону <U>091-12- 15<U>. <BR><BR>Фирма "Горск-Холод".</Р>

Теперь этот документ несет в себе не только данные о коммерческом предложении, но и примитивную информацию о том, как он должен выглядеть визуально. Это делает документ более понятным, но понятным для человека, а не для машины. Словосочетания "быстрое охлаждение" и "бесплатная доставка по городу", выделенные в тексте одинаковыми тегами, на самом деле описывают совершенно разные вещи. Первое — свойство продукта, второе — сервис, предоставляемый фирмой. Иначе говоря, одни и те же теги в этом документе имеют разный смысл — один и тот же синтаксис выражает разную семантику.

Для решения этой проблемы несоответствия, XML предлагает очень простой и весьма эффективный способ — расширить множество используемых тегов так, чтобы они могли полностью выразить всю семантику, которой только может обладать документ. Например.

Листинг 1.2 XML-разметка рекламного объявления

<advert>

 Предлагаем Вашему вниманию новый <room>3</room>-x камерный

 <product>холодильник</product> <product-title>"Горск"</product-title>

 объемом <volume>250 л.</volume> и стоимостью всего <price>4500</price>

 рублей!

 Новый дизайн, <feature>быстрое охлаждение</feature> и

 <feature>низкое энергопотребление</feature>,

 <guarantee>3-x годовая гарантия</guarantee> на все узлы и агрегаты, а

 также <service>бесплатная доставка по городу</service>!

 <order>

  Заказывайте прямо сейчас по телефону <phone>0-91-12-15</phone>.

 </order>

 <company>Фирма "Горск-Холод".</company>

</advert>

В таком виде этот документ содержит гораздо более подробную информацию о своей структуре: внутри тега <product-title> указано наименование продукта, внутри тега <price> — цена, внутри тега <service> — какой сервис предоставляет фирма и так далее. Такой текст уже можно обработать программно. Если понадобится составить таблицу, содержащую названия холодильников, объем, цену, название фирмы и телефон, все, что потребуется сделать — это получить содержимое тегов <product-title>, <volume>, <price>, <company> и <phone>. При этом совершенно не теряется возможность визуального представления документа: нужно лишь определить, как будет выглядеть содержимое того или иного тега.

Таким образом, просто расширив множество тегов, мы убили сразу двух зайцев.

? Явным образом выделили в документе структуру данных. Это делает возможной дальнейшую машинную обработку документа, который при этом все еще остается понятным человеку.

? Отделили данные, содержащиеся в документе, от того, каким образом документ будет представлен визуально. Это дает широкие возможности для публикации документов на различных носителях — на бумаге, в Интернет, на мобильных устройствах.

В этих двух положениях и есть смысл XML (англ. extensible Mark-up Language, расширяемый язык разметки) — отделять данные от представления и создавать в текстовом виде документы со структурой, указанной явным образом.

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