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

Тип данных XML

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

История и развитие

История XML восходит к стандарту SGML (Standard Generalized Markup Language), разработанному в 1980-х годах. В середине 1990-х годов, в связи с быстрым развитием Всемирной паутины, возникла потребность в более простом, чем SGML, но более гибком, чем HTML, языке разметки. Рабочая группа под эгидой Консорциума Всемирной паутины (W3C) во главе с Джоном Боcаком начала разработку XML. Первая спецификация XML 1.0 была опубликована в феврале 1998 года. XML быстро стал стандартом для представления данных, особенно в корпоративных информационных системах (B2B), веб-сервисах (SOAP, XML-RPC), а также в форматах файлов офисных пакетов (например, OOXML в Microsoft Office и ODF в LibreOffice). В 2000-х годах на смену XML в ряде областей (например, в конфигурационных файлах некоторых современных фреймворков) пришёл JSON, однако XML остаётся ключевым форматом для работы со сложными документами (например, электронные книги в формате EPUB, схемы XSD, XSLT-преобразования).

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

XML-документ имеет иерархическую (древовидную) структуру, где элементы могут вкладываться друг в друга. Основными элементами документа являются:

Пролог (Prolog)

Необязательная часть, расположенная в начале документа. Она содержит:

  • XML-декларацию: <?xml version="1.0" encoding="UTF-8"?> — объявляет версию XML и кодировку символов.
  • Декларацию типа документа (DTD): может задавать типы элементов и их атрибуты.

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

Каждый корректный XML-документ должен содержать ровно один корневой элемент, в который вложены все остальные элементы. Он является началом и концом дерева данных.

Элементы (теги)

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

Атрибуты

Дополнительные характеристики элемента, задаваемые в открывающем теге в виде пар «имя-значение»: <книга жанр="научная фантастика">. Значения атрибутов всегда заключаются в кавычки (одинарные или двойные).

Содержимое элементов

  • Текст (символьные данные).
  • Вложенные элементы (дочерние узлы).
  • Смесь текста и вложенных элементов.
  • Пустое содержимое.

Комментарии

Текст, не являющийся частью данных и игнорируемый парсером: <!-- это комментарий -->.

Обработка пробелов

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

Классификация и валидация

XML-документы делятся на два типа по степени строгости:

  1. Правильно построенные (Well-Formed) — документы, строго следующие синтаксическим правилам XML: наличие одного корневого элемента, корректная вложенность (без перекрытия), правильное закрытие всех тегов, использование экранированных последовательностей для служебных символов (&lt; для <, &amp; для &).
  2. Действительные (Valid) — документы, которые не только правильно построены, но и соответствуют некоторой схеме (определению структуры). Схема задаёт набор допустимых элементов, их атрибутов, вложенность и типы данных.

Для валидации применяются:

  • DTD (Document Type Definition) — устаревший, но широко распространённый способ описания схемы. Задаётся как во внутреннем, так и во внешнем документе (с помощью <!DOCTYPE ...>) или в отдельном файле.
  • XSD (XML Schema Definition) — рекомендованный W3C стандарт. Позволяет задавать типы данных (числа, даты, строки, URL), ограничения на значения (min, max, patterns — регулярные выражения) и сложные типы. XSD сам является XML-документом.
  • RELAX NG (REgular LAnguage for XML Next Generation) — более компактный и простой язык описания схем, поддерживаемый многими парсерами.

Применение XML в различных областях

Веб-сервисы и обмен данными

XML является основой протоколов веб-сервисов, таких как SOAP (Simple Object Access Protocol) и WSDL (Web Services Description Language). В SOAP сообщения оформляются в виде строго структурированных XML-документов, содержащих заголовки (для маршрутизации, безопасности) и тело (с собственно данными запроса или ответа). В современной практике SOAP активно вытесняется REST-архитектурой, часто использующей JSON, но во многих legacy-системах и корпоративных решениях XML остаётся обязательным.

Конфигурационные файлы

Многие программные платформы используют XML для описания конфигураций. Примеры: web.xml (Java EE / Jakarta Servlet), app.config (Microsoft .NET Framework), файлы проект *.csproj, а также конфигурации серверов приложений (Apache Tomcat, WildFly). В последние годы на смену XML в этой роли всё чаще приходят JSON, YAML и TOML.

Форматы документов

  • OOXML (Office Open XML) — формат файлов Microsoft Office (.docx, .xlsx, .pptx). Представляет собой ZIP-архив, содержащий внутри XML-файлы, описывающие структуру документа, стили, шрифты, формулы и т.д.
  • ODF (Open Document Format) — формат файлов LibreOffice / OpenOffice (.odt, .ods, .odp). Аналогично базируется на XML внутри ZIP-архива.
  • EPUB — стандартный формат электронных книг, использует XHTML (частный случай XML) для разметки текста и отдельный XML-файл для описания метаданных (content.opf).

Базы данных и интеграция

Некоторые NoSQL-системы (например, MarkLogic, eXist-db, BaseX) являются native XML-базами данных, хранящими и индексирующими XML-документы. Также распространён способ импорта/экспорта данных из реляционных баз в XML (например, при интеграции через ESB (Enterprise Service Bus) или ETL-процессы).

Преимущества и недостатки формата

Преимущества

  • Универсальность и платформонезависимость: текстовая природа позволяет обрабатывать XML на любом языке программирования и любой операционной системе.
  • Читаемость: документы в XML удобно просматривать и редактировать вручную (хотя для сложных структур это может быть трудоёмко).
  • Строгая валидируемость: использование XSD позволяет автоматически проверять корректность и полноту данных, что критично для финансовых, медицинских и других строго регламентированных систем.
  • Гибкость и расширяемость: можно создавать собственные языки разметки (MathML, SVG, RDF/XML) без необходимости изменения базовых правил синтаксиса.

Недостатки

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

Смежные технологии и расширения

  • XPath — язык запросов к частям XML-документа. Позволяет выбирать узлы по их пути (например, /root/books/book[@year>2000]).
  • XSLT (eXtensible Stylesheet Language Transformations) — язык преобразования XML-документов в другие формы: в другой XML, HTML, текстовый файл. Широко используется для генерации веб-страниц из XML-данных.
  • XSL-FO (eXtensible Stylesheet Language – Formatting Objects) — язык для форматирования XML-документов (например, для печати или создания PDF). Дополняет XSLT.
  • DOM (Document Object Model) — программный интерфейс, представляющий XML-документ в виде дерева объектов в памяти. Позволяет загрузить весь документ, модифицировать его, искать узлы.
  • SAX (Simple API for XML) — событийно-ориентированный интерфейс для последовательного чтения XML без загрузки всего документа в память. Эффективен для обработки больших файлов.
  • StAX (Streaming API for XML) — потоковый API, предоставляющий как pull-модель (программа явно запрашивает очередное событие парсера), так и push-модель. Используется в Java (javax.xml.stream).

Современный статус и тренды

Несмотря на то, что в веб-разработке начала 2020-х годов XML уступил позиции JSON как основной формат для API, особенно в REST-сервисах и приложениях на JavaScript, он сохраняет лидирующие позиции в корпоративных информационных системах. Многие протоколы финансового обмена (ISO 20022), HL7 в здравоохранении, FIXML в биржевой торговле, а также системы электронного документооборота в государственном секторе России (например, различные реестры и паспорта объектов) по-прежнему используют XML. ActiveX-объекты на основе XML и XML-апплеты (Java Web Start) в значительной степени устарели. В целом, XML остаётся фундаментальной технологией, на основе которой построены многие стандарты долговременного архивного хранения и межведомственного обмена данными.

Источники

  • Спецификация W3C «Extensible Markup Language (XML) 1.0 (Fifth Edition)», 2008.
  • Тимери («XML: The Annotated Specification», B. DuCharme, 1998).
  • The XML FAQ — «A technical introduction to XML».
  • W3Schools — «XML Introduction».
  • Oracle Java Tutorials — «Processing XML with Java».

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

На главную BFOmetr →