Почему <br/ "> и не <br/" >?

Это одна из тех вещей, которые вы читаете один раз, скажите "ага!". и затем забыть. Точно мое дело.

Почему тег разрыва строки в xhtml предпочтительно написан с пробелом <br />, а не в формате ok <br/>? Я помню, что причина была интересной, и, как вы можете себе представить, ее легко найти с помощью google.

Конечно, это не проблема корректности xml. Из W3C

[44]    EmptyElemTag       ::=      '<' Name (S Attribute)* S? '/>' 

   Empty-element tags may be used for any element which has no content, whether
   or not it is declared using the keyword EMPTY. For interoperability, the 
   empty-element tag should be used, and should only be used, for elements which 
   are declared EMPTY.

Examples of empty elements:

<IMG align="left"  src="http://www.w3.org/Icons/WWW/w3c_home" /> 
<br></br> 
<br/>

Таким образом, пространство в конце является необязательным.

Ответы

Ответ 1

Если я правильно помню это, просто потому, что у некоторых старых браузеров были проблемы с самозакрывающимся тегом без пробела перед косой чертой. В настоящее время я сомневаюсь, что это проблема, но многие разработчики (включая меня) вошли в привычку включать пространство.

Изменить: Ах, вот мы:

http://www.w3.org/TR/xhtml1/#guidelines

Включить пробел перед конечными/и > пустыми элементами, например. <br />, <hr /> и <img src="karen.jpg" alt="Karen" />. Кроме того, используйте синтаксис с минимальным тегом для пустых элементов, например. <br />, поскольку альтернативный синтаксис <br></br>, разрешенный XML, дает неопределенные результаты во многих существующих пользовательских агентах.

Ответ 2

w3c указывает это как грамматику:

EmptyElemTag       ::=      '<' Name (S Attribute)* S? '/>'

Это означает открытую скобку, имя, количество токенов (пробел и атрибут), дополнительное пространство, косую черту и конечный тег. В соответствии с этим оба правильны.

Ответ 3

Некоторые старые браузеры не правильно анализировали элемент без пробела, поэтому большинство веб-разработчиков используют <br />. Я не помню, какие браузеры были неправы, но я считаю, что они просто вымерли.

EDIT: Браузер был Netscape 4.

Ответ 4

В XHTML нет правильного пути. Они формально идентичны в XML. Пробел не имеет значения в этом месте.

Ответ 5

Для XHTML: оба из них. Для HTML4 и более ранних версий:.

Ответ 6

<br /> является действительным (старым) HTML, а <br/> - нет. Если вы используете XHTML как XML, это не имеет значения. Если вы используете его как text/html, тогда он должен быть действительным HTML в дополнение к действительным XHTML. (Зачем служить XHTML как HTML? Поскольку IE не понимает XHTML как XML, и потому, что ни один из основных браузеров не начнет рендеринг XHTML в середине загрузки загружаемого текста, но они будут делать это с HTML. Мой блог медленно загружается не потому, сайт медленный, но потому, что браузер не начнет показывать страницу до тех пор, пока все не будет выбрано. Я ненавижу браузеры.)

Ответ 7

Небольшой фон, чтобы добавить к Мэтту Гамильтону ответ.

По меньшей мере один браузер проблем был Netscape 4. Быстрая проверка показывает, что в этом браузере < br/ > (т.е. нет места) не вызывает разрыв строки. На самом деле, похоже, он ничего не делает. < br/ > (т.е. с пространством) выполняет разрыв строки.

При создании документов Polyglot, которые могут вести себя как XHTML или HTML (Примечание: "вести себя как" - не "действительно" ), необходимо использовать либо < br/ > или <br> </br> . Однако в старых браузерах и даже в современных браузерах при рендеринге страницы в режиме quirks </br> ведет себя как <br> , поэтому <br> </br> производит два разрыва строки.

Ответ 8

Оба <br/> и <br /> верны. Причина, по которой <br /> появилась в первую очередь, заключалась в поддержке старых браузеров, которые не понимали новый синтаксис <br/>. Это действительно хак, где / интерпретируется как атрибут без значения и игнорируется.

Ответ 9

Оба правильные, и оба будут приняты веб-браузерами. Вы также можете сэкономить дополнительный символ и использовать <br/>

Ответ 10

Оба правильные. Но я бы использовал <br /> только для того, чтобы мой код был непротиворечивым... потому что я никогда не напишу

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>

вместо

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

просто для сохранения байта... а вторая версия imho лучше читаема. Но это только вопрос вкуса. Делайте это как хотите, но делайте это последовательно: -)

Ответ 11

Либо все будет отлично. Предполагая, что вы просите евангельские причины, я предпочитаю < br/ >

Ответ 12

Оба правильные.

Ответ 13

<br>. Вы все равно не используете XML.