Что означает XML
XML расшифровывается как Extensible Markup Language — «расширяемый язык разметки». В 1998 году он получил статус рекомендации W3C. XML описывает данные с помощью тегов, имена которых вы придумываете сами, — именно это и означает «расширяемый». В отличие от HTML, в XML нет заранее заданных тегов: в каталоге могут быть <product> и <price>, в счёте — <item> и <total>.
Небольшой XML-документ выглядит так: <book id="1"><title>XML Basics</title><year>2026</year></book>. XML — это обычный текст, поэтому его может прочитать человек и обработать любой язык программирования. XML только хранит и структурирует данные, сам по себе он ничего не делает. Что означают данные и как их показывать, решают программы.
Правила синтаксиса XML
Любой XML-документ должен соблюдать несколько строгих правил. Документ, который им следует, называется синтаксически корректным (well-formed):
- Есть ровно один корневой элемент, который содержит все остальные элементы.
- Каждый элемент закрыт:
<name>…</name>— или самозакрывающийся, как<br/>. - Элементы правильно вложены:
<b><i>…</i></b>, но никогда<b><i>…</b></i>. - Имена чувствительны к регистру:
<Item>и<item>— разные элементы. - Значения атрибутов всегда заключаются в одинарные или двойные кавычки.
- Символы
&и<в тексте экранируются как&и<. - Необязательное объявление
<?xml version="1.0" encoding="UTF-8"?>должно стоять в самом начале.
Комментарии записываются как <!-- … -->. Валидатор XML проверяет все эти правила за секунду и указывает строку с ошибкой.
Элементы и атрибуты
Элемент — это открывающий тег, содержимое и закрывающий тег: <price>19.90</price>. Элементы могут содержать текст, другие элементы или и то и другое. Атрибут — это пара «имя — значение» внутри открывающего тега: <price currency="EUR">.
| Элемент | Атрибут | |
|---|---|---|
| Пример | <color>red</color> | color="red" |
| Может повторяться | Да | Нет, один раз в элементе |
| Может содержать дочерние элементы | Да | Нет, только текст |
| Порядок важен | Да | Нет |
Распространённое соглашение: элементы используют для самих данных и всего, что может повторяться или иметь структуру, а атрибуты — для метаданных, например идентификаторов, единиц измерения или типов.
Well-formed и валидный XML: в чём разница
Синтаксически корректный (well-formed) XML соблюдает правила синтаксиса — всё остальное парсеры отвергают. Валидный XML синтаксически корректен и вдобавок соответствует схеме, которая определяет, какие элементы и атрибуты допустимы, в каком порядке и с какими типами данных.
- DTD (Document Type Definition) — исходный язык схем, встроенный в XML 1.0. В DTD можно также объявлять сущности, например
. - XSD (XML Schema Definition) сам написан на XML и поддерживает типы данных, например даты и десятичные числа. Для форматов электронных счетов, таких как CFDI, NF-e и UBL, опубликованы XSD-схемы.
Пространства имён XML
Поскольку имена тегов может придумать кто угодно, в двух словарях может встретиться одно и то же имя — например, <title> как название книги и <title> как звание человека. Пространства имён разделяют их, привязывая имена к URI. Атрибут xmlns:cfdi="http://www.sat.gob.mx/cfd/4" объявляет префикс cfdi, поэтому <cfdi:Comprobante> относится к мексиканскому словарю CFDI 4.0. Пространство имён по умолчанию — xmlns="…" без префикса — действует на все элементы без префикса внутри него. URI служит только идентификатором: по нему ничего не загружается.
XML, JSON и HTML: в чём разница
| XML | JSON | HTML | |
|---|---|---|---|
| Назначение | Хранение и обмен структурированными данными и документами | Обмен данными, особенно в веб-API | Отображение веб-страниц |
| Имена тегов или ключей | Задаёте вы сами | Задаёте вы сами | Заданы стандартом HTML |
| Типы данных | Текст, если типы не заданы схемой | Строка, число, boolean, null, массив, объект | Текст |
| Атрибуты | Да | Нет | Да |
| Комментарии | Да | Нет | Да |
| Схемы | DTD, XSD | JSON Schema | – |
| Синтаксические ошибки | Парсеры отвергают документ | Парсеры отвергают документ | Браузеры исправляют сами |
JSON компактнее и напрямую соответствует объектам JavaScript, поэтому большинство веб-API перешли на него. XML остаётся сильным там, где документы сочетают текст и разметку, нужны пространства имён или строгая проверка по схемам, — поэтому налоговые органы, издательства и офисные форматы до сих пор на него опираются.
Что такое XML-файл и чем его открыть
Файл .xml — это обычный текстовый файл с XML-документом, как правило в кодировке UTF-8. Раз это текст, его откроет любой текстовый редактор: «Блокнот» в Windows, TextEdit на Mac или редактор кода, например VS Code. Chrome и Firefox показывают XML-файлы в виде дерева, если перетащить их в окно браузера, а Excel умеет импортировать данные XML в таблицу.
Многие файлы используют XML без расширения .xml: изображения .svg, ленты .rss, схемы .xsd, таблицы стилей .xsl, файлы .config в .NET и файлы .plist в macOS, которые могут храниться в формате XML. Файлы Word, Excel и PowerPoint (.docx, .xlsx, .pptx) — это ZIP-архивы, полные XML-файлов.
Где используется XML
- Карты сайта:
sitemap.xmlсообщает поисковым системам, какие страницы есть на сайте. - Ленты RSS и Atom: новостные сайты, блоги и подкасты публикуют обновления в формате XML.
- SVG: векторная графика в вебе — это XML-документы.
- Офисные файлы: Office Open XML (DOCX, XLSX, PPTX) и OpenDocument (ODT, ODS) — это ZIP-пакеты с XML.
- Электронные счета: CFDI в Мексике и NF-e в Бразилии — это XML-файлы, которые должны быть подписаны электронной подписью и авторизованы, прежде чем обретут юридическую силу; UBL — XML-формат, на котором основан обмен электронными счетами Peppol в Европе и за её пределами.
- Веб-сервисы SOAP: банки, платёжные провайдеры и государственные системы обмениваются XML-сообщениями, описанными в файлах WSDL.
- Android-приложения: макеты, строковые ресурсы и
AndroidManifest.xmlпишутся на XML. - Конфигурация:
pom.xmlв Maven,web.configв .NET и многие другие настройки сборки и серверов.
Часто задаваемые вопросы
Как расшифровывается XML?
Extensible Markup Language — «расширяемый язык разметки». «Расширяемый» означает, что теги вы определяете сами, а «разметка» — что структура записывается в виде тегов вокруг данных.
XML — это язык программирования?
Нет. XML — это формат данных: он описывает и структурирует информацию, но ничего не вычисляет. Для запросов к XML и его преобразования служат родственные технологии — XPath и XSLT.
Используется ли XML сегодня?
Да. Во многих веб-API JSON вытеснил XML, но XML остаётся стандартом для карт сайта, RSS-лент, SVG, офисных документов, макетов Android, SOAP-сервисов и электронных счетов во многих странах.
Обновлено: