Открыть сервис

XML-документ

XML-документ — это структурированный текстовый файл, содержимое и формат которого соответствуют правилам языка разметки XML (eXtensible Markup Language). XML-документ предназначен для хранения и передачи данных в форме, удобной для машинной обработки, при этом оставаясь читаемым для человека. Он является основным носителем информации в экосистеме XML и широко применяется в веб-технологиях, системах обмена данными, конфигурационных файлах и документообороте.

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

XML-документ имеет строгую иерархическую структуру, которая определяется синтаксисом XML. Основными элементами этой структуры являются пролог, корневой элемент, дочерние элементы, атрибуты и комментарии.

Пролог

Пролог (prolog) — необязательная, но часто используемая часть документа, которая располагается в самом начале. Он содержит объявление XML (XML declaration) и, возможно, инструкции по обработке (processing instructions) и ссылки на схему (DTDDocument Type Definition).

Объявление XML имеет вид <?xml version="1.0" encoding="UTF-8"?>. Оно указывает версию языка (обычно 1.0 или 1.1) и кодировку символов (например, UTF-8, Windows-1251). Наличие объявления помогает парсеру корректно интерпретировать содержимое документа.

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

Каждый корректный XML-документ должен содержать ровно один корневой элемент (root element), который заключает в себе всё остальное содержимое. Корневой элемент задаёт контекст документа и является начальной точкой иерархии. Например, в документе, описывающем книгу, корневым элементом может быть <book>.

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

Основной строительный блок XML-документа — элемент (element). Элемент определяется открывающим (<имя>) и закрывающим (</имя>) тегами. Внутри элемента может находиться текст, другие элементы (дочерние), или смешанное содержимое.

Элементы могут иметь атрибуты (attributes), которые задаются в открывающем теге в виде пар «имя=значение». Атрибуты предоставляют дополнительную метаинформацию об элементе. Например, <book id="123">.

Комментарии и инструкции по обработке

Комментарии в XML-документе записываются внутри <!-- ... --> и игнорируются парсером. Инструкции по обработке (<? ... ?>) предназначены для передачи команд приложениям, обрабатывающим документ.

Правила корректности (Well-formedness)

Для того чтобы текстовый файл считался XML-документом, он должен быть корректным (well-formed). Основные правила корректности включают:

  • Наличие ровно одного корневого элемента.
  • Правильная вложенность тегов: теги не должны пересекаться. Например, <a><b></b></a> корректно, а <a><b></a></b> — нет.
  • Все открывающие теги должны быть закрыты. Для элементов без содержимого используется сокращённая форма: <br/>.
  • Имена элементов и атрибутов чувствительны к регистру: <Book> и <book> — разные элементы.
  • Значения атрибутов должны быть заключены в кавычки (одинарные или двойные).
  • Специальные символы (например, <, >, &) должны заменяться на предопределённые сущности (&lt;, &gt;, &amp;) или использоваться в секциях CDATA.

Валидность (Validity)

Корректный XML-документ может быть дополнительно валидным (valid), если он соответствует определённой схеме (DTD, XML Schema, Relax NG). Схема задаёт допустимые имена элементов и атрибутов, их типы данных, порядок следования и количество вхождений. Валидация позволяет автоматически проверять структуру данных на соответствие заданным правилам, что критически важно для обмена данными между системами.

Кодировка и работа с текстом

XML-документы хранят текст в определённой кодировке, которая указывается в прологе. Наиболее распространённой является UTF-8, поддерживающая символы большинства языков мира, включая кириллицу. При обработке документа парсер обязан учитывать указанную кодировку. Для включения произвольного текста, содержащего недопустимые символы, без их экранирования используется секция CDATA: <![CDATA[ ... ]]>.

Применение XML-документов

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

Веб-технологии

  • RSS и Atom: форматы для распространения новостных лент и обновлений контента.
  • SOAP: протокол обмена сообщениями в веб-сервисах, основанный на XML.
  • XHTML: строгая версия HTML, основанная на синтаксисе XML.
  • SVG: формат векторной графики, описываемый с помощью XML.
  • XSLT: язык преобразования XML-документов в другие форматы (HTML, PDF, другой XML).

Обмен данными и конфигурация

  • Форматы файлов: Microsoft Office (docx, xlsx, pptx) и OpenDocument (odt, ods) представляют собой ZIP-архивы, содержащие внутри XML-документы.
  • Конфигурационные файлы: многие приложения и фреймворки (например, Apache Ant, Maven, Spring) используют XML для настройки.
  • Электронный документооборот: XML широко применяется для представления структурированных документов, таких как счета, накладные и договоры (например, формат UBL).

Базы данных

Некоторые базы данных (например, Oracle, Microsoft SQL Server, PostgreSQL) поддерживают тип данных XML, позволяющий хранить и запрашивать XML-документы непосредственно в таблицах. Для навигации и извлечения данных из XML используется язык запросов XPath и XQuery.

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

Ниже приведён простой пример корректного XML-документа, описывающего книгу:

``xml <?xml version="1.0" encoding="UTF-8"?> <book id="b001" category="fiction"> <title>Война и мир</title> <author> <firstName>Лев</firstName> <lastName>Толстой</lastName> </author> <year>1869</year> <price currency="RUB">1200</price> <description>Роман-эпопея о жизни русского общества в эпоху наполеоновских войн.</description> </book> ``

Инструменты для работы с XML-документами

Для создания, редактирования, валидации и преобразования XML-документов существует множество инструментов:

  • Текстовые редакторы: Notepad++, Sublime Text, Vim, Visual Studio Code (с плагинами).
  • Специализированные XML-редакторы: XMLSpy, Oxygen XML Editor, Eclipse (с плагинами).
  • Парсеры и библиотеки: встроенные средства в языках программирования (Python — xml.etree.ElementTree, Java — javax.xml.parsers, C# — System.Xml.Linq).
  • Инструменты командной строки: xmllint (из состава libxml2) для валидации и форматирования.

Критика и ограничения

Несмотря на широкое распространение, XML-документы имеют ряд недостатков, которые привели к частичному вытеснению их более лёгкими форматами, такими как JSON и YAML:

  • Избыточность: синтаксис XML требует большого количества повторяющихся тегов, что увеличивает размер файла по сравнению с JSON или бинарными форматами.
  • Сложность: парсинг XML требует больше вычислительных ресурсов, чем парсинг JSON.
  • Читаемость: для человека с большим количеством вложенных элементов XML может быть менее нагляден, чем JSON.

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

Источники

  • Bray, T., Paoli, J., Sperberg-McQueen, C. M., Maler, E., & Yergeau, F. (2008). Extensible Markup Language (XML) 1.0 (Fifth Edition). W3C Recommendation.
  • Harold, E. R., & Means, W. S. (2004). XML in a Nutshell (3rd ed.). O'Reilly Media.
  • Walsh, N. (1998). A Technical Introduction to XML. XML.com.
  • World Wide Web Consortium (W3C). XML Technology.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →