"Создание электронных книг в формате FictionBook 2.1: практическое руководство" - читать интересную книгу автора (Кондратович М.И.)

§ 1.3 Несколько слов о XML

Расширяемый язык разметки — eXtensible Markup Language, был создан для хранения структурированных данных в текстовом формате. Теоретически файлы XML должны легко читаться, как программным обеспечением, так и человеком.

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

На базе XML уже создано большое количество подмножеств для решения конкретных задач. Например, есть реализация HTML средствами XML — XHTML, язык для записи математических формул и выражений (MathML), язык для химических формул, для медицинской электронной документации. Новый формат файлов пакета M$ Office 2007 представляет собой не что иное, как пачку XML-документов, которые сохраняются в одном архиве.

Кроме того, поскольку любые данные в XML — это обычный текст, то и работать с ними можно как с текстом: готовить XML-документы в notepad, а в случае потери какой-либо части данных с остальными можно будет по-прежнему работать.

В отличие от HTML, набор средств разметки (тэгов) в XML не фиксирован, и может быть произвольным.

Разумеется, это должно как-то описываться. Поэтому в XML есть такое понятие, как «спецификация», DTD (Document Type Definition — описание типа документа) — документ, в котором описана структура XML-подмножества. В настоящее время на смену DTD пришла XML Schema.

Если возникнет необходимость, XML легко преобразовать в любой другой формат. Для этого существует XSLT — eXtensible Stylesheet Language Transformation — расширяемый язык стилей.

Вот, к примеру, реализация адресной книги на базе XML.

lt;?xml version="1.0" encoding="UTF-8"?gt;

lt;AddressBookgt;

lt;contactgt;

lt;personegt;

lt;namegt;Василийlt;/namegt;

lt;patronymicgt;Ивановичlt;patronymicgt;

lt;surnamegt;Пупкинlt;/surnamegt;

lt;addressgt;пер. Кривоколенный, 5-15lt;/addressgt;

lt;phone type="home"gt;555-22-11lt;/phonegt;

lt;phone type="mobile"gt;736-11-22lt;/phonegt;

lt;e-mailgt;[email protected];/e-mailgt;

lt;/personegt;

lt;/contactgt;

lt;contactgt;

lt;organizationgt;

lt;type-orggt;Кооперативlt;/type-orggt;

lt;name-orggt;Рога и Копытаlt;/name-orggt;

lt;addressgt;ул. Малая Арнаутская, 12lt;/addressgt;

lt;phone type="work"gt;202-33-20lt;/phonegt;

lt;phone type="work"gt;202-32-00lt;/phonegt;

lt;sitegt;http://www.hornamp;hoof.ualt;/sitegt;

lt;e-mailgt;mail@hornamp;hoof.ualt;/e-mailgt;

lt;/organizationgt;

lt;/contactgt;

lt;/AddressBookgt;

Как видим, сам документ имеет древовидную структуру и состоит из вложенннных элементов.

Первая строка является признаком XML и содержится во всех документах.

Элемент — это данные, ограниченные парой тэгов. lt;taggt; и lt;/taggt;.

Кроме данных, элементы могут содержать в себе атрибуты — например, у элемента phone есть атрибут type, который может принимать фиксированные значения «home», «work» и «mobile».

Вместо пары тэгов для обозначения границ элемента может использоваться один тэг вида lt;tag/gt;, но тогда у такого элемента не может быть данных и вложенных элементов.

Стандарт XML предписывает, чтобы у «дерева» элементов был корневой элемент, который будет содержать внутри себя все остальные. Корневой элемент должен быть единственным, то есть XML-документ, где два и больше корневых элементов, — это документ, сформированный неправильно.

Как видим, все просто и понятно. Документ легко читается и редактируется, а при желании можно написать XSL, трансформирующий его в HTML или RTF.

Давая свободу, XML одновременно предъявляет к документу гораздо более жесткие требования, чем HTML. Одно из ключевых понятий XML — «валидный» документ. Все элементы документа должны быть правильно закрыты, а вложенность их соответстовать спецификации. Конструкции типа lt;igt;lt;bgt;Textlt;/igt;lt;/bgt;, которые легко «проглатывает» HTML, в XML считаются фатальной ошибкой.