Я провел последние два часа, пытаясь выяснить, является ли следующий код допустимым синтаксисом HTML или нет. Но, по крайней мере, использование Google und co не помогло получить достойный ответ. Вот код:
<p style = "font-family: 'Segoe UI Adjusted';">Aloha from Hawaii</p>
Обратите внимание на ', который является HTML-кодом для апострофа '.
Хотя этот пример, кажется, отображается правильно, следующим логическим шагом будет возможность заменить и другие синтаксические символы, например скобки, что приведет к следующему коду:
<p style = "font-family: 'Segoe UI Adjusted';">Beloha from Hawaii</p>
Ну, это определенно ломает код. Так что я немного запутался, является ли первый пример, где заменены только апострофы, допустимым синтаксисом HTML или нет, и если, то почему?
Отвечает ли это на ваш вопрос? Как отобразить необработанный HTML-код на HTML-странице
Итак, поскольку style является атрибутом, объект ' допустим там, поэтому первый пример является допустимым синтаксисом HTML?
@RituparnaWarwatkar, к сожалению, это не отвечает на мой вопрос. Я не хочу экранировать специальные символы синтаксиса, чтобы отображать их в виде текста, я хочу знать, могу ли я использовать объекты HTML для форматирования допустимого синтаксиса HTML. В моем случае, допустимо ли использовать эти объекты для создания окружающих апострофов внутри атрибута стиля.
Что ж, согласно @TimRoberts, я думаю, что наконец-то встал на правильный путь просветления, который привел меня к этому stackoverflow.com/q/12444605/13609359. Большое спасибо за информацию.
@AndyRay, как ни странно, validator.w3.org говорит, что <p style = "font-family: 'Segoe UI Adjusted'">Beloha from Hawaii</p> действителен ^^. Я почти уверен, что валидатор просто думает, что это всего лишь текст, поэтому нет причин предупреждать. По крайней мере, для моего вопроса этот валидатор бесполезен, но я думаю, что для многих других вещей он может быть полезен.
Второй пример также является допустимым HTML, только допустимым HTML для строки <p style = "font-family: 'Segoe UI Adjusted';">Aloha from Hawaii</p>, а не для фактического абзаца.






При отображении браузером текст будет выглядеть следующим образом:
<p style = "font-family: 'Segoe UI Adjusted';">Aloha from Hawaii</p>
Как это отвечает на вопрос ОП?
Вы, кажется, неправильно поняли цель побега. Это тег img:
<img>
Хотя это дословный текст <img>:
<img>
Экранирование символов останавливает их обычную роль в маркировке тегов и вместо этого просто отображает буквальный символ.
Таким образом, это тег p с определенным стилем:
<p style = "font-family: 'Segoe UI Adjusted';">Aloha from Hawaii</p>
Обратите внимание, что вы избежали ' здесь. Если бы мы использовали одинарные кавычки вокруг атрибута, это было бы необходимо, потому что в противном случае атрибут заканчивался бы неэкранированным '. Однако, поскольку в этом случае вы использовали двойные кавычки, это не имеет никакого эффекта.
Это просто буквальный текст <p style = "font-family: 'Segoe UI Adjusted';">Aloha from Hawaii</p>:
<p style = "font-family: 'Segoe UI Adjusted';">Beloha from Hawaii</p>
Экранированные символы не позволяют отображать его как фактический абзац и вместо этого просто отображают специальные символы как символы.
Обе версии являются полностью допустимым HTML, просто допустимым HTML, который представляет разные вещи.
Да, я должен признаться, я был действительно смущен тем фактом, что замена ' сущностями внутри значений атрибутов в порядке и полностью действительна. Я думал, что эти кавычки являются частью синтаксиса HTML, но, насколько я понимаю, само значение атрибута обрабатывается как текст и анализируется механизмом рендеринга, в то время как механизм рендеринга допускает объекты в соответствии со спецификациями. Большое спасибо за более глубокое разъяснение. Я думаю, что ваш ответ в сочетании с stackoverflow.com/q/12444605/13609359 должен помочь и другим немного понять, что происходит под капотом.
Второй недействителен, потому что он используется для отображения html-кода в html-файле. Это называется объектами, и каждый специальный символ имеет один.
Предположим, вы хотите показать html-код абзаца в вашем HTML-файле. Вы не можете показать абзац, пока не преобразуете хотя бы его символы стрелки в объекты. Если вы вставите код абзаца в свой html-файл, он отобразит элемент абзаца, а не код элемента абзаца. Итак, для этой цели используются сущности.
Ваш первый код работает, потому что:
<p style = "font-family: 'Segoe UI Adjusted';">Aloha from Hawaii</p>
Даже если вы удалите апостроф, код будет работать, хотя это плохая практика.
Для получения дополнительной информации: MDN Docs
Таким образом, синтаксический анализатор будет разбивать значение атрибута на куски, разделенные запятой, даже если опускать апострофы? Есть ли где-нибудь ссылка, где я мог бы прочитать об этом? HTML построен так, чтобы прощать почти каждую ошибку, которую можно совершить, но, как вы упомянули, хорошая практика всегда лучше, а знание лучше;)
Их называют «сущностями». Они допустимы в строках и атрибутах, но не в построении тегов.