Холод'.</Р>
Теперь этот документ несет в себе не только данные о коммерческом предложении, но и примитивную информацию о том, как он должен выглядеть визуально. Это делает документ более понятным, но понятным для человека, а не для машины. Словосочетания 'быстрое охлаждение' и 'бесплатная доставка по городу', выделенные в тексте одинаковыми тегами, на самом деле описывают совершенно разные вещи. Первое — свойство продукта, второе — сервис, предоставляемый фирмой. Иначе говоря, одни и те же теги в этом документе имеют разный смысл — один и тот же синтаксис выражает разную семантику.
Для решения этой проблемы несоответствия, 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 позволяет создавать и использовать любую разметку, которая только может понадобиться для подробного описания данных.
XML снаружи и изнутри
Несомненным достоинством XML является также и то, что это чрезвычайно простой язык. Основных конструкций в XML очень мало, но, несмотря на это, с их помощью можно создавать разметку документов практически любой сложности.
Для того чтобы познакомиться с устройством XML-документов, рассмотрим простой пример:
<?xml version='1.0'?>
<advert>
<product title='Слон'>
Покупайте наших слонов!
</product>
</advert>
Первая строка документа определяет его как XML-документ, построенный в соответствии с первой версией языка. Следующая строка содержит открывающий тег <advert>
. Далее находится открывающий тег <product>
, который имеет атрибут title
со значением 'Слон'
. Четвертая строка в документе — рекламный лозунг 'Покупайте наших слонов!'
. Затем следует закрывающий тег </product>
и, наконец, закрывающий тег </advert>
.
XML использует ту же теговую разметку, что и HTML, но при этом теги в XML не просто ограничивают часть текста документа — они выделяют в документе один advert
:
<advert>
<product title='Слон'>
Покупайте наших слонов!
</product>
</advert>
и product
:
<product title='Слон'>
Покупайте наших слонов!
</product>
Как видно, элемент product
включен в элемент advert
. Точно так же, как в HTML одни теги могли находиться внутри других тегов, в XML элементы могут содержать другие элементы, а также иметь атрибуты и содержать текст. В следующем разделе мы подробно рассмотрим основные конструкции XML, которые понадобятся нам в дальнейшем.
Конструкции XML
Помимо элементов, атрибутов и текста, документы могут также содержать другие конструкции, такие как комментарии, инструкции по обработке и секции символьных данных. Эти базовые составляющие используются для того, чтобы гибко, но в четком соответствии со стандартом, размечать документы любой сложности. Далее мы подробно разберем каждую из основных конструкций XML-документа.