Документация / XML

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

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

Пролог

Пролог может содержать:

  1. Объявление XML — строго в самом начале файла, без пробелов и пустых строк перед ним.
  2. Комментарии и инструкции обработки.
  3. Объявление типа документа <!DOCTYPE …> — ссылку на DTD (см. «DTD»).
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
ПараметрЗначение
versionВерсия XML: 1.0
encodingКодировка файла. Без объявления — UTF-8 или UTF-16 (определяется по началу файла)
standaloneyes — документ не зависит от внешних объявлений разметки (внешнего DTD)

Объявление XML необязательно, но рекомендуется: оно фиксирует кодировку.

Корневой элемент

В документе ровно один корневой элемент; все остальные элементы вложены в него. Два элемента верхнего уровня — ошибка:

<?xml version="1.0" encoding="UTF-8"?>
<customer>Анна</customer>
<customer>Иван</customer>

Правила правильности

Документ правильный, если:

  • у каждого открывающего тега есть закрывающий, или элемент записан как пустой: <br/>;
  • элементы вложены корректно, без пересечений: <b><i>текст</i></b>, но не <b><i>текст</b></i>;
  • имена в открывающем и закрывающем тегах совпадают с учётом регистра: <Name> и </name> — разные теги;
  • значения атрибутов заключены в кавычки (двойные или одинарные), а имена атрибутов в элементе не повторяются;
  • символы < и & в тексте и значениях атрибутов экранированы;
  • все ссылки на сущности ссылаются на объявленные сущности (кроме пяти предопределённых);
  • в документе нет запрещённых символов (например, управляющих символов с кодами 0–31, кроме табуляции, перевода строки и возврата каретки).

Пересекающиеся теги — ошибка:

<p><b>Важно:<i> срок</b> — 3 дня</i></p>

Логическая и физическая структура

С точки зрения XML документ — это дерево элементов (логическая структура), которое может храниться в нескольких сущностях — файлах или фрагментах текста (физическая структура). Сущности подключаются ссылками &имя;, объявленными в DTD. В современных форматах внешние сущности почти не используют — для модульности применяют XInclude, xs:include и собственные механизмы ссылок.

Обновлено: 30 сентября 2026 г.