Теоретический материал
Структура XML–документа
XML-документ состоит из деклараций, элементов, комментариев, специальных символов и директив.
XML – это теговый язык разметки документов. Иными словами, любой документ на языке XML представляет собой набор элементов, причем начало и конец каждого элемента обозначается специальными пометками, называемыми тегами.
Элемент состоит из трех частей: начального тега, содержимого и конечного тега. Тег – это текст, заключенный в угловые скобки "<" и ">". Конечный тег имеет то же имя, что начальный тег, но начинается с косой черты "/". Пример XML–элемента:
<buyer>Сергей Довлатов</buyer>
Имена элементов зависят от регистра, т. е. <author>, <Author> и <AUTHOR> – это имена различных элементов. Наличие закрывающего тега всегда обязательно. Если тег является пустым, т. е. не имеет содержимого и закрывающего тега, то он имеет специальную форму:
<tag/>
Любой элемент может иметь атрибуты, содержащие дополнительную информацию об элементе. Атрибуты всегда включаются в начальный тег элемента и имеют вид:
имя_атрибута="значение_атрибута"
Атрибут обязан иметь значение, которое всегда должно быть заключено в одинарные или двойные кавычки. Имена атрибутов также зависят от регистра. Пример элемента, имеющего атрибут:
<employee post="Продавец">Сергей Довлатов</employee >
Элементы должны либо следовать друг за другом, либо быть вложены один в другой:
<books>
<book isbn="5887821192">
<title>Часть речи</title>
<author>Бродский, Иосиф</author>
<present/>
</book>
<book isbn="0345374827">
<title>Марш одиноких</title>
<author>Довлатов, Сергей</author>
<present/>
</book>
</books>
Здесь элемент books (книги) содержит два вложенных элемента book (книга), которые, в свою очередь, имеют атрибут isbn и содержат три последовательных элемента: title (название), author (автор) и present (есть в наличии), причем последний пуст, т. к. в данном случае соответствует логическому флажку.
Из приведенного описания видно, что синтаксис XML напоминает синтаксис HTML (что естественно, т. к. оба они являются диалектами одного языка SGML), но требования к оформлению правильных XML–документов выше. Еще одним очень важным отличием XML от HTML является то, что содержимое элементов, т. е. все, что содержится между начальным и конечным тегами, считается данными. Это означает, что XML не игнорирует символы пробела и разрыва строк, как это делает HTML.
Любой 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 – что они есть.
В общем случае, пролог может содержать также декларации типа документа.
XML–документы могут содержать комментарии, которые игнорируются приложением, обрабатывающим документ. Комментарии строятся по тем же правилам, что и в HTML:
- начинайте комментарий с символов "<!--",
- завершайте комментарий символами "-->",
- не используйте внутри комментария символов "--".
- Пример комментариев:
<!–– это комментарий ––>
<!–– а вот еще комментарий,
занимающий более одной строки ––>
Все имена элементов, атрибутов и разделов должны начинаться с буквы Unicode и состоять из букв, цифр, символов точки (.), подчеркивания (_) и дефиса (–). Единственное ограничение состоит в том, что они не должны начинаться с комбинации букв xml в любом регистре; подобные имена зарезервированы для будущих расширений языка. Существенно, что стандарт допускает использование в именах не только английских букв, но и любых других, хотя существующие XML–процессоры часто ограничены теми системами кодировок, которые в них заложены создателями.
XML документы могут быть хорошо сформированными (well-formed) и допустимыми (valid). [5]
Хорошо сформированные документы XML
Для того чтобы быть хорошо сформированным, документ должен следовать правилам синтаксиса, установленным для XML консорциумом W3C в рекомендации XML 1.0. Неформально «хорошо сформированный» означает главным образом то, что документ должен содержать один или более элементов, и один из них, корневой, обязан включать в себя все остальные элементы. Кроме того, для каждого элемента должны соблюдаться правила вложенности. Например, следующий документ не будет хорошо сформированным, потому что закрывающийся тег </Bill> встречается после открывающегося тега <Buyer> для следующего элемента:
<?xml version=”1.0” encoding=”UTF-8”?>
< Document >
<Bill>
Чек
<Buyer>
</Bill>
Покупатель
</Buyer>
</Document> [6]
Валидные документы XML
Большинство браузеров проверяют XML документы на то, являются ли они хорошо сформированными. Некоторые браузеры могут так же проверить, валиден (допустим) ли документ. Документ XML валиден (допустим), если с ним связаны объявление типа документа (DTD – Document Type Declaration) или схема XML, и если документ удовлетворяет этим DTD или схеме. То есть DTD или схема задает набор правил для внутренней целостности самого документа, и если браузер может подтвердить, что документ удовлетворяет этим правилам, он является валидным [6].