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

Электронный формат XML

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

История

Разработка XML началась в 1996 году под руководством рабочей группы W3C, возглавляемой Джоном Босаком. Целью было создание упрощённого подмножества языка SGML (Standard Generalized Markup Language), который с 1986 года использовался для сложных документов, но был слишком громоздким для применения в интернете. Первая версия спецификации XML 1.0 была опубликована 10 февраля 1998 года. Впоследствии вышли редакции 1.1 (2004 год), но версия 1.0 остаётся наиболее распространённой. В 2006 году вышла пятая редакция XML 1.0, которая является актуальной на 2024 год.

Изначально XML позиционировался как замена HTML для веба, но быстро нашёл применение в интеграции корпоративных систем, хранении конфигураций и обмене данными между приложениями. В 2000-х годах на базе XML были разработаны такие технологии, как SOAP (протокол обмена сообщениями) и RSS (формат новостных лент).

Структура и синтаксис

XML-документ состоит из элементов, атрибутов, текстового содержимого и комментариев. Основные правила синтаксиса:

  • Элементы заключаются в угловые скобки (<имя>) и обязательно закрываются (</имя>). Пустые элементы могут быть записаны как <имя />.
  • Атрибуты задаются внутри открывающего тега в формате имя="значение".
  • Корневой элемент — единственный элемент, который содержит все остальные.
  • Правильная вложенность: элементы не могут пересекаться, закрытие происходит в обратном порядке.
  • Чувствительность к регистру: <Book> и <book> — разные теги.
  • Комментарии записываются как <!-- текст -->.

Пример простого XML-документа: ``xml <?xml version="1.0" encoding="UTF-8"?> <каталог> <книга жанр="фантастика"> <название>Гиперион</название> <автор>Дэн Симмонс</автор> <год>1989</год> </книга> <книга жанр="детектив"> <название>Убийство в Восточном экспрессе</название> <автор>Агата Кристи</автор> <год>1934</год> </книга> </каталог> ``

Объявление XML

Первая строка документа — необязательное объявление <?xml ... ?>, которое указывает версию XML и кодировку (чаще всего UTF-8). Без объявления парсеры пытаются определить кодировку автоматически.

Правильно сформированные и действительные документы

  • Правильно сформированный (well-formed) документ соответствует синтаксическим правилам XML: один корневой элемент, все теги закрыты, правильная вложенность.
  • Действительный (valid) документ дополнительно соответствует определённой схеме — DTD (Document Type Definition) или XML Schema (XSD). Схема описывает допустимые элементы, их атрибуты и типы данных.

Схемы и пространства имён

DTD (Document Type Definition)

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

XML Schema (XSD)

XML Schema — более мощный и современный стандарт, рекомендованный W3C в 2001 году. XSD позволяет задавать типы данных (строки, числа, даты), ограничения (длина, диапазон), а также поддерживает пространства имён. Схемы пишутся на самом XML, что упрощает их обработку.

Пространства имён

Пространства имён (namespaces) решают проблему конфликта имён элементов из разных источников. Каждое пространство имён идентифицируется URI (например, http://www.w3.org/1999/xhtml). В документе пространства имён объявляются атрибутом xmlns: `xml <root xmlns:bk="http://example.com/books">; <bk:title>Война и мир</bk:title> </root> ``

Обработка XML

Для работы с XML существуют различные программные интерфейсы:

  • DOM (Document Object Model) — загружает весь документ в память в виде дерева объектов. Удобен для изменений и навигации, но требует много ресурсов при больших файлах.
  • SAX (Simple API for XML) — событийно-ориентированный парсер, который читает документ потоково, вызывая функции при встрече элементов. Экономит память, но не позволяет модифицировать документ.
  • StAX (Streaming API for XML) — сочетает потоковую обработку с возможностью управления чтением (курсорный подход). Используется в Java.
  • XPath — язык запросов для выборки узлов из XML-документа. Позволяет находить элементы по пути, атрибутам или условиям.
  • XSLT (Extensible Stylesheet Language Transformations) — язык для преобразования XML в другие форматы (XML, HTML, текст). Часто применяется для генерации веб-страниц.

Применение

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

Веб-сервисы

  • SOAP — протокол обмена сообщениями на основе XML для вызова удалённых процедур.
  • RSS и Atom — форматы для синдикации новостных лент и блогов.

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

  • Microsoft Office Open XML (OOXML) — формат файлов .docx, .xlsx, .pptx (используется в Microsoft Office начиная с 2007 года).
  • OpenDocument (ODF) — открытый формат для офисных документов (.odt, .ods).
  • SVG — формат векторной графики на основе XML.
  • XHTML — язык разметки веб-страниц, основанный на XML.

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

  • Многие приложения и серверы (например, Apache Tomcat, Spring Framework) используют XML для конфигурации.
  • Maven — система сборки Java-проектов, где файл pom.xml описывает зависимости и настройки.

Обмен данными

  • EDI (Electronic Data Interchange) — в некоторых отраслях XML заменяет традиционные форматы EDI для передачи заказов, счетов и накладных.
  • ebXML — стандарт для электронного бизнеса на основе XML.

Научные и технические области

  • MathML — язык для записи математических формул.
  • GML (Geography Markup Language) — для описания географических данных.
  • FIXML — протокол для финансовой информации.

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

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

  • Человекочитаемость — XML-документы можно читать и редактировать в текстовом редакторе.
  • Расширяемость — пользователь может создавать собственные теги под свои нужды.
  • Платформонезависимость — XML обрабатывается на любых операционных системах и языках программирования.
  • Поддержка схем — возможность проверять структуру и типы данных.
  • Интернационализация — поддержка Unicode, включая кириллицу.

Недостатки

  • Избыточность — теги и атрибуты увеличивают размер данных в 2-5 раз по сравнению с бинарными форматами.
  • Скорость обработки — парсинг XML требует больше времени, чем работа с JSON или бинарными форматами.
  • Отсутствие строгой типизации — без схемы типы данных не проверяются.
  • Сложность вложенных структур — глубоко вложенные документы трудно читать и обрабатывать.

Альтернативы

С 2010-х годов XML постепенно вытесняется более лёгкими форматами в веб-разработке:

  • JSON — компактный, быстрый, нативно поддерживается JavaScript. Стандарт де-факто для REST API.
  • YAML — ещё более читаемый формат, часто используется для конфигураций (Docker, Kubernetes, Ansible).
  • Protocol Buffers (protobuf) — бинарный формат от Google, обеспечивающий высокую производительность и малый размер.

Однако XML остаётся незаменимым в тех областях, где важны строгая валидация, пространства имён и поддержка сложных схем (например, в корпоративных системах, финансах и офисных форматах).

Интересные факты

  • Название XML часто произносят как «икс-эм-эль» или «икс-м-эль».
  • XML-документы могут содержать символы Unicode, включая эмодзи, если кодировка установлена как UTF-8.
  • Существует пародийный формат XML (eXtensible Markup Language), где все теги пишутся строчными буквами, а атрибуты — заглавными, но он не является стандартом.
  • В 2009 году W3C объявил, что XML 1.0 является «стабильным» стандартом, и дальнейшие изменения не планируются.

Источники

  • W3C XML Specification 1.0 (Fifth Edition), 2008.
  • W3C XML Schema Part 1: Structures, 2004.
  • «XML: The Complete Reference» by Heather Williamson, 2001.
  • «Learning XML» by Erik T. Ray, 2003.
  • Документация Oracle Java XML Processing.
  • Статья «XML vs JSON» на сайте W3Schools.

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

На главную BFOmetr →