Вопрос по xml, encoding, html – Зачем нужны символьные объекты HTML?

10

Зачем нужны символьные объекты HTML? Чем они хороши? Я не вижу смысла.

Ваш Ответ

6   ответов
14

1 &lt; 2 позволяет поставить & quot;1 < 2 на вашей странице.

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

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

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
1

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

Печатая это буквально в HTML

I don't mean it like that </sarcasm>

приведет к & lt; / sarcasm & gt; тег исчезнуть,

например

I don't mean it like that

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

например

No, really! &lt;/sarcasm&gt;

дает

No, really! </sarcasm>

по желанию.

3

Символьные объекты используются для представления символов, которые зарезервированы для написания HTML для .ex. & lt ;, & gt ;, /, & amp; и т.д., если вы хотите представить эти символы в вашем контенте, вы должны использовать символьные объекты, это поможет парсеруdistinguish between the content and markup

4

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

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

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

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

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

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

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

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

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

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

Error: User Rate Limit ExceededcharacterError: User Rate Limit Exceededname, externalError: User Rate Limit ExceededparameterError: User Rate Limit Exceeded
7

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

Error: User Rate Limit Exceeded&quot;Error: User Rate Limit Exceeded
22

They let you use characters that are not defined in a current charset. E.g., you can legally use ASCII as the charset, and still include arbitrary Unicode characters thorugh entities. They let you quote characters that HTML gives special meaning to, as Simon noted.
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

Похожие вопросы