我经常在XML和HTML标记的结尾斜杠之前看到一个空格.XHTML换行符可能是规范的例子:
代替:
这个空间似乎是多余的.事实上,我认为这是多余的.
写这个空间的原因是什么?
我已经读到这个空间解决了一些"向后兼容性问题".哪些向后兼容性问题?这些问题是否仍然相关,或者我们是否仍然为IE3兼容性添加额外的空间?是否存在一些关于此的确定答案的规范?
如果不是向后兼容性,那么它是否是可读性问题?类似于Great Open Curly Brace辩论?
void it_goes_up_here() { int no_you_fool_it_goes_down_there() {
我当然可以尊重不同的风格意见,所以我很高兴得知,写作空间只是一种品味问题.
答案是人们希望坚持附录XHTML1.0规范Ç.如果您将XHTML作为text/html提供,则只需要执行此操作.大多数人都这样做,因为XHTML的真实MIME类型(application/html + xml)在Internet Explorer中不起作用.
目前没有浏览器关心这个空间.浏览器对这些事情非常宽容.
过去需要的空间是确保HTML解析器将尾部斜杠视为无法识别的属性.
支持bobince的答案,屏幕截图显示Netscape 4.80文档
data:text/html,space foo
bar
(左上角,换行符)和
data:text/html,no space foo
bar
(左下角,忽略换行符).
张贴作为答案显示图片
切向相关:其实我有一个冗长的答案识别古老的浏览器的这种不当行为的原因中(和产生的建议,包括空格)误解SGML规范,即SGML空结束标记(NET)(这里1
1
这样1
实际上意味着1
),但不仅我无法找到好的证明和标准的具体版本,我甚至无法掌握适当的标准符合行为.如此少的原始链接供参考:
w3c验证器通知提到有问题的结束斜线并指向
SGML,HTML,XML和XHTML中的空元素@ www.cs.tut.fi/~jkorpela/
谨防XHTML:Null End Tags(NET)陈述,即
但是,仍有一些较小的用户代理正确支持Null End Tags.支持它的一个更着名的用户代理是W3C验证器.
(现在无法重现,但支持Lee Kowalkowski关于受此影响的多个浏览器的声明.)
XML W3C Working Draft 07-Aug-97 - 最新规范草案,其中包括DTD片段中Null End Tag的引用:NET "/>"
这些问题是否仍然相关,或者我们是否仍然为IE3兼容性添加了额外的空间?
你很亲密 - 它适用于Netscape 4.
看到其他的理性化很有意思,但这就是它的意思.