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

Формат XML

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

История

Предшественником XML стал язык SGML (Standard Generalized Markup Language), разработанный в 1980-х годах и ставший международным стандартом (ISO 8879). SGML обладал чрезвычайно широкими возможностями, но был сложен в реализации и использовании. В 1996 году рабочая группа W3C под руководством Джона Босаке начала работу над упрощённой версией SGML, которая должна была сочетать его гибкость с простотой, характерной для набиравшего популярность языка HTML (HyperText Markup Language).

Первая спецификация XML 1.0 была опубликована 10 февраля 1998 года. Она быстро получила широкое распространение благодаря своей универсальности. В 2004 году вышла вторая редакция XML 1.0, а в 2006 году — третья, исправлявшая неточности. Параллельно развивалась версия XML 1.1 (2004 год), которая была менее популярна из-за изменений в правилах обработки символов. На сегодняшний день XML 1.0 остаётся основной стабильной версией формата.

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

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

Элементы

Элемент — основная единица XML. Каждый элемент имеет имя и может содержать текст, другие элементы или быть пустым. Синтаксис элемента:

Пример элемента с содержимым: ``xml <book>Война и мир</book> ``

Атрибуты

Атрибуты задаются внутри открывающего тега и содержат пару «имя=значение». Они используются для метаданных или дополнительных характеристик элемента: ``xml <book id="12345" lang="ru">Война и мир</book> ``

Объявление XML

Документ обычно начинается с пролога — объявления XML, указывающего версию и кодировку: ``xml <?xml version="1.0" encoding="UTF-8"?> ``

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

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

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

Для предотвращения конфликтов имён при объединении данных из разных источников используется механизм пространств имён (XML Namespaces). Пространство имён задаётся атрибутом xmlns: ``xml <root xmlns:fiction="http://example.com/fiction"; xmlns:nonfiction="http://example.com/nonfiction">; <fiction:book>Мастер и Маргарита</fiction:book> <nonfiction:book>Капитал</nonfiction:book> </root> ``

Схемы и валидация

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

DTD (Document Type Definition)

DTD — самый старый способ определения структуры XML. Описывает допустимые элементы, атрибуты и их вложенность. Пример DTD: ``dtd <!ELEMENT library (book+)> <!ELEMENT book (title, author, year)> <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)> <!ELEMENT year (#PCDATA)> ``

XML Schema (XSD)

XML Schema Definition — более мощный и современный стандарт, поддерживающий типы данных, ограничения на значения и наследование. XSD сам является XML-документом.

RELAX NG

RELAX NG — альтернативная схема, отличающаяся простотой и гибкостью. Может быть записана как в XML-синтаксисе, так и в компактном текстовом формате.

Обработка XML

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

DOM (Document Object Model)

DOM-парсер загружает весь XML-документ в память в виде дерева объектов. Это удобно для произвольного доступа к данным, но требует много памяти при работе с большими файлами.

SAX (Simple API for XML)

SAX-парсер читает документ последовательно, вызывая обработчики событий (открытие тега, текст, закрытие тега). Экономит память, но не позволяет возвращаться к ранее прочитанным данным.

StAX (Streaming API for XML)

StAX — потоковый API, в котором приложение само управляет чтением, запрашивая следующее событие. Занимает промежуточное положение между DOM и SAX.

XSLT (eXtensible Stylesheet Language Transformations)

XSLT — язык преобразования XML-документов в другие форматы (XML, HTML, текстовые файлы). Широко используется для генерации веб-страниц и отчётов.

XPath (XML Path Language)

XPath — язык запросов для навигации по дереву XML. Позволяет выбирать узлы по пути, условиям и фильтрам. Является основой для XSLT и XQuery.

Применение

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

Форматы файлов

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

Веб-сервисы

XML долгое время был основой для веб-сервисов:

Промышленность и наука

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

XML активно применяется для конфигурации программного обеспечения:

Критика и альтернативы

Несмотря на широкое распространение, XML имеет ряд недостатков:

Избыточность

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

Сложность обработки

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

Альтернативные форматы

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

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

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

Источники

  1. W3C XML 1.0 Specification (Fifth Edition)
  2. W3C XML Schema Part 1: Structures
  3. W3C XSL Transformations (XSLT) Version 1.0
  4. W3C XML Path Language (XPath) Version 1.0
  5. Elliotte Rusty Harold, W. Scott Means. XML in a Nutshell, O'Reilly Media
  6. David Hunter, Jeff Rafter. Beginning XML, Wrox Press
  7. Документация по XML на сайте Microsoft Developer Network (MSDN)
  8. Стандарт ISO 8879:1986 — Information processing — Text and office systems — Standard Generalized Markup Language (SGML)

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

На главную BFOmetr →