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

XML-документы

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

Основные характеристики и синтаксис

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

Элементы

Основной структурной единицей является элемент. Элемент задаётся парой тегов: открывающим (<имя_элемента>) и закрывающим (</имя_элемента>). Между ними может находиться текст, другие элементы или пустое место. Пустые элементы могут быть записаны в сокращённой форме: <имя_элемента />.

Каждый XML-документ обязательно содержит один корневой элемент, внутри которого находятся все остальные элементы. Имя элемента должно начинаться с буквы, символа подчёркивания или двоеточия (хотя двоеточие обычно зарезервировано для пространств имён) и может содержать буквы, цифры, дефисы, точки и символы подчёркивания. Имена регистрозависимы (<Title> и <title> — разные элементы).

Атрибуты

Элементы могут содержать атрибуты — пары «имя="значение"», указываемые внутри открывающего тега. Атрибуты предоставляют дополнительную информацию об элементе. Значение атрибута всегда должно быть заключено в одинарные или двойные кавычки. Атрибут не может содержать теги или включать в себя другие атрибуты. Имена атрибутов подчиняются тем же правилам, что и имена элементов.

Текстовое содержимое

Текст, расположенный между тегами элемента, называется текстовым содержимым (или #PCDATA, Parsed Character Data). Он может содержать любые символы, кроме специальных управляющих символов (<, >, &), которые при необходимости заменяются на символьные подстановки (сущности): &lt;, &gt;, &amp;.

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

XML поддерживает комментарии, которые записываются как <!-- комментарий -->. Инструкции по обработке (processing instructions, PI) — это инструкции для приложений, обрабатывающих документ, которые записываются как <?имя_инструкции данные?>.

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

Полный XML-документ обычно состоит из трёх частей:

  1. Пролог (Prolog) — необязательная часть, располагающаяся в начале документа. Включает:
  • XML-декларацию: <?xml version="1.0" encoding="UTF-8"?>. Указывает версию XML и кодировку символов. Рекомендуется к обязательному включению.
  • Ссылки на DTD или XML-схему: <!DOCTYPE корневой_элемент SYSTEM "файл.dtd"> — определяет внешнюю или внутреннюю грамматику документа.
  • Инструкции по обработке.
  1. Тело (Body) — содержит один корневой элемент и всё его содержимое.
  2. Эпилог — часть после закрытия корневого элемента. Может содержать комментарии, инструкции по обработке и пробельные символы. Практически не влияет на обработку.

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

XML-документ считается правильно построенным, если он соблюдает следующие базовые правила:

  • Документ имеет ровно один корневой элемент.
  • Все открывающие теги имеют соответствующие закрывающие теги (кроме пустых элементов).
  • Элементы правильно вложены друг в друга (пересечение тегов запрещено: <a><b></a></b> неверно).
  • Атрибуты имеют кавычки.
  • Имена элементов и атрибутов корректны (начинаются с буквы, символа подчёркивания или двоеточия).
  • Все специальные символы корректно заменены сущностями.

Схемы и валидация

Правильно построенный документ не обязательно семантически корректен. Для обеспечения соответствия определённому набору правил (типы данных, обязательность полей, структура вложенности) используются языки описания схем:

DTD (Document Type Definition)

Один из старейших способов определения структуры. DTD описывает, какие элементы и атрибуты могут встречаться в документе, их порядок и количество. Может быть внутренним (включён в <!DOCTYPE ... []>) или внешним (ссылка на отдельный файл). DTD имеет ограниченные возможности по описанию типов данных (только строки и перечисления).

XML Schema (XSD)

Более современный и мощный стандарт (рекомендация W3C). XSD сама является XML-документом. Позволяет:

  • Определять сложные типы данных (целые числа, даты, десятичные дроби, перечисления, регулярные выражения).
  • Указывать ограничения на значения (диапазон, шаблон).
  • Описывать пространства имён (namespaces).
  • Определять последовательность, количество и вложенность элементов.

RELAX NG

Альтернативный язык описания схем, также поддерживается многими процессорами. Предлагает более простой синтаксис по сравнению с XSD, но менее распространён.

Документ, прошедший проверку на соответствие DTD или XSD, называется валидным.

Пространства имён (Namespaces)

Пространства имён (namespace) решают проблему конфликта имён элементов из различных приложений или словарей, объединённых в одном документе. Например, <table> может означать таблицу данных или HTML-таблицу. Пространство имён задаётся с помощью атрибута xmlns:префикс="URI". URI (например, http://www.w3.org/1999/xhtml`) не обязан указывать на реально существующий ресурс; это уникальный идентификатор. Пример:

``xml <root xmlns:html="http://www.w3.org/1999/xhtml"; xmlns:data="http://example.com/data">; <html:table> ... </html:table> <data:table> ... </data:table> </root> ``

Элементы без префикса относятся к пространству имён по умолчанию.

Типы XML-документов

XML используется в огромном количестве областей. Наиболее распространённые форматы, основанные на XML:

  • XHTML — версия HTML, основанная на XML.
  • SVG (Scalable Vector Graphics) — формат для описания двумерной векторной графики.
  • RSS/Atom — форматы для веб-синдикации новостей и обновлений.
  • SOAP (Simple Object Access Protocol) — протокол для обмена сообщениями в веб-сервисах.
  • XSLT (eXtensible Stylesheet Language Transformations) — язык преобразования XML-документов в другие форматы (например, HTML, PDF).
  • Office Open XML (OOXML) и OpenDocument (ODF) — форматы файлов офисных пакетов (например, .docx, .xlsx, .odt).
  • MathML (Mathematical Markup Language) — для представления математических выражений.
  • XML Schema (XSD) и DTD — сами по себе являются XML-документами (кроме внутренних DTD).
  • RDF/XML — формат для представления метаданных и семантической сети.

Обработка XML-документов

Для работы с XML-документами используются программные компоненты — XML-процессоры (или анализаторы, парсеры). Они бывают двух основных типов:

DOM (Document Object Model)

Загружает весь XML-документ в память в виде дерева объектов. Позволяет произвольный доступ к любым узлам, изменение, добавление или удаление элементов. Прост в использовании, но требователен к памяти при работе с крупными документами.

SAX (Simple API for XML)

Потоковый анализатор, который читает документ последовательно, вызывая обработчики событий при обнаружении тегов, текста, комментариев и т.д. Не требует загрузки всего документа в память, что делает его эффективным для больших файлов, но доступен только линейный просмотр документа без возврата.

StAX (Streaming API for XML)

Также потоковый, но в отличие от SAX, управление чтением принадлежит приложению (приложение запрашивает следующее событие). Позволяет более гибкое управление процессом разбора.

Достоинства и недостатки

Достоинства

  • Платформонезависимость — читается любой системой, поддерживающей текстовые файлы.
  • Читаемость человеком — структура документа интуитивно понятна.
  • Расширяемость — пользователь может создавать собственные теги и структуры.
  • Строгий синтаксис — ошибки легко выявляются на этапе валидации.
  • Поддержка множества кодировок (UTF-8, UTF-16 и др.).
  • Стандартизация — широкий спектр готовых процессоров, схем, библиотек для всех популярных языков программирования.

Недостатки

  • Избыточность — теги могут увеличивать размер файла по сравнению с данными в чистом формате (например, CSV или JSON).
  • Потребление ресурсов — синтаксический разбор требует времени и памяти, особенно при использовании DOM.
  • Отсутствие прямого отображения — для визуализации данных требуется дополнительный слой (CSS, XSLT).
  • Слабая поддержка бинарных данных — для их включения требуется кодировка Base64, что увеличивает размер.
  • Сложность применения в веб-приложениях — по сравнению с JSON, XML в современном фронтенде используется реже из-за своей тяжеловесности.

Применение в России и СНГ

XML широко применяется в российских государственных и коммерческих информационных системах:

  • ФНС России — форматы электронных документов (счета-фактуры, декларации) основаны на XML (например, формат УПД).
  • Росреестр — обмен данными о недвижимости осуществляется в XML-форматах.
  • 1С:Предприятие — конфигурации, отчёты, обмен данными между системами используют внутренние XML-форматы, такие как CommerceML и EnterpriseData.
  • Нефтегазовый сектор — обмен геологическими и геофизическими данными в форматах, основанных на XML (например, WITSML).
  • Медицина — обмен данными о пациентах и результатах анализов в формате HL7 (версия 3) использует XML.

Будущее XML

Несмотря на конкуренцию со стороны JSON, YAML и Protocol Buffers, XML продолжает активно использоваться в корпоративных системах, где требуется строгая валидация, поддержка пространств имён и длительное архивное хранение документов. XML остаётся основой для десятков отраслевых стандартов и технологий, связанных с веб-сервисами (SOAP, WSDL) и конфигурацией сложных систем. Развитие XML-схем (XSD 1.1) и инструментов (XML Databases, XQuery) обеспечивает его актуальность в задачах, требующих высокой формализации данных.

Источники

  1. W3C Recommendation: Extensible Markup Language (XML) 1.1 (Second Edition). — W3C.
  2. Н. В. Бахарев, А. В. Жарков. XML. Технологии и использование. — М.: ДМК Пресс, 2008.
  3. Э. Г. Рейли, Дж. Х. Босак. XML: Справочник. — СПб.: Символ-Плюс, 2005.
  4. Документация по XML Schema (W3C). — W3C.
  5. Материалы официального сайта ФНС России (форматы электронных документов).
  6. Стандарты CommerceML и EnterpriseData (1С).

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

На главную BFOmetr →