代码之家  ›  专栏  ›  技术社区  ›  Greg Mattes

关闭斜线前的空格?

  •  82
  • Greg Mattes  · 技术社区  · 16 年前

    在XML和HTML标记中,我经常看到结束斜杠前面有一个空格。XHTML换行符可能是典型示例:

    <br />
    

    而不是:

    <br/>
    

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

    写这篇文章的原因是什么?

    我已经读到这个空间解决了一些“向后兼容性问题”,哪些向后兼容性问题?这些问题是否仍然相关,或者为了,比如说,IE3兼容性,我们是否仍在添加额外的空间?是否有一些规范对此有明确的答案?

    如果不是向后兼容,那么这是可读性问题吗?类似于大开花括号辩论?

    void it_goes_up_here() {
    
    int no_you_fool_it_goes_down_there()
    {
    

    我当然可以尊重不同的风格观点,所以我很高兴知道写作空间只是一个品味问题。

    9 回复  |  直到 7 年前
        1
  •  57
  •   Lee Kowalkowski    14 年前

    答案是人们希望坚持 Appendix C of the XHTML1.0 specification . 你只需要做如果你是 serving XHTML as text/html . 大多数人都这样做,因为XHTML真正的mime类型(application/html+xml)在Internet Explorer中不起作用。

    当前的浏览器不关心空间。浏览器对这些东西非常宽容。

    用于确保HTML解析器将尾随斜杠视为未识别属性的空间。

        2
  •  24
  •   bobince    16 年前

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

    你很亲密-是为网景4。

    看到其他的合理化是很有趣的,但这就是它的全部目的。

        3
  •  22
  •   myf    7 年前

    Netscape 4.80 showing different behaviour of <br/> and <br /> in HTML

    支持的 bobince's answer 屏幕截图为 Netscape 4.80 显示文档

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

    (左上角,渲染了linebreak)和

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

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


    作为答案发布以显示图片

    切题相关:事实上,我有一个冗长的答案,在被误解的SGML规范中,找出了古代浏览器行为不当的原因(以及由此产生的包含空间的建议),即 SGML Null End Tag ( NET ) (何处) 1<tag/2/3 等于 1<tag>2</tag>3 所以 1<tag/>2 实际上意味着 1<tag>>2 但我不仅找不到很好的证据和具体的标准版本,我甚至无法掌握适当的标准遵从行为。很少有原始链接可供参考:

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

        4
  •  4
  •   Andrew Hare    16 年前

    不需要,空间是不需要的,但某些旧浏览器必须正确呈现这些标记。正确的方法是没有额外的空间,因为这是XHTML从XML继承的东西。

        5
  •  3
  •   Pesto    16 年前

    在XHTML中,必须关闭br标记, but the space is not necessary . 这是一种风格。在HTML中,br标记不能关闭,因此两者都是错误的。

        6
  •  2
  •   Jim Petkus    16 年前

    空间只是让标签更可读。我是更易于阅读的代码格式的大支持者。像这样的小事情有很长的路要走。如果没有空格,结束标记将与开始标记混合。当我快速阅读代码时,处理它只需要一瞬间的时间。

        7
  •  2
  •   Jim True    10 年前

    如果有一个非常懒惰的HTML编写者在那里,或者他害怕引号。 如果你是他的机器人网页爬虫,请考虑以下内容…

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

    对战

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

    这可能看起来很小,但如果空间不在,看看它能做什么。机器人不知道斜线是URL的一部分还是结束标记的一部分。

        8
  •  0
  •   nicruo    16 年前

    我认为空白是一种强化这个标签是空的并且它自己关闭的想法的方法。

    今天我不再使用空白,因为我从来没有遇到过空白的问题。

        9
  •  -1
  •   M4N    16 年前

    对我来说,这取决于Visual Studio对我的HTML/XML做了什么:-)它是不一致的,但从功能视图来看并不重要(它只是样式问题)。