Усі статті

XML Entities: екранування символів у XML-документах

Як і HTML, XML використовує кутові дужки й амперсанд для розмітки тегів, тому ці символи не можна вставляти в текстовий вміст «як є» — документ перестане бути валідним XML і парсер видасть помилку замість того, щоб просто проігнорувати проблему.

П’ять обов’язкових entity

На відміну від HTML, у якому визначено сотні іменованих entity, специфікація XML вимагає лише п’ять:

  • &lt; — замість <
  • &gt; — замість >
  • &amp; — замість &
  • &apos; — замість одинарної лапки '
  • &quot; — замість подвійної лапки "

Лапки обов’язково екранувати лише всередині значень атрибутів, а < і & — у будь-якому текстовому вмісті.

Чим XML строгіший за HTML

Браузери зазвичай «пробачають» невалідний HTML і намагаються відобразити сторінку попри помилки. XML-парсери так не роблять: один незекранований амперсанд чи кутова дужка — і весь документ вважається невалідним, а обробка припиняється з помилкою.

Коли це потрібно

  • Підготовка тексту з призначеними для користувача даними перед вставкою в XML-документ (фіди, конфігурації, SOAP-повідомлення).
  • Діагностика: побачити «сирий» текст, захований за entity в отриманому XML.
  • Ручне редагування XML-файлів, де важливо не зламати структуру документа.

Альтернатива entity: секція CDATA

Якщо текстовий блок містить багато спецсимволів (наприклад, фрагмент HTML чи коду всередині XML), зручніше обгорнути його в <![CDATA[...]]> — усередині цієї секції < і & не потребують екранування і сприймаються як звичайний текст. Виняток — послідовність ]]>, яка закриває CDATA і не може зустрічатися у вмісті самої секції.

Спробувати інструмент