2011-04-05 51 views
21

我很困惑。一位同事转而指出,以/>结尾的标签仍可以在HTML5中使用,例如<br />。我认为只能使用<br> -style。所有互联网上的“谈话”都是关于使用后者。HTML5是否为有效的XML?

难道有人请给我解释一下吗?这似乎很混乱,记录不完整。

这引出了另一个问题:HTML 5是否被认为是格式良好的XML?

+4

的可能重复的[HTML 5:是


?](http://stackoverflow.com/questions/1946426/html-5-is-it-br-br-or-br) – 2011-04-05 21:09:15

+1

@ GabyakaG.Petrioli不同意重复,因为这是更一般的,不限于'
'。 ;-) – 2016-09-18 17:12:55

+0

不,但是你可以用一种有效的XML编写格式良好的HTML。反之亦然,如果你保持XML简单,它可以是有效的HTML。 – nawfal 2017-02-03 03:25:00

回答

10

它有一个XML序列化,叫做XHTML5。基本上,您可以自由使用HTML5(HTML序列化)或XHTML5(XML序列化)。规范草案说HTML5“是为大多数作者推荐的格式”,主要是出于人们为XHTML 1.1推荐text/html的相同原因。

3

可以使用或不使用自闭合斜线书写HTML5;它的目的是向后兼容HTML   4.01和XHTML   1.0代码,因此很容易将代码转换为有效的HTML5。有称为XHTML5的XML序列化,但为了与IE浏览器的向后兼容性目的,不建议使用它。因此从技术上讲,HTML5是而不是被认为是格式良好的XML。

2

在任何条件下,你应该想到的任何HTML文档(无论版本)是 “良好形成XML

HTML!= XML。

这是一个不同的规范,有不同的建议(我故意避免在这里使用“规则”一词)如何解释它。

HTML 5规范有足够的“这样做,但没关系,”如果你不这样做,“摆动声明,任何浏览器都显示相同的东西是一个奇迹。

+8

符合XHTML标准的页面应该是定义良好的页面。格式良好的XHTML页面旨在使Web浏览器中的分析例程更加简单。但是,HTML和HTML5不一定非常好,尽管如果需要它们也可以。当然,即使是带有XHTML DOCTYPE的页面,也可能由于草率的编码器而不完整,所以这可能是为什么建议使用HTML5规范而不是XHTML5,因为好的浏览器可能支持渲染编码严重的页面。 – Kmeixner 2013-01-04 20:15:16

7

你可以标记您的网页有效HTML5 XHTML5:http://www.w3.org/TR/html-polyglot/

符合一个明确的约束集多语种标记被解释为兼容的,无论它们是否被处理成HTML或XHTML ,根据HTML5规范。

基本的文档可能看起来像:

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 
    <head> 
    <title></title> 
    </head> 
    <body> 
    </body> 
</html> 

当然,你必须遵循一些额外的规则(比如不使用noscript元素,例如),在链接的工作草案概述。

11

No.反例:

这些都是有效的HTML5,但无效XHTML5:

  1. 一些关闭标签可以被省略:

    <p>First 
    <p>Second 
    

    参见:P-end-tag (</p>) is not needed in HTML

  2. script逃生魔术:

    <script><a></script> 
    

    参见:What is CDATA in HTML?

  3. 属性没有值(布尔属性):

    <input type="text" disabled /> 
    

    参见:Correct value for disabled attribute

  4. 属性没有引号,例如:

    <div data-a=b></div> 
    

    参见: In XHTML 1.0 Strict do attribute values need to be surrounded with quotes?

  5. 隐式开放元素和多个顶级元素。

    某些HTML元素是隐式创建的。例如。 html。这使得HTML有 “多个顶级元素”:

    <!doctype html><title>a</title><p>a</p> 
    

    参见:Is it necessary to write HEAD, BODY and HTML tags?

有效的XHTML是无效的HTML:

  1. CDATA构造带内的无效标签

  2. ENTITY层其他感叹号结构,它允许十亿笑道:How does the billion laughs XML DoS attack work?

有效的HTML和XHTML,但具有不同的含义:

  1. HTML有数百个命名字符引用(例如&pound;,&copy;),XML只有5个(quot,amp,apos,lt,gt)。