空xml元素混淆 - HTML

时间:2014-01-06 04:02:16

标签: html xml

以下是两个html代码段:

<html>
  <head>
    <title>foo</title>
    <style type="text/css"></style>
  </head>
  <body>
    bar
  </body>
</html>

<html>
  <head>
    <title>foo</title>
    <style type="text/css"/>
  </head>
  <body>
    bar
  </body>
</html>

尝试在Firefox,Chrome或IE中渲染 - 两个代码段的呈现方式不同!但我认为两个版本的空元素是一样的? (样式元素)

3 个答案:

答案 0 :(得分:1)

根据HTML规范,STYLE元素需要结束标记。

  

<强> 14.2.3 Header style information: the STYLE element

     

开始标记:必填,结束标记:必需

所以style的自封闭版本不是正确的HTML文档部分。

答案 1 :(得分:1)

在XML中它是有效的,但你可以调用你的代码片段HTML,而不是。 - 例如在HTML5中(序列化为HTML,而不是XML),您还没有关闭样式元素(忽略斜杠)。

答案 2 :(得分:0)

当作为text / html提供时,它们使用HTML解析器进行解析,该解析器将<style type="text/css"/>视为<style type="text/css">的拼写错误(即,在关闭标记之前忽略斜杠)。这使得文档的其余部分成为style元素的一部分,从而被忽略。 - 这就是为什么XHTML 1.0 appendix C建议“自动关闭”语法(又称“最小化语法”)仅用于具有EMPTY声明内容的元素的原因。

当作为具有XML内容类型的真正XHTML提供时,它们按照XML规则进行相同的处理。但是,在没有xmlns属性的情况下,它们被视为没有样式的通用XML,因此实际上浏览器只是按原样显示XML代码。