closures斜线之前的空间?

我经常在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的真正的MIMEtypes(application / html + xml)在Internet Explorer中不起作用。

没有当前的浏览器在意这个空间。 浏览器对这些东西是非常宽容的。

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

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

你很近 – 这是Netscape 4。

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

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

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

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

(左上angular,linebreak渲染)和

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

(左下angular,linebreak被忽略)。


作为回答显示图片

切线相关:事实上,我有一个冗长的答案,用于识别古代浏览器的这种不当行为的原因(以及由此产生的build议,以包含空间),被误解为SGML规范,即SGML空结束标记( NET ) (是什么使得x<b>y</b>z等价于x<b/y/z所以x<br/>y实际上是指x<br>>y ),但是我不但没有find好的certificate和标准的具体版本,能够掌握适当的标准遵守行为。 所以很less有原始链接供参考:

  • w3cvalidation器通知提及有问题的结束斜线并指向
  • SGML,HTML,XML和XHTML中的空元素@ http://www.cs.tut.fi/~jkorpela/
  • 谨防XHTML:空结束标记(NET)陈述

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

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

  • XML W3C工作草案07年8月7日 – 最新的规范草案,包括在DTD片段中引用空终止标签: NET "/>"

不,空间不是必需的,但是一些旧的浏览器需要正确渲染这些标签。 正确的做法是没有额外的空间,因为这是inheritance自XML的XHTML。

在XHTML中,br标签必须closures, 但空间不是必需的 。 这是一个风格的东西。 在HTML中,br标签不能closures,所以两者都是错误的。

空间只是使标签更具可读性。 我是格式化更多可读代码的主要支持者。 像这样的小事情还有很长的路要走。 如果没有空格,则标签会与开始标签混合。 我正在快速阅读代码,因此我需要更长时间来处理它。

我认为白色空间是一种强化这个标签是空的并且它自己closures的方法。

今天我不再使用白色空间了,因为我从来没有一个没有空白的问题。

如果有一个非常懒惰的HTML编写器,或者他有恐惧引号的话。 如果您是他的机器人页面爬虫,请考虑以下内容…

<img src=http://myunquotedurl.com/image.jpg />

<img src=http://myunquotedurl.com/image.jpg/>

这可能看起来很小,但看看如果空间不在那里,它可以做些什么。 机器人将不知道斜杠是否是url的一部分或是结束标记的一部分。

对我而言,这取决于视觉工作室用我的HTML / XML做什么:-)这是不一致的,但从function的angular度来看并不重要(这只是一个风格问题)。