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

Расширяемый язык разметки

Расширяемый язык разметки (англ. 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), если он соответствует следующим правилам:

  1. Есть ровно один корневой элемент.
  2. Все элементы правильно вложены.
  3. Все открывающие теги имеют соответствующие закрывающие (или используются пустые элементы).
  4. Значения атрибутов заключены в кавычки (одинарные или двойные).
  5. Имена элементов и атрибутов состоят из допустимых символов.

Специальные символы

Для представления символов, имеющих специальное значение в XML, используются предопределённые сущности:

  • &lt;<
  • &gt;>
  • &amp;&
  • &apos;'
  • &quot;"

Для произвольных символов можно использовать числовые ссылки (например, &#160; для неразрывного пробела).

Схемы и проверка валидности

Документ, соответствующий определённой схеме, называется валидным (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 не имеет прямого синтаксиса для списков, что приходится эмулировать повторяющимися элементами.

Сравнение с другими форматами

ХарактеристикаXMLJSONYAML
СинтаксисТегиКлюч-значениеОтступы
ЧитаемостьСредняяВысокаяВысокая
Размер файлаБольшойМалыйМалый
Типы данныхТолько строки (без схемы)Числа, строки, массивы, объектыЧисла, строки, массивы, объекты
СхемыDTD, XSD, RELAX NGJSON 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 →