Як і HTML, XML використовує кутові дужки й амперсанд для розмітки тегів, тому ці символи не можна вставляти в текстовий вміст «як є» — документ перестане бути валідним XML і парсер видасть помилку замість того, щоб просто проігнорувати проблему.
П’ять обов’язкових entity
На відміну від HTML, у якому визначено сотні іменованих entity, специфікація XML вимагає лише п’ять:
<— замість<>— замість>&— замість&'— замість одинарної лапки'"— замість подвійної лапки"
Лапки обов’язково екранувати лише всередині значень атрибутів, а < і & — у будь-якому текстовому вмісті.
Чим XML строгіший за HTML
Браузери зазвичай «пробачають» невалідний HTML і намагаються відобразити сторінку попри помилки. XML-парсери так не роблять: один незекранований амперсанд чи кутова дужка — і весь документ вважається невалідним, а обробка припиняється з помилкою.
Коли це потрібно
- Підготовка тексту з призначеними для користувача даними перед вставкою в XML-документ (фіди, конфігурації, SOAP-повідомлення).
- Діагностика: побачити «сирий» текст, захований за entity в отриманому XML.
- Ручне редагування XML-файлів, де важливо не зламати структуру документа.
Альтернатива entity: секція CDATA
Якщо текстовий блок містить багато спецсимволів (наприклад, фрагмент HTML чи коду всередині XML), зручніше обгорнути його в <![CDATA[...]]> — усередині цієї секції < і & не потребують екранування і сприймаються як звичайний текст. Виняток — послідовність ]]>, яка закриває CDATA і не може зустрічатися у вмісті самої секції.