关闭斜线之前的空间?

Gre*_*tes 87 html xml xhtml coding-style

我经常在XML和HTML标记的结尾斜杠之前看到一个空格.XHTML换行符可能是规范的例子:

<br />
Run Code Online (Sandbox Code Playgroud)

代替:

<br/>
Run Code Online (Sandbox Code Playgroud)

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

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

我已经读到这个空间解决了一些"向后兼容性问题".哪些向后兼容性问题?这些问题是否仍然相关,或者我们是否仍然为IE3兼容性添加额外的空间?是否存在一些关于此的确定答案的规范?

如果不是向后兼容性,那么它是否是可读性问题?类似于Great Open Curly Brace辩论?

void it_goes_up_here() {

int no_you_fool_it_goes_down_there()
{
Run Code Online (Sandbox Code Playgroud)

我当然可以尊重不同的风格意见,所以我很高兴得知,写作空间只是一种品味问题.

Lee*_*ski 60

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

目前没有浏览器关心这个空间.浏览器对这些事情非常宽容.

过去需要的空间是确保HTML解析器将尾部斜杠视为无法识别的属性.

  • 我认为http://www.w3.org/TR/xhtml1/#C_2是这个答案的更精确的链接.因此,似乎XHTML 1.0附录C2实际上是过时的,并且编写空间纯粹是一种品味. (5认同)
  • 实际上真正的mime类型是application/xhtml + xml. (3认同)
  • @JanAagaard:我不知道,如果是这样的话,我会记得它 - 我开始在IE4和Netscape 4上进行网页开发.你所链接的答案也对这个效果有评论,它说它实际上是Netscape 3. (3认同)
  • 您能否更详细地说明“过去”?年份和/或浏览器版本可以,谢谢! (2认同)

myf*_*myf 26

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

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

data:text/html,<title>space</title>foo<br />bar
Run Code Online (Sandbox Code Playgroud)

(左上角,换行符)和

data:text/html,<title>no space</title>foo<br/>bar
Run Code Online (Sandbox Code Playgroud)

(左下角,忽略换行符).


张贴作为答案显示图片

切向相关:其实我有一个冗长的答案识别古老的浏览器的这种不当行为的原因中(和产生的建议,包括空格)误解SGML规范,即SGML空结束标记(NET)(这里1<tag/2/3等于1<tag>2</tag>3这样1<tag/>2实际上意味着1<tag>>2),但不仅我无法找到好的证明和标准的具体版本,我甚至无法掌握适当的标准符合行为.如此少的原始链接供参考:

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


bob*_*nce 24

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

你很亲密 - 它适用于Netscape 4.

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

  • 谢谢!你能为此提供参考吗? (2认同)

And*_*are 5

不,空间不是必需的,但某些较旧的浏览器需要正确呈现这些标签。正确的做法是没有多余的空间,因为这是 XHTML 从 XML 继承的东西。