XML-документы
XML-документы — это структурированные текстовые файлы, данные в которых представлены в формате Extensible Markup Language (XML), предназначенном для хранения и передачи информации в виде, удобном для машинной обработки и чтения человеком. XML-документы следуют строгим синтаксическим правилам, определённым стандартом W3C, и могут быть использованы для описания произвольных предметных областей, от конфигураций программного обеспечения до научных данных и документооборота.
Основные характеристики
Структура и синтаксис
XML-документ состоит из иерархически организованных элементов, каждый из которых заключён в открывающий и закрывающий теги. Теги образуют дерево: корневой элемент содержит все остальные. Пример простого документа:
``xml <книга> <название>Война и мир</название> <автор>Лев Толстой</автор> <год>1869</год> </книга> ``
Ключевые синтаксические правила:
- Каждый открывающий тег должен иметь соответствующий закрывающий (кроме пустых элементов, записываемых как
<тег />). - Теги чувствительны к регистру.
- Атрибуты элементов записываются в открывающем теге в формате
имя="значение". - Документ должен содержать ровно один корневой элемент.
- Все специальные символы (например,
<,>,&) экранируются.
Пролог
В начале XML-документа может располагаться пролог — необязательная декларация, указывающая версию XML и кодировку. Пример:
``xml <?xml version="1.0" encoding="UTF-8"?> ``
Пространства имён
Для избежания конфликтов имён тегов при объединении данных из разных источников используются пространства имён (namespaces). Они задаются атрибутом xmlns:
``xml <root xmlns:book="http://example.com/books" xmlns:auth="http://example.com/authors"> <book:title>1984</book:title> <auth:name>Джордж Оруэлл</auth:name> </root> ``
История и развитие
XML был разработан рабочей группой W3C (World Wide Web Consortium) под руководством Джона Босуорта и других специалистов. Первая версия спецификации (XML 1.0) была опубликована 10 февраля 1998 года. Основной целью создания XML было упрощение и расширение возможностей SGML (Standard Generalized Markup Language) при сохранении его мощи, но с акцентом на лёгкость реализации и интероперабельность в интернете.
В 2004 году вышла вторая редакция XML 1.0, а в 2006 — XML 1.1, которая добавила поддержку новых символов Unicode, но не получила широкого распространения из-за обратной несовместимости. Начиная с 2010-х годов XML постепенно вытесняется в некоторых областях более лёгкими форматами, такими как JSON и YAML, однако остаётся стандартом в корпоративных системах, документообороте и научных публикациях.
Классификация XML-документов
По типу содержимого
- Документы с данными — содержат структурированную информацию (например, конфигурации, базы данных, результаты измерений). Обычно имеют строгую, повторяющуюся структуру.
- Документы с текстом — содержат преимущественно текстовое содержимое с разметкой (например, книги, техническая документация, веб-страницы). В них часто используются смешанное содержимое (текст и дочерние элементы).
По валидности
- Well-formed (правильно сформированные) — документы, соответствующие синтаксическим правилам XML. Любой корректный XML-документ должен быть well-formed.
- Valid (валидные) — документы, которые не только правильно сформированы, но и соответствуют определённой схеме (DTD, XML Schema, Relax NG). Валидность гарантирует, что структура и типы данных соответствуют заданным правилам.
Схемы и валидация
Для описания допустимой структуры XML-документов используются схемы. Основные типы:
DTD (Document Type Definition)
Наиболее старый механизм, унаследованный от SGML. DTD определяет, какие элементы и атрибуты могут присутствовать в документе, а также их вложенность. Пример:
``dtd <!ELEMENT книга (название, автор, год)> <!ELEMENT название (#PCDATA)> <!ELEMENT автор (#PCDATA)> <!ELEMENT год (#PCDATA)> ``
XML Schema (XSD)
Более мощный и современный стандарт, основанный на XML-синтаксисе. Позволяет задавать типы данных (строки, числа, даты), ограничения на значения, а также поддерживает пространства имён. Пример фрагмента XSD:
``xml <xs:element name="год" type="xs:gYear"/> ``
Relax NG
Компактная альтернатива XSD, разработанная для упрощения написания схем. Поддерживает как XML-синтаксис, так и компактный текстовый формат.
Обработка XML-документов
Парсеры
Для чтения и разбора XML-документов используются парсеры, которые делятся на два основных типа:
- DOM (Document Object Model) — загружает весь документ в память в виде дерева объектов. Позволяет произвольный доступ к элементам, но требует больших ресурсов.
- SAX (Simple API for XML) — последовательный, событийно-ориентированный парсер. Читает документ потоком, вызывая обработчики при встрече тегов. Экономит память, но не позволяет возвращаться к уже прочитанным данным.
- StAX (Streaming API for XML) — гибридный подход, предоставляющий курсорный доступ к потоку элементов.
Преобразования (XSLT)
XSLT (Extensible Stylesheet Language Transformations) — язык для преобразования XML-документов в другие форматы (HTML, текст, другой XML). Пример: преобразование XML-данных в веб-страницу.
Запросы (XPath и XQuery)
- XPath — язык для навигации по дереву XML-документа и выборки узлов. Используется в XSLT и XQuery.
- XQuery — более мощный язык запросов, позволяющий извлекать и комбинировать данные из нескольких XML-документов, подобно SQL.
Применение
Программное обеспечение
- Конфигурационные файлы — многие приложения (например, Apache Tomcat, Microsoft Office) используют XML для хранения настроек.
- Обмен данными — XML является основой для веб-сервисов SOAP (Simple Object Access Protocol) и протоколов вроде RSS и Atom.
- Сериализация — преобразование объектов программ в XML-представление для хранения или передачи.
Документооборот
- Офисные форматы — ODF (OpenDocument Format) и OOXML (Office Open XML) основаны на XML-архивах.
- Электронные книги — формат EPUB использует XHTML и XML для разметки содержимого.
- Научные публикации — стандарты JATS (Journal Article Tag Suite) и TEI (Text Encoding Initiative) применяются для разметки статей и рукописей.
Веб-технологии
- Карты сайтов — XML Sitemaps используются для информирования поисковых систем о структуре сайта.
- SVG (Scalable Vector Graphics) — векторная графика в формате XML.
- XHTML — строгая версия HTML, основанная на XML-синтаксисе.
Преимущества и недостатки
Преимущества
- Читаемость — данные могут быть поняты человеком без специальных инструментов.
- Стандартизация — единый стандарт W3C обеспечивает совместимость между различными системами.
- Расширяемость — возможность создавать собственные теги для любой предметной области.
- Поддержка — широкая библиотека инструментов и библиотек для всех популярных языков программирования.
Недостатки
- Избыточность — XML-документы часто содержат много повторяющихся тегов, что увеличивает размер файла по сравнению с JSON или бинарными форматами.
- Сложность обработки — разбор XML требует больше ресурсов, чем разбор более простых форматов.
- Отсутствие встроенных типов данных — все данные в XML по умолчанию являются строками; типизация требует внешних схем.
Интересные факты
- Название XML расшифровывается как Extensible Markup Language (расширяемый язык разметки). В отличие от HTML, у XML нет фиксированного набора тегов.
- Первая версия XML была разработана всего за 11 месяцев — с ноября 1996 по октябрь 1997 года.
- Несмотря на распространение JSON, XML остаётся обязательным стандартом в таких областях, как авиастроение (AECMA), фармацевтика (HL7) и государственный документооборот многих стран.
- В 2020 году W3C опубликовал рекомендацию XML 1.0 Fifth Edition, которая не вносит существенных изменений, но уточняет некоторые аспекты спецификации.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →