Fenix Industry
UA
+38 (096) 103 00 10 +38 (067) 243 76 88
CONTACTS
ПОРТФОЛИО
УСЛУГИ
КЛИЕНТЫ
КОНТАКТЫ
Написать
Fenix Industry
UA RU
curved-line
ПОРТФОЛИО
УСЛУГИ
КЛИЕНТЫ
СТУДИЯ
БЛОГ
КОНТАКТЫ
+38 (096) 103 00 10+38 (067) 243 76 88
Telegram Telegram Viber Viber Whatsapp Whatsapp
curved-line
Написать нам
Fenix Industry
Contact
sticker-us
+38 (096) 103 00 10 +38 (067) 243 76 88
Telegram Telegram Viber Viber Whatsapp Whatsapp
Написать нам
Главная Блог Терминология Что такое XML

Что такое XML

25.03.2026
Терминология
Что такое XML
Давайте обсудим ваш проект

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

Язык XML

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

Почему XML называют «расширяемым»

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

Физическая и логическая структуры документа

Спецификация разделяет представление документа на физическую и логическую структуру. Это помогает понять, как именно парсер «видит» документ и какие конструкты он обрабатывает.

Физическая структура

С физической точки зрения документ состоит из сущностей (entities) — именованных блоков, содержимое которых представляет собой последовательности символов. Самая верхняя сущность — документная сущность (корень). Составляющие сущности могут ссылаться друг на друга; все они имеют имена (за исключением некоторых специальных сущностей).

Логическая структура

Логическая структура описывает составные части документа: пролог, корневой элемент, элементы, объявления, инструкции обработки, ссылки на сущности и комментарии. Всё это организовано с помощью разметки и определяет семантику XML-документа.

Основные элементы логической структуры

  • Пролог — необязательная часть, где могут располагаться XML-декларация, объявления типа документа и комментарии;
  • Корневой элемент — обязательный для корректного документа; охватывает всё содержимое;
  • Вложенные элементы — элементы могут содержать другие элементы, текст и комментарии;
  • Атрибуты — пары «имя-значение», связанные с элементами.

Символы разметки

Разметка в XML всегда открывается символом < и закрывается символом >. Дополнительная роль принадлежит символу &, который вводит ссылку на сущность или специальную сущность для замены символов, недопустимых в тексте.

Решение проблемы неоднозначности разметки

Чтобы парсер не путал символы разметки с обычным текстом, <, > и & нельзя вставлять прямо в символьные данные или в значение атрибута: для этого используются предопределённые сущности. Аналогично, кавычки и апострофы внутри атрибутов заменяются на соответствующие сущности.

СимволСущность-заменаПримечание
<&lt;Открывающая угловая скобка
>&gt;Закрывающая угловая скобка
&&amp;Амперсанд — вводит сущности
'&apos;Апостроф в значении атрибута
"&quot;Кавычка в значении атрибута

Числовые ссылки на символы

Для обозначения символов по их кодовым позициям используются числовые ссылки двух форм: десятичная &#D; и шестнадцатеричная &#xH;. Это полезно при необходимости вставить символы, не представимые напрямую в выбранной кодировке документа.

  • &#229; — десятичная форма для латинской буквы с диакритикой;
  • &#xE5; или &#Xe5; — та же буква в шестнадцатеричной записи;
  • &#1048; — пример кода для кириллической буквы;
  • &#x6C34; — шестнадцатеричный код китайского иероглифа «вода».

Имена

Имена элементов и атрибутов в XML должны начинаться с буквы или символа подчёркивания (_), далее допускаются буквы Unicode, цифры, дефисы, точки и подчёркивания. Благодаря поддержке Unicode имена могут содержать символы практически любого языка — это ключевой фактор интернационализации.

Пролог

Объявление XML

XML-декларация (обычно запись вида <?xml version="1.0" encoding="UTF-8"?>) указывает версию языка, используемую в документе, и может содержать информацию о кодировке и атрибут standalone. Хотя ранние версии XML допускали отсутствие декларации, современная практика и спецификация предполагают её наличие, особенно когда указана кодировка, отличная от по умолчанию.

Примеры текстового представления декларации (в документе отображаются как текст):

<?xml version="1.1" encoding="UTF-8"?>

<?xml version="1.0" encoding="windows-1251"?>

Атрибут standalone указывает, требуется ли доступ к внешним объявлениям при обработке:

  • standalone="yes" — документ самодостаточен и не требует внешней DTD;
  • standalone="no" — возможно использование внешних деклараций.

Объявление типа документа (DOCTYPE)

Инструкция !DOCTYPE позволяет связать документ с DTD — набором правил, описывающих какие элементы, атрибуты и сущности допустимы. Документ без DTD может быть корректным (well-formed), но считаться невалидным относительно конкретной DTD.

Пример корректного, но невалидного документа (как простой пример существования корневого элемента):

<?xml version="1.0"?>

<greeting>Hello, world!</greeting>

А затем — пример использования внешней DTD:

<?xml version="1.0"?>

<!DOCTYPE greeting SYSTEM "hello.dtd">

<greeting>Hello, world!</greeting>

А также пример с локальным объявлением разметки в DOCTYPE:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE greeting [

  <!ELEMENT greeting (#PCDATA)>

]>

<greeting>Hello, world!</greeting>

Спецификация определяет формальную грамматику пролога и DOCTYPE (в терминах Бэкуса-Наура), что делает определение строгим и пригодным для автоматической валидации. Эксперты и ресурсы вроде официальной спецификации W3C и документации на MDN рекомендуют использовать DTD или XML Schema там, где требуется проверка структурной корректности и семантики.

Инструкции обработки

Инструкции обработки (processing instructions, PI) служат для передачи специальных указаний приложению, обрабатывающему документ. Частый пример — связка с CSS- или XSLT-стилями:

<?xml-stylesheet type="text/css" href="my-style.css"?>

Комментарий

Комментарии в XML начинаются с последовательности <!-- и заканчиваются -->. Внутри комментария недопустима комбинация символов --. Комментарии не рассматриваются как символьные данные документа и не интерпретируются как разметка.

Пример: <!-- это комментарий -->

Корневой элемент

Элемент и его разметка

Элемент — базовый логический блок XML-документа. Каждый элемент определяется парой начального и конечного тега; имена в паре должны совпадать. Существуют также пустые элементы, которые задаются одним тегом со слэшем (<empty />).

Формы тегов:

  • Начальный тег: <element1>
  • Конечный тег: </element1>
  • Тег пустого элемента: <empty_element1 />

Атрибуты могут присутствовать только в начальном теге или теге пустого элемента и задают дополнительные свойства в виде пар «имя-значение».

Пример практического использования XML — хранение рецепта в структурированном виде (в примере ниже теги представлены текстовым образом):

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE recipe>

<recipe name="хлеб" preptime="5min" cooktime="180min">

  <title>Простой хлеб</title>

  <composition>

    <ingredient amount="3" unit="стакан">Мука</ingredient>

    <ingredient amount="0.25" unit="грамм">Дрожжи</ingredient>

    <ingredient amount="1.5" unit="стакан">Тёплая вода</ingredient>

  </composition>

  <instructions>

    <step>Смешать все ингредиенты и тщательно замесить.</step>

    <step>Закрыть тканью и оставить на один час в тёплом помещении.</step>

    <!-- <step>Почитать вчерашнюю газету.</step> -->

    <step>Замесить ещё раз, положить на противень и поставить в духовку.</step>

  </instructions>

</recipe>

Секция CDATA

Если нужно включить фрагмент текста, в котором символы разметки должны трактоваться как обычные символы (например, примеры кода), используется секция CDATA. Она начинается с <![CDATA[ и заканчивается ]]>. Текст внутри CDATA обрабатывается как символьные данные без интерпретации <, > и &.

Корректный документ

Корректный (well-formed) документ соответствует общим правилам синтаксиса XML: правильно вложенные теги, совпадающие имена начального и конечного тегов, корректные сущности и так далее. Несоблюдение хотя бы одного правила делает документ некорректным и парсер не сможет корректно его распознать.

Пространства имён

Для устранения конфликтов при объединении XML-фрагментов из разных словарей используется механизм пространств имён (namespaces). Он позволяет различать одинаковые имена элементов и атрибутов, принадлежащие разным схемам или спецификациям. Большинство руководств по интеграции XML (включая материалы W3C и практические руководства, публикуемые экспертами по XML) подчёркивают необходимость использования пространств имён в крупных проектах и при межсистемном обмене.

Регламентация работы с документами: правила, языки, программные интерфейсы

Эта часть обобщает рекомендации по работе с XML-документами, многие из которых исходят из публикаций W3C и практических руководств по обработке XML. Речь идёт о выборе кодировок, использовании схем валидации, API для парсинга и трансформации (например, SAX, DOM, StAX, XSLT) и правилах безопасной обработки внешних сущностей.

Кодировка документов

Спецификация XML требует поддержки как минимум двух кодировок: UTF-8 и UTF-16. На практике большинство современных систем и сервисов предпочитают UTF-8 как стандарт для обмена данными, поскольку она экономична и совместима с ASCII. В XML-декларации рекомендуется явно указывать кодировку (<?xml encoding="UTF-8"?>), особенно если документ может обрабатываться разными инструментами или в разных локалях. Ресурсы по разработке и стандарты от крупных организаций подтверждают: явное указание кодировки снижает риск ошибок при парсинге.

КритерийРекомендацияКомментарий
Стандартная кодировкаUTF-8Широко поддерживается, рекомендуется для веб-обмена
Обязательность декларацииУказывать при нестандартной кодировкеЕсли декларация отсутствует, версия считается 1.0
Валидация структурыDTD / XML Schema / RELAX NGВыбирать по требованиям проекта

XML — полезные советы и интересные факты

  • Используйте UTF-8 по умолчанию — это облегчает обмен данными между платформами и предотвращает проблемы с кодировкой.
  • CDATA полезна для вставки больших фрагментов кода, но не заменяет корректное экранирование сущностей в остальных местах.
  • Проверяйте well-formed перед тем, как запускать валидацию против схемы — многие ошибки легче исправить на этапе синтаксического анализа.
  • Избегайте внешних сущностей, если не контролируете источник данных — это снижает риск уязвимостей XXE (совет безопасности, который поддерживают эксперты по XML).
  • Используйте пространства имён, когда объединяете фрагменты из разных спецификаций — так вы предотвратите конфликты имён и упростите интеграцию.

Часто задаваемые вопросы

Что такое XML и в чём его отличие от HTML?

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

Когда нужно использовать CDATA?

CDATA применяется для включения фрагментов текста, в которых символы <, > и & должны трактоваться как обычные символы, а не как разметка. Это удобно при вставке примеров кода или больших блоков текста, но следует избегать использования CDATA вместо корректного экранирования в обычных ситуациях.

Как обеспечить корректную обработку XML-документа?

Сначала убедитесь, что документ well-formed: правильно вложенные теги, совпадающие имена начальных и конечных тегов, корректные сущности. Затем при необходимости примените валидацию против DTD или XML Schema для проверки соответствия структурным требованиям.

Какие кодировки поддерживаются и какую выбрать?

Спецификация требует поддержки UTF-8 и UTF-16. На практике рекомендуется UTF-8 как основную кодировку для обмена и хранения XML-файлов; её стоит явно указывать в XML-декларации.

special bg
Следующая
Статья
fenix-emblem
Вернуться
Назад
Терминология
24.09.2025
Что такое фреймворк? curved-line
Следующая
статья
+38 (096) 103 00 10
+38 (067) 243 76 88
footer img
check
Есть идея? Напишите нам
* - поля, обязательные для заполнения
Telegram
Viber
Whatsapp