关闭斜线之前的空间?
我经常在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的截图支持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验证器之一是支持它的更为知名的用户代理。
(现在无法复制,但支持Lee Kowalkowski关于受此影响的多个浏览器的声明。)
NET "/>"