Неверный HTML, чтобы написать "&" сам по себе? Зачем?

Возможный дубликат:
Мне действительно нужно кодировать '&' как '& amp;' ?

Я знаю, что W3C рекомендует использовать "& amp;" (десятичное число ASCII 38) вместо "&", чтобы избежать путаницы с началом ссылки на символ ", и что прибор предупреждает о" unescaped ", который должен быть записан как & amp; " но, несмотря на эти предупреждения, допустимо написать (скажем) "Tiffany & Co." вместо более осторожных "Тиффани и Ко"?

Я знаю, что приведенный выше пример отображается так, как ожидалось (то есть, одинаково) во всех браузерах, которые я пробовал, но это вопрос синтаксиса для языковых юристов. Мне кажется, что, пока выражение не имеет формы "& blah;", оно должно быть законным. (То же самое с использованием угловых скобок, если вы не пишете "".)

Кроме того, тот факт, что пропуск не считается предупреждением, а unescaped & s, говорит о несоответствии синтаксиса HTML. На самом деле, если мы будем полагаться на умственные способности синтаксического анализатора, пропустить (например) должно быть в порядке, если (незаконченный) список является самой последней частью документа: нет , нет , нет ... нет никакой двусмысленности, верно?

PS: Я только что узнал, что (разумные) угловые скобки без экранирования не приводят к предупреждению в чистоте, но обнаруживаются как ошибки валидатором W3C, в то время как амперсанды без экранирования выдают предупреждения в обоих местах. Пойди разберись...

1 ответ

Решение

Недействительным? Да. Свободный амперсанд внутри HTML-разметки приведет к ошибке синтаксического анализатора.

Могут ли современные браузеры игнорировать ошибку и правильно анализировать? Более вероятный.

Но это искаженный HTML.

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