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

XML

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

История

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

Первая редакция спецификации XML 1.0 была опубликована 10 февраля 1998 года. В 2006 году вышла вторая редакция, исправляющая некоторые неточности. Параллельно разрабатывалась версия XML 1.1, опубликованная в 2004 году и ориентированная на более широкую поддержку символов Юникода, но она не получила широкого распространения. В 2008 году W3C опубликовал рекомендацию XML 1.0 (Fifth Edition), которая остаётся основной стабильной версией стандарта.

Основные принципы и синтаксис

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

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

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

В этом примере корневой элемент <bookstore> содержит два элемента <book>, каждый из которых имеет обязательный атрибут id и вложенные элементы с текстовым содержимым.

Схемы и пространства имён

DTD (Document Type Definition)

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

XML Schema (XSD)

XML Schema Definition (XSD) — более современный и мощный язык описания структуры, рекомендованный W3C. В отличие от DTD, XSD сам является XML-документом. Он поддерживает:

RELAX NG

RELAX NG — альтернативная система схем, более простая и гибкая, чем XSD, но менее распространённая. Поддерживает два синтаксиса: компактный (собственный) и XML.

Пространства имён (Namespaces)

Пространства имён позволяют избежать конфликтов имён при объединении данных из разных XML-словарей. Они определяются с помощью атрибута xmlns и URI (чаще всего URL). Например:

``xml <root xmlns:book="http://example.com/books"; xmlns:person="http://example.com/persons">; <book:title>Война и мир</book:title> <person:name>Лев Толстой</person:name> </root> ``

Пространства имён критически важны для таких стандартов, как SOAP и XSLT.

Технологии обработки XML

DOM (Document Object Model)

DOM — это интерфейс программирования, который представляет XML-документ в виде древовидной структуры узлов в памяти. Позволяет произвольный доступ к любым элементам, их изменение и добавление. Недостаток — высокое потребление памяти при работе с большими файлами.

SAX (Simple API for XML)

SAX — событийно-ориентированный API, который читает XML-документ последовательно, вызывая функции-обработчики при обнаружении открывающих/закрывающих тегов, текста и других событий. Эффективен для потоковой обработки больших файлов, но не позволяет произвольный доступ к уже прочитанным данным.

StAX (Streaming API for XML)

StAX — промежуточный подход, при котором приложение «вытягивает» (pull) события из парсера, а не ждёт их (как в SAX). Позволяет читать XML с возможностью контроля чтения и более эффективным управлением памятью.

XSLT (eXtensible Stylesheet Language Transformations)

XSLT — язык преобразования XML-документов в другие форматы (XML, HTML, текстовые файлы). Использует шаблоны и выражения XPath для выборки и перестановки элементов. XSLT широко применяется для генерации веб-страниц из XML-данных.

XPath

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

XQuery

XQuery — язык запросов к XML-данным, сочетающий возможности XPath с SQL-подобными конструкциями (FLWOR: for, let, where, order by, return). Используется для извлечения и трансформации данных из XML-баз данных.

Применение

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

Критика и ограничения

Несмотря на широкую распространённость, XML подвергается критике по нескольким причинам:

В ряде приложений XML постепенно вытесняется более лёгкими форматами, такими как JSON, YAML и Protocol Buffers, особенно в веб-разработке и микросервисной архитектуре. Однако XML остаётся стандартом в тех областях, где важна строгая валидация, сложная структура данных и богатый набор сопутствующих технологий (XSLT, XPath, XQuery).

Источники

  1. Брей, Т. и др. «XML 1.0 (Fifth Edition)». Рекомендация W3C, 2008.
  2. Фолли, М. «XML-технологии». Издательство «Вильямс», 2010.
  3. Гарольд, Э. Р., Минс, С. «XML. Справочник». Издательство «Символ-Плюс», 2003.
  4. Стандарт ISO 8879:1986. «Information processing — Text and office systems — Standard Generalized Markup Language (SGML)».
  5. Шен, Л. «XSLT: программирование на языке преобразований XML». O'Reilly Media, 2007.

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

На главную BFOmetr →