English

Экранирование символов в XML: амперсанд и кавычки

XSDHub · 4 ноября 2026 года

Причина и контекст

В текстовом содержимом XML амперсанд начинает ссылку на сущность или символ. Поэтому обычное название компании A & B нельзя вставлять в элемент без экранирования. Запись & представляет один амперсанд после разбора документа. Пример с голым символом отклоняется парсером ещё до проверки схемы.

Что проверить в документе

Знак меньше начинает разметку, поэтому в обычном тексте его записывают как <. Знак больше обычно допустим, однако последовательность ]]> запрещена в обычных символьных данных. Для единообразия генераторы часто используют >. Не заменяйте угловые скобки настоящих тегов: тогда вместо структуры получится текст с изображением разметки.

Разбор примера

В значениях атрибутов дополнительно учитывайте выбранные ограничивающие кавычки. Внутри двойных кавычек двойную кавычку передают через ", внутри одинарных — через '. Экранирование текста и экранирование атрибутов решают близкие задачи, но требуют разных наборов замен. Надёжнее поручить сериализацию XML-библиотеке, чем последовательно заменять строки вручную.

Как найти источник ошибки

Повторное экранирование меняет данные. Если готовую последовательность & обработать ещё раз, появится &, а получатель увидит буквальные символы «&». Проверяйте результат после разбора, а не только исходную строку. Успешный синтаксис сам по себе не обнаружит такое смысловое искажение.

Особые случаи

Секция CDATA позволяет записывать амперсанды и угловые скобки как текст, но не допускает внутри закрывающую последовательность ]]> и не отменяет запрет управляющих символов. Она также не создаёт вложенные XML-элементы. Применяйте её только там, где схема и получатель ожидают текстовое значение.

Порядок исправления

Откройте синтаксический режим, сравните два примера и исправьте ровно один амперсанд. После исправления проверьте отображаемое значение в системе получателя. Предопределённые сущности работают без DTD; объявлять внешние сущности для этой задачи не требуется и в локальном инструменте запрещено.

Воспроизведите результат

Открыть инструмент для этих примеров. Сначала проверьте вариант с ошибкой, затем исправленный документ. Выберите проверку синтаксиса без схемы.

XML с ошибкой — ожидается отказ

<company>A & B</company>

Исправленный XML — ожидается успех

<company>A &amp; B</company>

Спецификация

Первоисточник W3C (English)