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的截图支持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度来看并不重要(这只是一个风格问题)。