Кодування
XML Entities Encode/Decode
Кодування та декодування XML-сутностей — 5 стандартних (амперсанд, кутові дужки, апостроф, лапки) і числові посилання на символи.
XML, на відміну від HTML, суворо вимагає екранування п’яти спецсимволів (&, <, >, ', "), інакше документ вважається невалідним. Інструмент кодує й декодує ці сутності, а також числові посилання на символи.
Як користуватися
- Кодування: вставте текст — п’ять зарезервованих символів замінюються на відповідні сутності (&, <, >, ', ").
- Декодування: вставте XML із сутностями, щоб отримати звичайний текст.
- Підтримуються також числові посилання на символи (& чи &) для символів поза стандартними п’ятьма.
Типові сценарії
- Підготовка тексту користувача для вставки в XML-документ (RSS-стрічку, SOAP-запит, конфігураційний файл).
- Діагностика, чому XML-парсер відхиляє документ — часто причина саме в незекранованому амперсанді чи кутовій дужці всередині тексту.
- Декодування вмісту, отриманого з XML-based API, для читання в первинному вигляді.
Що варто памʼятати
XML-парсери значно суворіші за HTML: одна незекранована сутність робить увесь документ невалідним, а не лише спотворює один елемент.
CDATA-секції (<![CDATA[...]]>) — альтернатива екрануванню для великих блоків тексту, що дозволяє вставити довільний вміст без заміни кожного спецсимволу окремо.
Стаття про цей інструмент: XML Entities: екранування символів у XML-документах
Часті запитання
Чим XML-сутності відрізняються від HTML-сутностей?
XML стандартно визначає лише 5 сутностей: <, >, &, ' та ". HTML натомість має набагато ширший набір іменованих сутностей (наприклад чи ©), яких у "чистому" XML просто не існує — там для решти символів використовують числові посилання.
Навіщо взагалі кодувати ці символи в XML?
Символи <, > та & мають спеціальне синтаксичне значення в XML і ламають структуру документа, якщо трапляються в тексті чи атрибуті без екранування. Кодування в сутності дозволяє безпечно зберегти такий вміст, не порушуючи парсинг.
Чим "Основні" сутності відрізняються від "Усіх символів"?
Режим "Основні" кодує лише 5 стандартних XML-сутностей. Режим "Усі символи" додатково перетворює будь-які не-ASCII символи в числові посилання виду &#код;, що корисно для документів у суворо ASCII-кодуванні.
Що таке CDATA і коли його використовувати замість сутностей?
Секція <![CDATA[...]]> дозволяє вставити блок тексту без екранування < і & — зручно для великих фрагментів коду чи HTML усередині XML. Виняток — послідовність ]]>, яка закриває CDATA і не може зустрічатись у самому вмісті.
Чи однаково XML-парсери обробляють невалідні сутності?
Ні, і на відміну від браузерів, які «пробачають» помилки в HTML, XML-парсери суворі: один незекранований амперсанд чи кутова дужка робить увесь документ невалідним, і обробка припиняється з помилкою.