Я часто видел пробел перед закрывающей косой чертой в тегах XML и HTML. Разрыв строки XHTML, вероятно, является каноническим примером:
<br />
вместо того:
<br/>
Пространство кажется лишним. На самом деле считаю, что это лишнее.
По какой причине написано это пространство?
Я читал, что это пространство решает некоторые «проблемы с обратной совместимостью». Какие проблемы с обратной совместимостью? Эти проблемы по-прежнему актуальны, или мы все еще добавляем лишние пробелы, скажем, для совместимости с IE3? Есть ли какая-то спецификация с окончательным ответом на это?
Если не обратная совместимость, то это проблема читабельности? Похоже на дебаты о Великой открытой фигурной скобке?
void it_goes_up_here() {
int no_you_fool_it_goes_down_there()
{
Я, безусловно, могу уважать различные стилистические мнения, поэтому буду счастлив узнать, что написание пространства - это просто дело вкуса.
источник
Ответы:
Ответ заключается в том, что люди хотят придерживаться Приложения C спецификации XHTML1.0 . Что вам нужно сделать, только если вы обслуживаете XHTML как text / html . Что и делает большинство людей, потому что настоящий MIME-тип XHTML (application / html + xml) не работает в Internet Explorer.
Ни один текущий браузер не заботится о пространстве. Браузеры очень терпимы к этим вещам.
Пространство, необходимое для обеспечения того, чтобы парсеры HTML обрабатывали конечную косую черту как нераспознанный атрибут.
источник
В поддержку ответа bobince со снимком экрана Netscape 4.80, показывающим документы
data:text/html,<title>space</title>foo<br />bar
(вверху слева, отображается разрыв строки) и
data:text/html,<title>no space</title>foo<br/>bar
(внизу слева, перенос строки игнорируется).
Публикация в качестве ответа, чтобы показать картинку
Тангенциально связаны: на самом деле я имел продолжительную ответ , идентифицирующий причину такого недостойного поведения древних браузеров (и в результате рекомендации для включения пространства) в спецификации непонятым SGML, а именно SGML Null End Tag ( NET ) (где
1<tag/2/3
равно1<tag>2</tag>3
так1<tag/>2
будет на самом деле средняя1<tag>>2
), но не только я не смог найти хорошее доказательство и конкретную версию стандарта, я даже не смог понять правильное поведение, соответствующее стандарту. Так мало сырых ссылок для справки:(Невозможно воспроизвести там сейчас, но поддерживает утверждение Ли Ковальковски о нескольких браузерах, затронутых этим.)
NET "/>"
источник
Вы были близки - это для Netscape 4.
Интересно видеть другие рационализации, но это все, для чего он был предназначен.
источник
Нет, пространство не требуется, но некоторые старые браузеры должны правильно отображать эти теги. Правильный способ сделать это - без лишнего места, поскольку это то, что XHTML унаследовал от XML.
источник
В XHTML теги br должны быть закрыты, но пробел не нужен . Это стилистическая вещь. В HTML теги br не могут быть закрыты, поэтому оба неверны.
источник
Пространство просто делает теги более читабельными. Я большой сторонник форматирования для более читаемого кода. Такие мелочи имеют большое значение. Без пробела закрывающий тег сливается с открывающим. Мне требуется немного больше времени, чтобы обработать его, поскольку я быстро читаю код.
источник
Что, если бы там был очень ленивый писатель HTML или, может быть, он боялся кавычек. Если бы вы были его роботом-сканером страниц, подумайте о следующем ...
<img src=http://myunquotedurl.com/image.jpg />
против
<img src=http://myunquotedurl.com/image.jpg/>
Это может показаться маленьким, но посмотрите, что он может сделать, если места нет. Робот не будет знать, является ли косая черта частью URL-адреса или частью закрывающего тега.
источник
Я думаю, что пустое пространство - это способ укрепить идею о том, что этот тег пуст и закрывается.
Сегодня я больше не использую пустое пространство, потому что у меня никогда не было проблем с отсутствием белого пространства.
источник