Структура XML-документа

XML-документ состоит из деклараций, элементов, комментариев, специальных символов и директив.

Элементы и атрибуты

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

Элемент языка XML состоит из трех частей: начального тега, содержимого и конечного тега. Тег – это текст, заключенный в угловые скобки «<» и «>». Конечный тег имеет то же имя, что начальный тег, но начинается с косой черты "/". Пример XML-элемента:

<author>Евгений Федоров</author>

Имена элементов зависят от регистра, т. е. <author>, <Author> и <AUTHOR> – это имена различных элементов. Наличие закрывающего тега всегда обязательно. Если тег является пустым, т. е. не имеет содержимого и закрывающего тега, то он имеет специальную форму:

<элемент/>

Любой элемент может иметь атрибуты, содержащие дополнительную информацию об элементе. Атрибуты всегда включаются в начальный тег элемента и имеют вид:

имя_атрибута="значение_атрибута"

Аттрибут обязан иметь значение, которое всегда должно быть заключено в одинарные или двойные кавычки. Имена атрибутов также зависят от регистра. Пример элемента, имеющего атрибут:

<author country="UKR">Евгений Федоров</author>

Элементы должны либо следовать друг за другом, либо быть вложены один в другой:

<books>

<book isbn="9005858631">

<title>Системы искусственного интеллекта</title>

<author>Федоров, Евгений</author>

<present/>

</book>

<book isbn="5732238049">

<title>Введение в Semantic Web</title>

<author>Бабаков, Роман</author>

<present/>

</book>

</books>

Здесь элемент books (книги) содержит два вложенных элемента book (книга), которые, в свою очередь, имеют атрибут isbn и содержат три последовательных элемента: title (название), author (автор) и тэг present (есть в наличии), причем данный тэг пустой, поскольку в данном случае играет роль логического признака.

Пролог и директивы

Любой XML-документ состоит из пролога и корневого элемента, например:

<?xml version="1.0"?>

<books>

<book isbn="0345374827">

<title>Марш одиноких</title>

<author>Довлатов, Сергей</author>

<present/> </book>

</books>

В этом примере пролог сводится к единственной директиве (первая строка документа), указывающей версию XML. За ней следует XML-элемент с уникальным именем, который содержит в себе все остальные элементы и называется корневым. Директива (англ. «processing instruction») – это выражение, заключенное в специальные теги "<?" и "?>", которое содержит указания программе, обрабатывающей XML-документ.

Стандарт XML резервирует только одну директиву <?xml version="1.0"?>, указывающую на версию языка XML, которой соответствует данный документ (второй версии языка XML пока нет). В действительности, эта директива несколько богаче и в самом общем виде выглядит так:

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>

Здесь атрибут encoding задает кодировку символов документа. По умолчанию считается, что XML-документы должны создаваться в формате UTF-8 или UTF-16. Если же используется какая-либо другая кодировка символов, то ее название должно быть указано в данном атрибуте, как показано в примере. Атрибут standalone говорит о том, содержит ли данный документ внешние разделы. Значение yes означает, что таких разделов нет, значение no – что они есть.

В общем случае, пролог может содержать также декларации типа документа. Для объявления типа документа существует специальная инструкция !DOCTYPE. Она позволяет задать при помощи языка DTD, какие в документ входят элементы, каковы их атрибуты, какие сущности могут использоваться и кое-что ещё. Подробнее см. стандарты языка XML.

Комментарии

XML-документы могут содержать комментарии, которые игнорируются приложением, обрабатывающим документ. Комментарии строятся по тем же правилам, что и в HTML:

- комментарий начинается с последовательности символов «<!--»;

- комментарий завершается символами «-->»;

- внутри комментария не допускается использование последовательности символов «--».

Пример комментариев:

<!-- это комментарий -->

<!-- а вот еще комментарий,

занимающий более одной строки -->

Имена и данные

Все имена элементов, атрибутов и разделов должны начинаться с буквы Unicode и состоять из букв, цифр, символов точки «.», подчеркивания «_» и дефиса «-». Единственное ограничение состоит в том, что они не должны начинаться с комбинации букв xml в любом регистре; подобные имена зарезервированы для будущих расширений языка. Существенно, что стандарт допускает использование в именах не только английских букв, но и любых других, хотя существующие XML-процессоры часто ограничены теми системами кодировок, которые в них заложены создателями. Поэтому в именах рекомендуется использовать только латинские буквы.

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

Специальные символы

Ряд символов в языке XML зарезервирован и должен представляться специальным образом:

левая угловая скобка ("<") &lt;
правая угловая скобка (">") &gt;
амперсант ("&") &amp;
двойная кавычка (") в значениях атрибутов &quot;
одинарная кавычка (') в значениях атрибутов &apos;

При желании можно пользоваться числовой кодировкой символов в стандарте Unicode. При этом символ может быть задан своим десятичным кодом (&#код;) или шестнадцатеричным кодом (&#xкод;). Например&#169; представляет символ авторского права ©, а &#x410; – русскую букву А. В использовании подобных конструкций язык XML гораздо богаче, чем HTML, поскольку позволяет осуществлять подстановку в текст документов любых символьных выражений.

Секции CDATA

Еще одним способом включения в содержимое XML-элементов недопустимых символов является использование т. н. секций CDATA (сокр. от Character DATA, т. е. символьные данные). Допустим, что мы хотим сделать содержимым элемента layout фрагмент HTML-текста, например:

<layout>

<H1>Заголовок</H1>

</layout>

Подобная конструкция неверна, т. к. HTML-тег H1 будет в данном случае воспринят как тег XML. Для того, чтобы все содержимое элемента layout воспринималось как данные, мы должны заключить его в секцию CDATA:

<layout>

<![CDATA[<H1>Заголовок</H1>]]>

</layout>

Как мы видим из этого примера, секция CDATA заключается в ограничители <![CDATA[ и ]]>. Все внутри этой секции считается символьными данными. Это приводит к тому, что секции CDATA не могут вкладываться друг в друга.

Лекция 5

Наши рекомендации