Пробел перед закрытием Slash?

Я часто видел пробел перед закрывающей косой чертой в тегах XML и HTML. Разрыв строки XHTML, вероятно, является каноническим примером:


вместо:

 

Пространство кажется излишним. На самом деле, я думаю, что это лишнее.

В чем причина написания этого пространства?

Я читал, что пространство решает некоторые проблемы обратной совместимости. Какие проблемы обратной совместимости? Являются ли эти проблемы все еще актуальными или мы все еще добавляем дополнительные пробелы ради, скажем, совместимости с 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 обрабатывали конечную косую черту как непризнанный атрибут.

Являются ли эти проблемы по-прежнему актуальными или мы все еще добавляем дополнительные пробелы ради, скажем, совместимости с IE3?

Вы были близки – это для Netscape 4.

Интересно видеть другие рационализации, но для этого все было предназначено.

Netscape 4.80 демонстрирует различное поведение <br /> и <br /> в HTML”> </p>
<p>  Поддержка ответа bobince с снимком экрана <strong>Netscape 4.80</strong> с документами </p>
<pre> <code>data:text/html,<title>space</title>foo<br />bar</code> </pre>
<p>  (вверху слева, рендеринг строк) и </p>
<pre> <code>data:text/html,<title>no space</title>foo<br />bar</code> </pre>
<p>  (в левом нижнем углу, игнорирование строки). </p>
<hr />
<p>  Проводка в качестве ответа, чтобы показать изображение </p>
<p>  Тангенциально связаны: на самом деле у меня был длинный ответ, определяющий причину такого неправильного поведения древних браузеров (и результирующая рекомендация включать пространство) в непонятные спецификации SGML, а именно SGML Null End Tag ( <em>NET</em> ) (где <code>1<tag /2/3</code> 2/3 равно <code>1<tag>2</tag>3</code> поэтому <code>1<tag></tag>2</code> самом деле означает <code>1<tag>>2</tag></code> ), но не только я не смог найти хорошую доказательство и конкретную версию стандарта, я даже не смог чтобы понять надлежащее стандартное поведение.  Так мало ссылок для ссылки: </tag></code></p>
<ul>
<li>  В уведомлении валидатора w3c упоминается проблематичная закрывающая косая черта и указывается на </li>
<li>  Пустые элементы в SGML, HTML, XML и XHTML @ <a href=http://www.cs.tut.fi/~jkorpela/

  • Остерегайтесь XHTML: Null End Tags (NET), заявив, что

    Тем не менее, есть еще некоторые более мелкие пользовательские агенты, которые должным образом поддерживают Null End Tags. Одним из наиболее известных пользовательских агентов, которые его поддерживают, является валидатор W3C.

  • (Невозможно воспроизвести его сейчас, но поддерживает заявление Ли Ковалковски о нескольких браузерах, затронутых этим.)

    • XML W3C Working Draft 07-Aug-97 - проект последних спецификаций, который включает ссылку Null End Tag в fragmentе DTD: NET "/>"

    Нет, пространство не требуется, но некоторым старым браузерам необходимо правильно их обработать. Правильный способ сделать это без лишнего пространства, поскольку это то, что XHTML унаследовал от XML.

    В XHTML tags br должны быть закрыты, но пространство не требуется . Это стилистическая вещь. В HTML, tags br не могут быть закрыты, поэтому оба ошибочны.

    Пространство просто делает метки более читабельными. Я большой сторонник форматирования для более читаемого кода. Маленькие вещи, как это, долгий путь. Без пространства закрывающий тег смешивается с открывающим тегом. Мне нужно всего лишь мгновение дольше, чтобы обработать его, поскольку я быстро читаю код.

    Что, если бы там был очень ленивый html писатель или, может быть, он боялся кавычек. Подумайте о следующем, если вы были его роботом-роботом …

    против

    Это может показаться небольшим, но посмотрите, что он может сделать, если пространства там нет. Робот не будет знать, является ли косая черта частью URL-адреса или части закрывающего тега.

    Я думаю, что пробел – это способ укрепить идею о том, что этот тег пуст, и он закрывается.

    Сегодня я больше не использую пустое пространство, потому что у меня никогда не было проблем без пробелов.

    Для меня это зависит от того, что визуальная студия делает с моим HTML / XML 🙂 Это непротиворечиво, но это не имеет значения из функционального представления (это только вопрос стиля).