Последнее обновление: 25 марта 2025 года

Что такое XML?
XML (Extensible Markup Language) — это язык разметки и формат файла, используемый для хранения, передачи и восстановления данных. Он предоставляет структуру для кодирования информации, делая её как читабельной для человека, так и машинно-читаемой.
Ключевые особенности XML
1. Определяется открытыми стандартами
- Установлен Консорциумом World Wide Web (W3C) в 1998 году в рамках Спецификации XML 1.0.
- Использует строгие правила, чтобы гарантировать, что данные структурированы и легко интерпретируемы.
2. Цели дизайна
- XML разработан с упором на простоту, общность и удобство использования на различных платформах.
- Использует текстовый формат, что делает его легким для чтения и редактирования.
3. Поддержка Unicode
- XML поддерживает Unicode, что позволяет хранить и обрабатывать текст на нескольких языках.
4. Многофункциональность
- Первоначально созданный для документов, XML теперь широко используется для представления данных в различных областях, включая веб-сервисы, API и файлы конфигурации.
5. Схема и API
- Структуры XML могут быть определены с использованием Определения типа документа (DTD), Схемы XML (XSD) или Relax NG.
- Различные API, такие как DOM (Модель объекта документа) и SAX (Простой API для XML), позволяют обрабатывать XML.
6. Общие применения XML
- Обмен данными между различными системами (например, веб-сервисы, API).
- Файлы конфигурации в программных приложениях.
- Хранение структурированной информации (например, RSS ленты, графика SVG, форматы документов, такие как DOCX).
- Веб-разработка (например, XHTML, SOAP, приложения на основе AJAX).
Обзор XML
1. Основная цель XML: Сериализация
Сериализация в XML означает:
- Хранение данных в структурированном формате.
- Передача данных между различными системами.
- Восстановление данных в пригодной для использования форме.
Когда двум системам необходимо обменяться информацией, XML предоставляет стандартизированный формат файла для интероперабельности. Он выступает в роли “лингва франка” для обмена структурированными данными.
2. XML как язык разметки
XML — это язык разметки, что означает, что он:
- Маркирует данные тегами для ясной структуры.
- Организует информацию иерархически.
- Категоризирует данные с использованием метаданных.
Пример:
<book>
<title>Основы XML</title>
<author>Джон Доу</author>
</book>
Здесь <book>
, <title>
, и <author>
— это теги, определяющие элементы данных.
3. Схема XML (XSD) и валидация
Схема XML (XSD) определяет структурные правила для XML-документов.
XML-документы могут быть:
- Корректными → Соответствуют базовым синтаксическим правилам (правильное вложение, закрывающие теги).
- Действительными → Соответствуют правилам схемы (обязательные элементы, правильные типы данных).
Пример правила XSD:
<xs:element name="title" type="xs:string"/>
Это гарантирует, что <title>
должен содержать значение типа string.
4. Типы медиа для XML (RFC 7303)
IETF RFC 7303 определяет типы медиа для передачи данных XML:
- application/xml → Стандартные данные XML.
- application/xml-external-parsed-entity → Разобранные сущности XML.
- application/xml-dtd → Документы DTD XML.
Для форматов на основе XML используется суффикс +xml (например, image/svg+xml
для изображений SVG).
5. XML в сетевых приложениях (RFC 3470 / IETF BCP 70)
IETF BCP 70 (RFC 3470) определяет лучшие практики для использования XML в сетевых приложениях, обеспечивая бесшовную интероперабельность данных между системами.
1. Применения XML
XML — это гибкий язык разметки, предназначенный для обмена данными в Интернете. Его синтаксис повлиял на множество форматов документов и протоколов связи, делая его основополагающей технологией во многих отраслях.
Общие форматы на основе XML:
- Веб-ленты: RSS, Atom
- Офисные документы: Office Open XML, OpenDocument
- Графика и 3D-модели: SVG, COLLADA
- Веб-технологии: XHTML
- Протоколы обмена данными: SOAP, XMPP
- AJAX: Использует XML для асинхронного обмена данными
Отраслевые стандарты, использующие XML:
- Здравоохранение: HL7 (Health Level 7)
- Индустрия туризма: OpenTravel Alliance
- Финансы: FpML (Язык разметки финансовых продуктов)
- Недвижимость и ипотека: MISMO
- Обмен данными правительства: Национальная модель обмена информацией
XML в науке:
В метеорологии XML используется для представления оперативных данных о погоде в соответствии со стандартами IWXXM. Аналогично, Архитектура типов информации Darwin (DITA) — это стандарт XML, широко используемый в издательском деле.
2. Ключевая терминология в XML
Понимание основной терминологии в XML имеет решающее значение для эффективной работы с XML-документами.
Символ
XML-документ — это последовательность символов Unicode. XML 1.1 позволяет использовать практически все символы Unicode, за исключением нулевого символа (U+0000
), который строго запрещен.
Процессор и приложение
- Процессор XML (или парсер) читает и анализирует разметку XML.
- Приложение получает структурированные данные от процессора и действует на них.
Разметка и контент
XML делит символы на разметку и контент:
- Разметка: Включает элементы, атрибуты и сущности (например,
<tag>
и&
). - Контент: Реальные данные внутри элементов.
- Секции CDATA: Позволяют тексту, который не следует интерпретировать как разметку, заключаться в
<![CDATA[ ... ]]>
.
Теги и элементы
- Теги: Разметочные конструкции, заключенные в
< >
.<section>
(Тег начала)</section>
(Тег конца)<line-break />
(Элемент с пустым тегом)
- Элементы: Логические компоненты, определяемые тегами.
- Пример:
<greeting>Привет, мир!</greeting>
- Пример:
Атрибуты
Атрибуты предоставляют метаданные для элементов с использованием пар “имя-значение”. Пример:
<img src="image.jpg" alt="Описание" />
src="image.jpg"
иalt="Описание"
— это атрибуты элемента<img>
.
3. Символы и экранирование в XML
Допустимые символы Unicode в XML
XML-документы разрешают только определенные символы Unicode, чтобы обеспечить правильный анализ.
Допустимые символы в XML 1.0:
- Управляющие символы:
U+0009
(Горизонтальная табуляция)U+000A
(Перевод строки)U+000D
(Возврат каретки)
- Текстовые символы:
U+0020–U+D7FF
U+E000–U+FFFD
U+10000–U+10FFFF
Улучшения XML 1.1:
- Разрешает все управляющие символы U+0001–U+001F, но требует их экранирования.
- Нулевой символ (
U+0000
) остается запрещенным.
4. Кодировка в XML
Общие кодировки XML:
XML поддерживает кодировки на основе Unicode, включая:
- UTF-8 (Рекомендуемое значение по умолчанию)
- UTF-16 (Должна поддерживаться всеми XML-парсерами)
- ASCII, ISO-8859-X (Устаревшие кодировки)
Декларация кодировки в XML:
XML-заголовок может указывать кодировку:
<?xml version="1.0" encoding="UTF-8"?>
- Если кодировка не указана, предполагается UTF-8.
- UTF-16 требует BOM (маркер порядка байтов) для правильного обнаружения.
5. Экранирование специальных символов в XML
Поскольку синтаксис XML резервирует определенные символы, они должны быть экранированы, чтобы избежать конфликтов.
Предопределенные сущности XML:
Символ | Экранированная форма | Пример |
---|---|---|
< (Меньше) | < | I <3 XML → I <3 XML |
> (Больше) | > | x > y → x > y |
& (Амперсанд) | & | AT&T → AT&T |
' (Одинарная кавычка) | ' | "O'Reilly" → O’Reilly |
" (Двойная кавычка) | " | She said "hello" → She said “hello” |
Числовые ссылки на символы:
Для специальных символов, которые нельзя напечатать, используйте числовые ссылки:
- Десятичные:
中 <!-- Китайский символ "中" -->
- Шестнадцатеричные:
中 <!-- Китайский символ "中" -->
- Пример:Отобразится как: I <3 Jörg
<message>I <3 Jörg</message>
Обработка двоичных данных:
XML не поддерживает исходные двоичные данные. Вместо этого используйте Base64 кодирование.
6. Комментарии в XML
Синтаксис комментариев XML:
<!-- Это допустимый XML-комментарий -->
Правила для XML-комментариев:
- Не могут появляться перед декларацией XML.
- Не могут содержать
--
(двойной дефис) внутри комментария. - Ссылки на сущности игнорируются в комментариях.
Пример:
<!-- Это комментарий с символами < и & -->
Заключение
XML является важной технологией для обмена структурированными данными, поддерживая веб-ленты, офисные документы, научные данные и отраслевые стандарты. Понимание ключевой терминологии XML, правил кодировки и механизмов экранирования гарантирует корректные XML-документы, которые правильно функционируют на различных системах.
Следуя лучшим практикам в кодировке символов и экранировании, разработчики могут избежать ошибок синтаксического анализа и обеспечить совместимость в приложениях на основе XML.