Почему сущности HTML надо?

Почему необходимы сущности символов HTML? Какая от них польза? Я не вижу в этом смысла.

6 ответов


две главные вещи.

  1. Они позволяют использовать символы, которые не определены в текущей кодировке. Например, вы можете легально использовать ASCII в качестве кодировки и по-прежнему включать произвольные символы Юникода.
  2. Они позволяют цитировать символы, которые HTML придает особое значение, как отметил Саймон.

"1 < 2" позволяет поместить "


их нет, кроме &, <, >, " и возможно  . Для всех остальных персонажей просто используйте UTF-8.


в SGML и XML они не только для символов. Они являются общим механизмом включения, и их использование для специальных символов является лишь одним из многих случаев.

<!ENTITY signature "<hr/><p>Regards, <i>&myname;</i></p>">
<!ENTITY myname "John Doe">

этот вид сущностей не полезен для веб-сайтов, потому что они работают только в режиме XML, и вы не можете использовать внешний DTD-файл без включения режима "проверки" синтаксического анализа в конфигурации браузера.


объекты могут быть расширены рекурсивно. Это позволяет использовать XML для отказа в атаке Serice называется"миллиардная атака".


Firefox использует сущности внутри (в XUL и таких) для интернационализации и независимых от бренда сообщений (чтобы облегчить жизнь для Flock и IceWeasel):

<!ENTITY hidemac.label "Hide &brandShortName;">
<!ENTITY hidewin.label "Hide - &brandShortName;">

в HTML вам просто нужно &lt;, &amp; и &quot; чтобы избежать неясностей между текстом и разметкой.

все остальные сущности в основном устаревают кодировками Unicode и остаются только как covenience (но хороший текстовый редактор должен иметь макросы / фрагменты, которые могут их заменить).


в XHTML все сущности, кроме основных, проблематичны, потому что не будут работать с автономными синтаксическими анализаторами XML (например,&nbsp; не будет работать).

для анализа всех объектов XHTML вам нужно проверка XML parser (опция обычно называется "разрешить внешние"), которая медленнее и требует настройки каталога DTD. Если вы проигнорируете или испортите свой каталог DTD, вы будете участвовать в ддос консорциума W3C серверы.


символьные сущности используются для представления символов, которые зарезервированы для записи HTML.бывший. ,/, & etc, если вы хотите представить эти символы в своем содержимом, вы должны использовать сущности символов, это поможет синтаксическому анализатору различать содержимое и разметку


вы используете сущности, чтобы помочь парсеру различать, когда символ должен быть представлен как HTML, и что вы действительно хотите показать пользователю, так как HTML зарезервирует для себя специальный набор символов.

набрав это буквально в HTML

Я не это имел в виду сарказм>

приведет к исчезновению тега" ",

например

Я не это имел в виду

поскольку HTML не имеет тега, определенного как таковой. В этом случае использование сущностей позволит правильно отображать текст.

например

нет, правда! сарказм>

дает

нет, правда! сарказм>

по желанию.