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

Язык XML

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

История

Разработка XML началась в 1996 году под руководством рабочей группы W3C, возглавляемой Джоном Босаком. Основной целью было создание более простого и удобного для использования в интернете формата, чем SGML, при сохранении его ключевых возможностей по расширяемости и строгости. Первая спецификация XML 1.0 была опубликована 10 февраля 1998 года. В 2006 году вышла вторая редакция стандарта, которая исправила ряд неточностей и уточнила правила обработки. XML быстро завоевал популярность в качестве стандарта для обмена данными в веб-сервисах (SOAP, REST), конфигурационных файлах (например, в Apache Tomcat, Microsoft .NET), офисных форматах (OpenDocument, Office Open XML) и многих других областях. В 2000-х годах XML стал основой для таких технологий, как XSLT (преобразование XML), XPath (навигация по XML-документам) и XML Schema (определение структуры документа). Однако с середины 2010-х годов в ряде сфер, особенно в веб-разработке и конфигурации, XML начал вытесняться более лёгкими форматами, такими как JSON и YAML, из-за своей избыточности и сложности синтаксиса.

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

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

Основные элементы

  • Элемент — основная структурная единица, заключённая в угловые скобки. Каждый элемент должен иметь открывающий (<имя>) и закрывающий (</имя>) теги. Элементы могут быть вложенными, но не должны пересекаться.
  • Пустой элемент — элемент без содержимого, который может быть записан как <имя /> (например, <br />).
  • Корневой элемент — единственный элемент, который содержит все остальные элементы документа. XML-документ обязан иметь ровно один корневой элемент.
  • Атрибут — пара «имя=значение», записываемая внутри открывающего тега. Значение атрибута всегда должно быть заключено в кавычки (одинарные или двойные). Пример: <book id="123">.
  • Текстовое содержимое — данные, расположенные между открывающим и закрывающим тегами элемента.
  • Комментарий — часть документа, игнорируемая при обработке. Записывается как <!-- текст -->.

Правила корректности

Документ считается корректным (well-formed), если он соблюдает следующие правила:

  1. Документ содержит ровно один корневой элемент.
  2. Каждый открывающий тег имеет соответствующий закрывающий тег (кроме пустых элементов).
  3. Элементы правильно вложены (не пересекаются).
  4. Значения атрибутов заключены в кавычки.
  5. Имена элементов и атрибутов чувствительны к регистру (например, <Book> и <book> — разные элементы).
  6. Специальные символы (<, >, &, ', ") в текстовом содержимом и атрибутах заменяются на предопределённые сущности (например, &lt; для <).

Пример простого XML-документа

``xml <?xml version="1.0" encoding="UTF-8"?> <library> <book id="1"> <title>Война и мир</title> <author>Лев Толстой</author> <year>1869</year> </book> <book id="2"> <title>Преступление и наказание</title> <author>Фёдор Достоевский</author> <year>1866</year> </book> </library> ``

В этом примере первая строка — это XML-декларация, которая указывает версию XML и кодировку символов. Она не является обязательной, но рекомендуется для корректной обработки.

Классификация и основные технологии

XML как технология включает в себя не только сам формат, но и ряд сопутствующих стандартов, которые расширяют его возможности.

1. Языки определения схемы

Для описания структуры и ограничений XML-документов используются языки схем:

  • DTD (Document Type Definition) — устаревший, но всё ещё используемый язык, который определяет допустимые элементы, атрибуты и их вложенность. DTD может быть включён в документ или храниться отдельно.
  • XML Schema (XSD) — более мощный и современный стандарт, основанный на XML-синтаксисе. Позволяет задавать типы данных (строки, числа, даты), ограничения на значения, порядок элементов и многое другое.
  • RELAX NG — альтернативный язык схем, который отличается простотой и компактностью.

2. Языки навигации и преобразования

  • XPath (XML Path Language)язык запросов для навигации по элементам и атрибутам XML-документа. Используется для извлечения конкретных фрагментов данных. Например, выражение //book/title вернёт все заголовки книг.
  • XSLT (eXtensible Stylesheet Language Transformations) — язык для преобразования XML-документов в другие форматы (HTML, текст, другой XML). XSLT-процессор применяет шаблоны преобразования к исходному XML-документу.
  • XQuery — язык запросов, предназначенный для извлечения и обработки данных из XML-документов или баз данных, поддерживающих XML.

3. Языки связывания и адресации

  • XLink — стандарт для создания гиперссылок внутри XML-документов, позволяющий связывать несколько документов.
  • XPointer — расширение XPath, которое позволяет указывать на конкретные фрагменты XML-документа.

Применение

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

1. Обмен данными между системами

XML является одним из основных форматов для веб-сервисов. Протокол SOAP (Simple Object Access Protocol) использует XML для кодирования сообщений при вызове удалённых процедур. RESTful-сервисы также часто возвращают данные в формате XML, хотя в последние годы JSON стал более популярным.

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

Многие программные продукты и фреймворки используют XML для хранения настроек. Например:

  • Apache Tomcat — файл server.xml для конфигурации сервера.
  • Spring Framework — файлы applicationContext.xml для определения бинов и зависимостей.
  • Microsoft .NET — файлы web.config и app.config для настройки приложений.

3. Офисные форматы

Современные офисные пакеты, такие как Microsoft Office (форматы Office Open XML — .docx, .xlsx, .pptx) и LibreOffice (формат OpenDocument — .odt, .ods, .odp), используют XML для хранения содержимого документов. Это позволяет легко обрабатывать и извлекать данные из документов программно.

4. Хранение данных

XML может использоваться как лёгкая база данных. Некоторые СУБД, например, PostgreSQL и Oracle, поддерживают тип данных XML и предоставляют функции для запросов к нему (XPath, XQuery). Также существуют специализированные XML-базы данных (например, eXist-db).

5. Публикация и документооборот

В издательском деле и технической документации XML используется для создания единого источника контента, который затем может быть преобразован в различные форматы (PDF, HTML, EPUB) с помощью XSLT. Примером является формат DocBook.

6. Научные и промышленные приложения

В таких областях, как биоинформатика (формат SBML для описания биохимических моделей), геоинформатика (формат GML для географических данных) и промышленность (форматы для обмена данными о продукции), XML является стандартом де-факто.

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

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

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

Недостатки

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

Критика

Основная критика XML связана с его избыточностью и сложностью. В 2000-х годах XML был объявлен «универсальным решением для всех проблем обмена данными», что привело к его чрезмерному использованию даже в тех случаях, где более простые форматы были бы эффективнее. С появлением JSON, который предлагает более компактный синтаксис и лучшую интеграцию с JavaScript, многие разработчики перешли на него для веб-сервисов и конфигурации. Тем не менее, XML остаётся незаменимым в тех областях, где требуется строгая валидация, сложная иерархия данных или поддержка смешанного содержимого (текст с разметкой), например, в документации и издательском деле.

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

  • XML-декларация не является обязательной, но если она присутствует, то должна быть первой строкой документа.
  • Имена элементов в XML могут содержать буквы, цифры, дефисы, подчёркивания и точки, но не могут начинаться с цифры или знака препинания.
  • Существует понятие пространства имён (namespace) в XML, которое позволяет избежать конфликтов имён при объединении документов из разных источников. Пространство имён задаётся атрибутом xmlns.
  • Формат RSS (Really Simple Syndication) для лент новостей основан на XML.
  • В России XML активно используется в государственных информационных системах, например, в электронном документообороте и при обмене данными между налоговыми органами и налогоплательщиками.

Источники

  1. Спецификация XML 1.0 (Fifth Edition) — W3C Recommendation.
  2. «XML: The Complete Reference» — Heather Williamson, McGraw-Hill.
  3. «Learning XML» — Erik T. Ray, O'Reilly Media.
  4. «XML in a Nutshell» — Elliotte Rusty Harold, W. Scott Means, O'Reilly Media.
  5. Документация W3C по XML Schema, XPath, XSLT.

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

На главную BFOmetr →