Расширяемый язык разметки
Расширяемый язык разметки (англ. eXtensible Markup Language, XML) — это текстовый формат для представления структурированных данных, основанный на синтаксисе тегов и атрибутов. XML не является языком программирования, а представляет собой метаязык, то есть средство для создания других языков разметки с произвольной, определяемой пользователем структурой. Ключевой особенностью XML является строгое соблюдение синтаксических правил (well-formedness) и возможность проверки соответствия документа заранее заданной схеме (validity). Стандарт разработан Консорциумом Всемирной паутины (W3C) и впервые опубликован в 1998 году как упрощённая версия более сложного стандарта SGML (Standard Generalized Markup Language).
История
Предпосылки и создание
К середине 1990-х годов язык SGML, разработанный в 1980-х годах, доказал свою мощь для описания сложных документов (например, технической документации и авиационных руководств), но оставался чрезвычайно сложным для реализации и повсеместного использования в Интернете. Одновременно с этим язык HTML, также являющийся приложением SGML, достиг огромной популярности, но обладал фиксированным набором тегов и не позволял описывать произвольные структуры данных.
В 1996 году под руководством Джона Боузэка (Jon Bosak) из Sun Microsystems началась работа над новым языком, который сочетал бы простоту HTML с гибкостью SGML. Рабочая группа W3C по XML (XML Working Group) поставила цель создать формат, пригодный для использования в Вебе, но не зависящий от платформы и легко обрабатываемый программно. Первая версия спецификации, XML 1.0, стала рекомендацией W3C 10 февраля 1998 года.
Развитие и версии
Основные вехи развития XML включают:
- XML 1.0 (1998) — первая рекомендация, определившая базовый синтаксис.
- XML 1.1 (2004) — незначительное обновление, разрешившее использование символов из новых диапазонов Unicode и изменившее правила обработки управляющих символов. Однако XML 1.0 остаётся более широко используемой версией.
- XML Namespaces (1999, 2006) — спецификация, позволяющая объединять в одном документе элементы и атрибуты из разных словарей XML, избегая конфликтов имён.
- XML Schema (XSD) (2001) — мощная альтернатива DTD для описания структуры и типов данных XML-документов.
- XSLT (1999, 2007) — язык преобразования XML-документов в другие форматы (HTML, текст, другой XML).
- XPath (1999, 2007) — язык запросов для навигации по элементам и атрибутам XML-документа.
Синтаксис и структура
XML-документ состоит из двух основных частей: пролога (необязательного) и корневого элемента, содержащего вложенные элементы.
Пролог
Пролог обычно включает XML-декларацию, которая указывает версию XML и кодировку символов: ``xml <?xml version="1.0" encoding="UTF-8"?> `` Также в прологе могут находиться инструкции по обработке (processing instructions) и объявления типа документа (DOCTYPE), ссылающиеся на DTD.
Элементы и атрибуты
Основной строительный блок XML — элемент. Каждый элемент имеет имя, может содержать текст, другие элементы или быть пустым. Синтаксис строго регламентирован:
- Открывающий тег:
<имя> - Закрывающий тег:
</имя> - Пустой элемент:
<имя /> - Элементы должны быть правильно вложены (нельзя пересекать теги).
- Имена элементов чувствительны к регистру (
<Book>и<book>— разные элементы).
Атрибуты задаются в открывающем теге в виде пар «имя="значение"»: ``xml <book id="123" lang="ru">...</book> ``
Правила корректности (well-formedness)
Документ считается синтаксически корректным (well-formed), если он соответствует следующим правилам:
- Есть ровно один корневой элемент.
- Все элементы правильно вложены.
- Все открывающие теги имеют соответствующие закрывающие (или используются пустые элементы).
- Значения атрибутов заключены в кавычки (одинарные или двойные).
- Имена элементов и атрибутов состоят из допустимых символов.
Специальные символы
Для представления символов, имеющих специальное значение в XML, используются предопределённые сущности:
<—<>—>&—&'—'"—"
Для произвольных символов можно использовать числовые ссылки (например,   для неразрывного пробела).
Схемы и проверка валидности
Документ, соответствующий определённой схеме, называется валидным (valid). Схема описывает, какие элементы и атрибуты могут появляться в документе, в каком порядке и с какими типами данных. Основные виды схем:
DTD (Document Type Definition)
DTD — самый старый механизм описания структуры XML. DTD может быть внутренним (включён в пролог) или внешним (ссылка на файл). DTD описывает допустимые элементы, их атрибуты и вложенность, но не поддерживает типы данных (все значения — строки) и имеет собственный, не XML-синтаксис.
XML Schema (XSD)
XML Schema Definition (XSD) — более современный и мощный стандарт. XSD сам написан на XML и поддерживает:
- Типизацию данных (строки, числа, даты, булевы значения).
- Пространства имён.
- Определение сложных типов.
- Ограничения на значения (регулярные выражения, диапазоны).
RELAX NG
RELAX NG — более простой и гибкий язык схем, также основанный на XML. Он использует регулярные выражения для описания структуры и считается более читаемым, чем XSD.
Применение
XML нашёл широкое применение в различных областях информационных технологий.
Форматы данных и обмена
XML стал основой для множества открытых и проприетарных форматов:
- RSS и Atom — форматы синдикации новостей и блогов.
- SVG — формат векторной графики.
- DocBook — система для написания технической документации.
- Office Open XML (OOXML) и OpenDocument (ODF) — форматы офисных документов (Microsoft Office, LibreOffice).
- XHTML — строгая версия HTML, соответствующая синтаксису XML.
- SOAP — протокол обмена сообщениями в веб-сервисах.
Конфигурационные файлы
Многие программные системы (веб-сервер Apache, среда разработки Eclipse, фреймворк Spring) используют XML для хранения конфигураций, благодаря его читаемости и возможности валидации.
Базы данных и обмен данными
XML используется для хранения и передачи данных между системами. Существуют XML-ориентированные базы данных (например, eXist-db, BaseX), которые хранят документы в нативном виде. Реляционные базы данных (Oracle, PostgreSQL, Microsoft SQL Server) поддерживают тип данных XML и функции для его обработки.
Промышленность и наука
- MathML — язык разметки математических формул.
- CML (Chemical Markup Language) — для представления химической информации.
- FIXML — в финансовой сфере для передачи торговой информации.
Преимущества и недостатки
Преимущества
- Платформонезависимость — XML-файлы обрабатываются на любой операционной системе.
- Читаемость — структура документа понятна человеку без специальных инструментов.
- Расширяемость — пользователь может создавать собственные теги и схемы.
- Стандартизация — единые правила синтаксиса и проверки.
- Поддержка Unicode — возможность работы с любыми языками.
Недостатки
- Избыточность — XML-документы часто содержат много повторяющихся тегов, что увеличивает размер файла.
- Производительность — синтаксический разбор XML требует значительных вычислительных ресурсов по сравнению с более компактными форматами (JSON, YAML, Protocol Buffers).
- Сложность — полный стек технологий XML (XPath, XSLT, XSD, XQuery) требует времени на изучение.
- Отсутствие встроенной поддержки массивов — в отличие от JSON, XML не имеет прямого синтаксиса для списков, что приходится эмулировать повторяющимися элементами.
Сравнение с другими форматами
| Характеристика | XML | JSON | YAML |
|---|---|---|---|
| Синтаксис | Теги | Ключ-значение | Отступы |
| Читаемость | Средняя | Высокая | Высокая |
| Размер файла | Большой | Малый | Малый |
| Типы данных | Только строки (без схемы) | Числа, строки, массивы, объекты | Числа, строки, массивы, объекты |
| Схемы | DTD, XSD, RELAX NG | JSON Schema | Отсутствует (часто) |
| Комментарии | Да | Нет | Да |
| Пространства имён | Да | Нет | Нет |
Интересные факты
- XML стал первым форматом, который позволил создавать произвольные структуры данных, пригодные для автоматической обработки и проверки.
- Несмотря на рост популярности JSON, XML остаётся доминирующим форматом в корпоративных системах, особенно в финансовом секторе и издательском деле.
- Язык XSLT является полным по Тьюрингу, то есть на нём можно реализовать любую вычислимую функцию.
- В 2018 году XML отметил 20-летие, и W3C продолжает поддерживать и развивать связанные стандарты.
Источники
- W3C. Extensible Markup Language (XML) 1.0 (Fifth Edition). Recommendation, 2008.
- W3C. XML Schema Part 1: Structures. Recommendation, 2004.
- Bray, T., Paoli, J., Sperberg-McQueen, C. M., Maler, E., Yergeau, F. XML 1.0 Specification. 1998.
- Harold, E. R., Means, W. S. XML in a Nutshell. O'Reilly Media, 2004.
- Walsh, N. DocBook: The Definitive Guide. O'Reilly Media, 2000.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →