Тип данных 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-документы делятся на два типа по степени строгости:
- Правильно построенные (Well-Formed) — документы, строго следующие синтаксическим правилам XML: наличие одного корневого элемента, корректная вложенность (без перекрытия), правильное закрытие всех тегов, использование экранированных последовательностей для служебных символов (
<для<,&для&). - Действительные (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 →