XML-документы¶
XML-документ — это структурированный текстовый файл, содержимое которого соответствует синтаксическим правилам языка разметки eXtensible Markup Language (расширяемый язык разметки). XML предназначен для хранения и передачи данных в форме, понятной как человеку, так и компьютеру, и является платформонезависимым стандартом, разработанным Консорциумом Всемирной паутины (W3C). В отличие от HTML, который описывает отображение данных, XML описывает структуру и смысл данных, предоставляя пользователю возможность создавать собственные наборы тегов.
¶Основные характеристики и синтаксис
XML-документ состоит из элементов, атрибутов и текстового содержимого. Синтаксис XML строгий и подчиняется определённым правилам.
¶Элементы
Основной структурной единицей является элемент. Элемент задаётся парой тегов: открывающим (<имя_элемента>) и закрывающим (</имя_элемента>). Между ними может находиться текст, другие элементы или пустое место. Пустые элементы могут быть записаны в сокращённой форме: <имя_элемента />.
Каждый XML-документ обязательно содержит один корневой элемент, внутри которого находятся все остальные элементы. Имя элемента должно начинаться с буквы, символа подчёркивания или двоеточия (хотя двоеточие обычно зарезервировано для пространств имён) и может содержать буквы, цифры, дефисы, точки и символы подчёркивания. Имена регистрозависимы (<Title> и <title> — разные элементы).
¶Атрибуты
Элементы могут содержать атрибуты — пары «имя="значение"», указываемые внутри открывающего тега. Атрибуты предоставляют дополнительную информацию об элементе. Значение атрибута всегда должно быть заключено в одинарные или двойные кавычки. Атрибут не может содержать теги или включать в себя другие атрибуты. Имена атрибутов подчиняются тем же правилам, что и имена элементов.
¶Текстовое содержимое
Текст, расположенный между тегами элемента, называется текстовым содержимым (или #PCDATA, Parsed Character Data). Он может содержать любые символы, кроме специальных управляющих символов (<, >, &), которые при необходимости заменяются на символьные подстановки (сущности): <, >, &.
¶Комментарии и инструкции по обработке
XML поддерживает комментарии, которые записываются как <!-- комментарий -->. Инструкции по обработке (processing instructions, PI) — это инструкции для приложений, обрабатывающих документ, которые записываются как <?имя_инструкции данные?>.
¶Структура XML-документа
Полный XML-документ обычно состоит из трёх частей:
- XML-декларацию:
<?xml version="1.0" encoding="UTF-8"?>. Указывает версию XML и кодировку символов. Рекомендуется к обязательному включению. - Ссылки на DTD или XML-схему:
<!DOCTYPE корневой_элемент SYSTEM "файл.dtd">— определяет внешнюю или внутреннюю грамматику документа. - Инструкции по обработке.
- Тело (Body) — содержит один корневой элемент и всё его содержимое.
- Эпилог — часть после закрытия корневого элемента. Может содержать комментарии, инструкции по обработке и пробельные символы. Практически не влияет на обработку.
¶Правила корректности (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) обеспечивает его актуальность в задачах, требующих высокой формализации данных.
¶Источники
- W3C Recommendation: Extensible Markup Language (XML) 1.1 (Second Edition). — W3C.
- Н. В. Бахарев, А. В. Жарков. XML. Технологии и использование. — М.: ДМК Пресс, 2008.
- Э. Г. Рейли, Дж. Х. Босак. XML: Справочник. — СПб.: Символ-Плюс, 2005.
- Документация по XML Schema (W3C). — W3C.
- Материалы официального сайта ФНС России (форматы электронных документов).
- Стандарты CommerceML и EnterpriseData (1С).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


