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

В этой статье мы затроним тему структуры XML-документа. Мы с Вами уже говорили о том, зачем нужен язык XML, и вот сегодня мы напишем наш первый XML-документ, а также я подробно объясню его структуру.
Давайте сразу приведу простой пример XML-документа:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE shop [
<!ENTITY n "Ноутбук">
<!ENTITY g "Игра">
]>
<shop id="1">
<notebooks>
<prod>&n; IBM Lenovo V570</prod>
<prod>&n; DELL Inspiron N5010</prod>
</notebooks>
<games>
<prod>&g; Готика 2</prod>
<prod>&g; Might & Magic 6</prod>
</games>
</shop>
В самом начале идёт заголовок XML-документа. Заголовок в примере является универсальным, единственное, что кодировка иногда бывает разной. Я поставил наиболее распространённую - UTF-8.
Дальше идёт секция DOCTYPE, в которой описываются различные сущности. Мы описали две: "n" со значением "Ноутбук" и "g" со значением "Игра". Сущность - это, в некотором смысле, константа, которую мы можем использовать в теле XML-документа для сокращения записи и более лёгкой сопровождаемости в дальнейшем.
После секции DOCTYPE идёт тело XML-документа. Здесь всё аналогично синтаксису языка HTML, то есть имеются теги (они же элементы), они имеют атрибуты, а также внутренние теги. Но в отличии от HTML, здесь Вы сами придумываете названия элементов, также в XML очень строгий синтаксис, то есть не должно быть никаких незакрывающих тегов или пропущенных кавычек в значениях атрибутов у тегов.
Обратите внимание на то, как используются описанные нами в секции CDATA сущности. Если требуется вывести какой-нибудь спецсимвол, например, & или <, то необходимо использовать соответствующие зарезервированные сущности.
Что касается взаимосвязи между различными элементами. Есть 5 видов связей:
- Родитель. Родителем для заданного является тот элемент, который находится ровно на 1 уровень выше. Например, для элемента "notebooks" родителем является "shop".
- Дочерний элемент. Противоположность родителю. Дочерним элементом является тот, который находится ровно на 1 уровень ниже и находится внутри заданного элемента. Например, дочерними элементами "shop" являются "notebooks" и "games". Обратите внимание, что родитель всегда один, тогда как дочерних элементом может быть много.
- Предок. Предком является тот элемент для заданного, который находится на более, чем 1 уровень выше. Например, для элемента "prod" предком является "shop".
- Потомок. Аналогично дочернему элементу, но только элементы должны быть ниже 1-го уровня вложенности в заданный элемент. Например, для "shop" потомком является "prod".
- Брат. Элемент называется братом другому элементу, если он находится на том же уровне, что и другой. Безусловно, помимо одного уровня требуется и наличие общего родителя. Например, элементы "notebooks" и "games" являются братьями.
Вот и всё, что мне хотелось бы рассказать Вам о структуре XML-документа. И для закрепления рекомендую Вам сделать простенькую задачку: сделать внутри элемента prod ещё два элемента, один из которых будет содержать название продукта, а другой - его цену. Чтобы проверить правильность XML-документа, откройте его в браузере. Если никаких ошибок не возникло, значит, синтаксически всё написано правильно.
-
-
Михаил Русаков
Комментарии (8):
Нет ли намерений создать видео курс о XML-парсинге. Подробно разбор XML в массив, массив в базу MySQL, вывод на сайт с присоединением CSS или даже AJAX. Подробно эту тему особо никто не разбирал. Чет никак освоить не могу(...
Ответить
Без CSS и Ajax уже рассмотрено всё это здесь: http://srs.myrusakov.ru/kurs
Ответить
Связался с вами через вконтакте
Ответить
"Обратите внимание на то, как используются описанные нами в секции CDATA сущности". А это где? В данном примере (и статье) не увидел секцию CDATA сущностей.
Ответить
<!ENTITY n "Ноутбук"> <!ENTITY g "Игра"> вот это.
Ответить
Я к тому, что стоило бы в самой статье указать что именно это секция CDATA. Я не придираюсь, просто подмечаю...
Ответить
Михаил, респект за легендарную игру Готику 2! Вы, значит, тоже играли в неё, раз писали об этом в статье?
Ответить
спс за спам на мыло
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.