Почему нужны элементы HTML-символов?

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

Ответ 1

Две основные вещи.

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

Ответ 2

"1 &lt; 2" позволяет помещать на страницу 1 < 2.

Длинный ответ:

Так как HTML использует '<' для открытия тегов, вы не можете просто набрать '<', если хотите, чтобы это было как текст. Поэтому у вас должен быть способ сказать "Я хочу текст < на моей странице". Кто бы ни разрабатывал HTML (или, на самом деле, SGML, предшественник HTML), решил использовать "& something ;", поэтому вы также можете использовать такие вещи, как неразрывное пространство: "&nbsp;" (пробелы, которые не свертываются или не разрешают разрыв строки). Конечно, теперь вам нужно сказать "&", поэтому вы получите "&amp;"...

Ответ 3

Они не являются, кроме &amp;, &lt;, &gt;, &quot; и, вероятно, &nbsp;. Для всех других символов просто используйте UTF-8.

Ответ 4

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

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

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


Сущности могут быть расширены рекурсивно. Это позволяет использовать XML для атаки Denial of Serice под названием "Billion Laughs Attack".


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

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

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

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


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

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

Ответ 5

Символьные сущности используются для представления символа, зарезервированного для написания HTML for.ex. <, > ,/и т.д., если вы хотите представить эти символы в своем контенте, вы должны использовать символьные сущности, это поможет синтаксическому анализатору различать контент и разметку

Ответ 6

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

Вводя это буквально в HTML

Я не имею в виду это как </sarcasm>

вызовет "</sarcasm> " тег исчезнет, ​​

например.

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

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

например.

Нет, действительно! & Амп; л;/сарказм & GT;

дает

Нет, действительно! </сарказм >

по желанию.