Это допустимый синтаксис HTML?

Я провел последние два часа, пытаясь выяснить, является ли следующий код допустимым синтаксисом HTML или нет. Но, по крайней мере, использование Google und co не помогло получить достойный ответ. Вот код:

<p style = "font-family: &#39;Segoe UI Adjusted&#39;;">Aloha from Hawaii</p>

Обратите внимание на &#39;, который является HTML-кодом для апострофа '.

Хотя этот пример, кажется, отображается правильно, следующим логическим шагом будет возможность заменить и другие синтаксические символы, например скобки, что приведет к следующему коду:

&#60;p style = "font-family: &#39;Segoe UI Adjusted&#39;;"&#62;Beloha from Hawaii&#60;/p&#62;

Ну, это определенно ломает код. Так что я немного запутался, является ли первый пример, где заменены только апострофы, допустимым синтаксисом HTML или нет, и если, то почему?

Их называют «сущностями». Они допустимы в строках и атрибутах, но не в построении тегов.

Tim Roberts 20.07.2023 06:11

Отвечает ли это на ваш вопрос? Как отобразить необработанный HTML-код на HTML-странице

Rituparna Warwatkar 20.07.2023 06:13
stackoverflow.com/a/2820460/14027764 думаю, вот ваш ответ
Rituparna Warwatkar 20.07.2023 06:13

Итак, поскольку style является атрибутом, объект &#39; допустим там, поэтому первый пример является допустимым синтаксисом HTML?

Slevin 20.07.2023 06:13

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

Slevin 20.07.2023 06:19
validator.w3.org
Andy Ray 20.07.2023 06:27

Что ж, согласно @TimRoberts, я думаю, что наконец-то встал на правильный путь просветления, который привел меня к этому stackoverflow.com/q/12444605/13609359. Большое спасибо за информацию.

Slevin 20.07.2023 06:29

@AndyRay, как ни странно, validator.w3.org говорит, что &#60;p style = "font-family: &#39;Segoe UI Adjusted&#39;"&#62;Beloha from Hawaii&#60;/p&#62; действителен ^^. Я почти уверен, что валидатор просто думает, что это всего лишь текст, поэтому нет причин предупреждать. По крайней мере, для моего вопроса этот валидатор бесполезен, но я думаю, что для многих других вещей он может быть полезен.

Slevin 20.07.2023 06:36

Второй пример также является допустимым HTML, только допустимым HTML для строки <p style = "font-family: 'Segoe UI Adjusted';">Aloha from Hawaii</p>, а не для фактического абзаца.

mousetail 20.07.2023 08:36
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
9
71
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

При отображении браузером текст будет выглядеть следующим образом:

<p style = "font-family: 'Segoe UI Adjusted';">Aloha from Hawaii</p>

Как это отвечает на вопрос ОП?

DarkBee 20.07.2023 08:53
Ответ принят как подходящий

Вы, кажется, неправильно поняли цель побега. Это тег img:

<img>

Хотя это дословный текст <img>:

&lt;img&gt;

Экранирование символов останавливает их обычную роль в маркировке тегов и вместо этого просто отображает буквальный символ.

Таким образом, это тег p с определенным стилем:

<p style = "font-family: &#39;Segoe UI Adjusted&#39;;">Aloha from Hawaii</p>

Обратите внимание, что вы избежали ' здесь. Если бы мы использовали одинарные кавычки вокруг атрибута, это было бы необходимо, потому что в противном случае атрибут заканчивался бы неэкранированным '. Однако, поскольку в этом случае вы использовали двойные кавычки, это не имеет никакого эффекта.

Это просто буквальный текст <p style = "font-family: 'Segoe UI Adjusted';">Aloha from Hawaii</p>:

&#60;p style = "font-family: &#39;Segoe UI Adjusted&#39;;"&#62;Beloha from Hawaii&#60;/p&#62;

Экранированные символы не позволяют отображать его как фактический абзац и вместо этого просто отображают специальные символы как символы.

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

Да, я должен признаться, я был действительно смущен тем фактом, что замена ' сущностями внутри значений атрибутов в порядке и полностью действительна. Я думал, что эти кавычки являются частью синтаксиса HTML, но, насколько я понимаю, само значение атрибута обрабатывается как текст и анализируется механизмом рендеринга, в то время как механизм рендеринга допускает объекты в соответствии со спецификациями. Большое спасибо за более глубокое разъяснение. Я думаю, что ваш ответ в сочетании с stackoverflow.com/q/12444605/13609359 должен помочь и другим немного понять, что происходит под капотом.

Slevin 20.07.2023 09:31

Второй недействителен, потому что он используется для отображения html-кода в html-файле. Это называется объектами, и каждый специальный символ имеет один.

Предположим, вы хотите показать html-код абзаца в вашем HTML-файле. Вы не можете показать абзац, пока не преобразуете хотя бы его символы стрелки в объекты. Если вы вставите код абзаца в свой html-файл, он отобразит элемент абзаца, а не код элемента абзаца. Итак, для этой цели используются сущности.

Ваш первый код работает, потому что:

<p style = "font-family: &#39;Segoe UI Adjusted&#39;;">Aloha from Hawaii</p>

Даже если вы удалите апостроф, код будет работать, хотя это плохая практика.

Для получения дополнительной информации: MDN Docs

Таким образом, синтаксический анализатор будет разбивать значение атрибута на куски, разделенные запятой, даже если опускать апострофы? Есть ли где-нибудь ссылка, где я мог бы прочитать об этом? HTML построен так, чтобы прощать почти каждую ошибку, которую можно совершить, но, как вы упомянули, хорошая практика всегда лучше, а знание лучше;)

Slevin 20.07.2023 09:57

Другие вопросы по теме