Екранування в XML: амперсанд, дужки та лапки

XSDHub · 4 листопада 2026 року

Що означає проблема

Амперсанд у XML починає посилання на сутність або символ. Тому назву A & B не можна просто записати між початковим і кінцевим тегами. Запис A & B є коректним: після синтаксичного аналізу одержувач отримує звичайний амперсанд. Саме цю різницю демонструють два приклади нижче, для яких схема не потрібна.

З чого почати перевірку

Символ < відкриває розмітку, тож у текстових даних використовуйте &lt;. Символ > переважно дозволений без заміни, однак послідовність ]]> не може бути звичайним текстовим вмістом. Не екрануйте дужки справжніх тегів: замість дерева елементів отримаєте текстове представлення XML, яке вже не відповідає очікуваній структурі.

Як працює приклад

Для атрибутів набір необхідних замін залежить від обмежувальних лапок. Подвійну лапку всередині значення в подвійних лапках передають як &quot;, а одинарну в одинарних — як &apos;. Використовуйте засіб серіалізації XML, який розрізняє текстовий вузол і значення атрибута. Ланцюжок ручних замін легко обробляє власний результат повторно.

На що звернути увагу

Подвійне екранування не завжди спричиняє синтаксичну помилку. Наприклад, &amp;amp; успішно читається, але дає буквальний текст &amp; замість одного амперсанда. Порівнюйте значення після розбору документа зі значенням у вихідній системі. Самого повідомлення про коректний синтаксис недостатньо, щоб виявити спотворення даних через повторну серіалізацію.

Як застосувати виправлення

Секція CDATA дозволяє вміст із дужками та амперсандами, але завершується послідовністю ]]> і не дозволяє заборонених керувальних символів. Вона також не перетворює текст на вкладені елементи. Для звичайного найменування компанії достатньо стандартного екранування без DTD. Перевірте обидва документи, виправте амперсанд і простежте, щоб експорт з інших систем не виконував цю саму заміну вдруге.

Перевірте приклади самостійно

Відкрити безкоштовний інструмент. Порівняйте помилковий і виправлений документи. Використовуйте режим синтаксису XML.

XML з помилкою — очікується відмова

<company>A & B</company>

Виправлений XML — очікується успіх

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

Першоджерело

Специфікація W3C (English)

English · Русский