Почему сущности HTML надо?
Почему необходимы сущности символов HTML? Какая от них польза? Я не вижу в этом смысла.
6 ответов
две главные вещи.
- Они позволяют использовать символы, которые не определены в текущей кодировке. Например, вы можете легально использовать ASCII в качестве кодировки и по-прежнему включать произвольные символы Юникода.
- Они позволяют цитировать символы, которые HTML придает особое значение, как отметил Саймон.
их нет, кроме &
, <
, >
, "
и возможно
. Для всех остальных персонажей просто используйте 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 вам просто нужно <
, &
и "
чтобы избежать неясностей между текстом и разметкой.
все остальные сущности в основном устаревают кодировками Unicode и остаются только как covenience (но хороший текстовый редактор должен иметь макросы / фрагменты, которые могут их заменить).
в XHTML все сущности, кроме основных, проблематичны, потому что не будут работать с автономными синтаксическими анализаторами XML (например,
не будет работать).
для анализа всех объектов XHTML вам нужно проверка XML parser (опция обычно называется "разрешить внешние"), которая медленнее и требует настройки каталога DTD. Если вы проигнорируете или испортите свой каталог DTD, вы будете участвовать в ддос консорциума W3C серверы.
символьные сущности используются для представления символов, которые зарезервированы для записи HTML.бывший. ,/, & etc, если вы хотите представить эти символы в своем содержимом, вы должны использовать сущности символов, это поможет синтаксическому анализатору различать содержимое и разметку
вы используете сущности, чтобы помочь парсеру различать, когда символ должен быть представлен как HTML, и что вы действительно хотите показать пользователю, так как HTML зарезервирует для себя специальный набор символов.
набрав это буквально в HTML
Я не это имел в виду сарказм>
приведет к исчезновению тега" ",
например
Я не это имел в виду
поскольку HTML не имеет тега, определенного как таковой. В этом случае использование сущностей позволит правильно отображать текст.
например
нет, правда! сарказм>
дает
нет, правда! сарказм>
по желанию.