XML (eXtensible Markup Language, «Расширяемый язык разметки») — это универсальный текстовый формат для создания, хранения и передачи структурированных данных между различными системами, приложениями и платформами. XML разработан Консорциумом W3C (World Wide Web Consortium) как язык разметки общего назначения, основанный на стандартах семантической и структурной разметки.
История создания
Происхождение от SGML (1970-1980-е). История XML начинается с SGML (Standard Generalized Markup Language — «Стандартный язык обобщенной разметки»), разработанного в начале 1970-х годов под руководством Чарльза Голдфарба из компании IBM. SGML был ратифицирован Международной организацией по стандартизации (ISO) в 1986 году, но из-за своей сложности (его официальная спецификация составляла 150 страниц) он не получил широкого распространения.
Развитие HTML и потребность в упрощении (1990-е). В то же время возникли две важные потребности:
- HTML (HyperText Markup Language) был разработан для отображения документов в Интернете, но оказался ограниченным в возможностях
- Нужен был более простой, чем SGML, но более мощный, чем HTML, язык разметки
Создание XML (1996-1998). В 1996 году Консорциум W3C поддержал инициативу создания новой версии языка разметки. Главную роль в разработке сыграл Йон Босак (Jon Bosak) из компании Sun, а редакторами спецификации были Тим Брэй и С.М. Шперберг-МакКвин. Команда разработчиков определила десять ключевых принципов для нового языка.
Первая версия XML 1.0 была выпущена в феврале 1998 года и получила статус рекомендации W3C. Спецификация состояла всего из 26 страниц — примерно в 20 раз меньше, чем SGML. Язык сразу получил широкое признание, и в октябре 2000 года была принята вторая редакция спецификации с незначительными изменениями.
Основные характеристики XML
Самоописательность. XML-документы содержат информацию о структуре данных прямо в самих документах через имена тегов. Это делает XML удобным для чтения как человеком, так и компьютером.
Расширяемость. XML не определяет заранее набор тегов — разработчик может создавать собственные теги в соответствии с потребностями конкретной задачи. Это обеспечивает гибкость и универсальность языка.
Независимость от платформы и языка программирования. XML-документы — это простые текстовые файлы, совместимые с любыми операционными системами и языками программирования.
Иерархическая структура. Данные организуются в виде древовидной иерархии элементов, где каждый элемент может содержать текст, атрибуты и другие элементы.
Простота синтаксиса. Формальный синтаксис однозначно определяется EBNF-правилами, что не допускает двояких толкований.
Структура XML-документа
Типичный XML-документ состоит из нескольких компонентов:
Объявление XML (Prologue). Начинается с информации о версии и кодировке:
xml<?xml version="1.0" encoding="UTF-8"?>
Корневой элемент. Обязательная часть документа, содержащая всё остальное содержимое:
xml<catalog>
<!-- содержимое документа -->
</catalog>
Элементы. Основные строительные блоки, состоящие из открывающего тега, содержимого и закрывающего тега:
xml<book id="bk101">
<author>Габриэль Гарсиа Маркес</author>
<title>Сто лет одиночества</title>
</book>
Атрибуты. Дополнительная информация, содержащаяся внутри открывающего тега:
xml<book id="bk101" year="1967">
Комментарии. Текст, игнорируемый обработчиками:
xml<!-- Это комментарий -->
CDATA-секции. Для включения текста, содержащего спецсимволы:
xml<![CDATA[Здесь можно использовать < > & без экранирования]]>
Правила и соглашения XML
Для корректно сформированного (well-formed) XML-документа необходимо соблюдать следующие правила:
- Все теги должны быть правильно закрыты
- Все элементы должны быть правильно вложены друг в друга
- Имена тегов чувствительны к регистру
- Должен присутствовать корневой элемент
- Значения атрибутов должны быть заключены в кавычки
Сопутствующие технологии
XSD (XML Schema Definition). Язык для описания и валидации структуры XML-документов. XSD более мощный и гибкий, чем его предшественник DTD, поддерживает типы данных и пространства имен.
XSLT (eXtensible Stylesheet Language Transformations). Язык преобразования XML-документов в другие форматы, такие как HTML, текст или другие XML-документы. XSLT позволяет применять правила преобразования к данным без изменения самого XML.
XPath. Язык для выбора элементов в XML-документе.
DOM (Document Object Model). Программный интерфейс для работы с XML-документами.
Применение XML
XML используется в широком спектре приложений и сценариев:
Обмен данными между системами. На протоколе SOAP (который мы рассматривали ранее) используется XML для передачи SOAP-сообщений.
Конфигурационные файлы. Многие приложения используют XML-файлы для хранения параметров конфигурации.
Веб-сервисы и REST API. XML часто используется для передачи данных в веб-сервисах наряду с JSON.
Офисные документы. Форматы DOCX, XLSX и PPTX в Microsoft Office основаны на XML.
Публикация и управление контентом. RSS-каналы для распределения контента используют XML.
Электронная торговля и EDI. Обмен электронной информацией между предприятиями часто использует XML.
Данные географического информирования. GML (Geography Markup Language) основан на XML.
Преимущества XML
Универсальность. Подходит для хранения и передачи любых структурированных данных.
Читаемость. Легко читается человеком благодаря понятным названиям тегов.
Расширяемость. Можно создавать свои теги и структуры, адаптируя язык к конкретным потребностям.
Совместимость. Текстовый формат обеспечивает совместимость со всеми платформами и системами.
Валидация. Возможность определения и проверки структуры документов через XSD.
Инструменты и экосистема. Богатое сообщество инструментов и библиотек для работы с XML.
Недостатки XML
Многословность. XML-документы могут быть значительно больше по размеру, чем данные в других форматах, таких как JSON или CSV.
Производительность. Обработка больших XML-документов может быть медленнее по сравнению с бинарными форматами.
Сложность парсинга. Для непрофессионалов парсинг XML может быть сложным.
Различие между XML и HTML
Хотя XML и HTML похожи синтаксически, они предназначены для разных целей:
| Аспект | XML | HTML |
|---|---|---|
| Назначение | Хранение и передача данных | Отображение данных в браузере |
| Теги | Определяются пользователем | Предопределены |
| Фокус | На смысле и структуре данных | На внешнем виде |
| Расширяемость | Полностью расширяем | Не расширяем |
XML остаётся критически важной технологией в современном IT-мире, обеспечивая стандартизированный способ структурирования и обмена данными между различными системами и приложениями.
