Пробел Перед Закрытием Слэш?
Я часто видел пробел, предшествующий закрывающей косой черте в тегах XML и HTML. Разрыв строки XHTML, вероятно, является каноническим примером:
<br />
вместо:
<br/>
пространство кажется излишним. На самом деле, я думаю, что это лишнее.
в чем причина написания этого пространства?
Я читал, что пространство решает некоторые "проблемы обратной совместимости."Какие проблемы обратной совместимости? Заключаться в том вопросы по-прежнему актуальны, или мы все еще добавляем дополнительные пространства ради, скажем, совместимости IE3? Существует ли какая-то спецификация с окончательным ответом на это?
Если не обратная совместимость, то это проблема читаемости? Похоже на Великую открытую дискуссию о фигурной скобке?
void it_goes_up_here() {
int no_you_fool_it_goes_down_there()
{
Я, конечно, могу уважать различные стилистические мнения, поэтому я буду рад узнать, что писать все это дело вкуса.
9 ответов:
ответ заключается в том, что люди хотят придерживаться приложение C спецификации XHTML1. 0. Что вам только нужно сделать, если вы служение XHTML как текст / html. Что большинство людей делают, потому что реальный тип MIME XHTML (application/html+xml) не работает в Internet Explorer.
ни один текущий браузер не заботится о пространстве. Браузеры очень терпимы к этим вещам.
пространство, необходимое для обеспечения обработки HTML-парсерами трейлинга Слэш как непризнанный атрибут.
эти проблемы все еще актуальны или мы все еще добавляем дополнительные пространства ради, скажем, совместимости IE3?
Вы были близки - это для Netscape 4.
интересно увидеть другие рационализации, но это все, для чего он был предназначен.
поддержка bobince это С скриншоты Netscape 4.80 показывать документы
data:text/html,<title>space</title>foo<br />bar
(вверху слева, linebreak rendered) и
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
), но я не только не смог найти хорошее доказательство и конкретную версию стандарта, я даже не смог понять правильное поведение, соответствующее стандарту. Так мало необработанных ссылок для справки:
- W3C валидатор уведомление упоминания проблемного закрытия косой черты и указывая на
- пустые элементы в SGML, HTML, XML и XHTML @ www.cs.tut.fi / ~jkorpela/
- остерегайтесь XHTML: Null End Tags (NET) о том, что
тем не менее, есть еще несколько небольших пользовательских агентов, которые правильно поддерживают Теги Null End. Одним из наиболее известных пользовательских агентов, поддерживающих его, является валидатор W3C.
(Не удается воспроизвести там сейчас, но поддерживает ли Заявление ковальковского о нескольких браузерах, затронутых этим.)
- XML W3C рабочий проект 07-Aug-97 - последние спецификации проект, который включает в себя ссылку на нулевой конец тега в DTD фрагмент:
NET "/>"
нет, пространство не требуется, но это необходимо для некоторых старых браузеров, чтобы правильно отобразить эти теги. Правильный способ сделать это без дополнительного пространства, так как это то, что XHTML наследуется от XML.
в XHTML теги br должны быть закрыты,но пробел не нужен. Это стилистическая вещь. В HTML теги br не могут быть закрыты, поэтому оба неверны.
пространство просто делает теги более читаемыми. Я большой сторонник форматирования для более читаемого кода. Такие мелочи имеют большое значение. Без пробела закрывающий тег сливается с открывающим тегом. Это займет всего мгновение больше времени для меня, чтобы обработать его, как я быстро читаю код.
что, если там был очень ленивый html-писатель или, может быть, он боялся кавычек. Рассмотрим следующее, Если вы были его робот-искатель страниц...
<img src=http://myunquotedurl.com/image.jpg />
и
<img src=http://myunquotedurl.com/image.jpg/>
Это может показаться небольшим, но посмотрите, что он может сделать, если пространство не существует. Робот не будет знать, является ли косая черта частью url или частью закрывающего тега.