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-документ состоит из элементов, представленных тегами, которые могут содержать атрибуты и вложенные элементы. Ключевые правила синтаксиса включают:
- Строгая вложенность тегов: каждый открывающий тег должен быть закрыт соответствующим закрывающим тегом, причём порядок закрытия должен быть обратным порядку открытия.
- Чувствительность к регистру: теги
<Book>и<book>считаются разными. - Наличие корневого элемента: документ должен содержать ровно один корневой элемент, внутри которого находятся все остальные.
- Корректные имена элементов: имена должны начинаться с буквы, символа подчёркивания или двоеточия и не могут содержать пробелов.
- Специальные символы: символы
<,>,&,'и"в содержимом элементов и значениях атрибутов должны записываться с помощью предопределённых сущностей (<,>,&,',") или секций CDATA.
Пример простого 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 получил широкое распространение в различных областях информационных технологий:
- Веб-сервисы: протокол SOAP (Simple Object Access Protocol) использует XML для кодирования сообщений при удалённом вызове процедур.
- Форматы файлов: многие приложения используют XML для хранения настроек и данных. Примеры: Microsoft Office (форматы DOCX, XLSX, PPTX), OpenDocument, SVG (масштабируемая векторная графика), RSS/Atom (ленты новостей).
- Базы данных: существуют специализированные XML-базы данных (например, eXist-db, BaseX), а также поддержка XML-типов в реляционных СУБД (PostgreSQL, Oracle, Microsoft SQL Server).
- Обмен данными (B2B): XML служит основой для протоколов электронной коммерции (ebXML) и взаимодействия между корпоративными информационными системами.
- Конфигурация программного обеспечения: файлы конфигурации в Java-приложениях (web.xml, pom.xml), на платформе .NET (app.config, web.config).
- Разметка текстов: язык DocBook для технической документации, TEI для гуманитарных наук (оцифровка литературных произведений).
Критика и ограничения
Несмотря на широкую распространённость, XML подвергается критике по нескольким причинам:
- Избыточность: XML-документы содержат много повторяющихся тегов и атрибутов, что увеличивает размер файлов по сравнению с бинарными форматами или более компактными текстовыми форматами (например, JSON).
- Сложность синтаксиса: строгие правила (корректные имена, закрытие тегов, экранирование) делают написание вручную неудобным.
- Производительность: синтаксический разбор XML требует значительных вычислительных ресурсов, особенно для больших документов.
- Отсутствие поддержки современных типов данных в базовом стандарте: хотя XSD решает эту проблему, она требует дополнительной схемы.
В ряде приложений XML постепенно вытесняется более лёгкими форматами, такими как JSON, YAML и Protocol Buffers, особенно в веб-разработке и микросервисной архитектуре. Однако XML остаётся стандартом в тех областях, где важна строгая валидация, сложная структура данных и богатый набор сопутствующих технологий (XSLT, XPath, XQuery).
Источники
- Брей, Т. и др. «XML 1.0 (Fifth Edition)». Рекомендация W3C, 2008.
- Фолли, М. «XML-технологии». Издательство «Вильямс», 2010.
- Гарольд, Э. Р., Минс, С. «XML. Справочник». Издательство «Символ-Плюс», 2003.
- Стандарт ISO 8879:1986. «Information processing — Text and office systems — Standard Generalized Markup Language (SGML)».
- Шен, Л. «XSLT: программирование на языке преобразований XML». O'Reilly Media, 2007.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →