关闭斜线之前的空间?

我经常在XML和HTML标签中的斜杠之前看到一个空格。 XHTML换行符可能是典型的例子:

<br />

代替:

<br/>

空间似乎是多余的。 事实上,我认为这是多余的。

写这个空间的原因是什么?

我读过这个空间解决了一些“向后兼容性问题”。 哪些向后兼容性问题? 这些问题是否仍然相关,还是我们为了IE3的兼容性而增加了额外的空间? 是否存在一些关于此的明确答案的规范?

如果不是向后兼容,那么它是否是一个可读性问题? 类似于大开放卷尺大括号的辩论?

void it_goes_up_here() {

int no_you_fool_it_goes_down_there()
{

我当然可以尊重不同的文体观点,所以我很高兴得知写作空间仅仅是品味的问题。


答案是人们希望遵守XHTML1.0规范的附录C. 如果您将XHTML作为text / html提供服务,则只需执行此操作。 大多数人都这么做,因为XHTML的真正的MIME类型(application / html + xml)在Internet Explorer中不起作用。

目前的浏览器都不在乎这个空间。 浏览器对这些东西非常宽容。

过去需要的空间才能确保HTML解析器将尾部斜线视为无法识别的属性。


这些问题是否仍然相关?或者我们是否为了IE3的兼容性而增加了额外的空间?

你很接近 - 这是Netscape 4。

看到其他合理化很有意思,但这就是它的意思。


Netscape 4.80在HTML中显示<br/>了不同的<br/>和<br />的行为

Netscape 4.80的截图支持bobince的答案,显示文档

data:text/html,<title>space</title>foo<br />bar

(左上角,换行符)和

data:text/html,<title>no space</title>foo<br/>bar

(左下角,linebreak被忽略)。


作为回答显示图片

切线相关:事实上,我有一个冗长的回答,用于识别错误理解的SGML规范中古代浏览器的这种不当行为的原因(以及由此导致的包含空间的推荐),即SGML空结束标记(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:空结束标记(NET)说明

    但是,仍然有一些较小的用户代理正确支持空结束标记。 W3C验证器之一是支持它的更为知名的用户代理。

  • (现在无法复制,但支持Lee Kowalkowski关于受此影响的多个浏览器的声明。)

  • XML W3C工作草案07年8月7日 - 最新规范草案,包括DTD代码片段中的空结束标记的引用: NET "/>"
  • 链接地址: http://www.djcxy.com/p/2553.html

    上一篇: Space Before Closing Slash?

    下一篇: why <br /> and not <br/>?