HTML5 有效的 XML 吗?

问题描述 投票:0回答:5

我很困惑。一位同事让我发现以

/>
结尾的标签(例如
<br />
)仍然可以在 HTML5 中使用。我以为只能用
<br>
风格。互联网上所有的“讨论”都是关于使用后者。

有人可以向我解释一下吗?这看起来非常令人困惑并且记录很少。

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

html xhtml
5个回答
53
投票

没有。反例:

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

  1. 一些结束标签可以省略:

    <p>First
    <p>Second
    

    参见:HTML 中不需要 P 结束标签 (

    )

  2. script
    逃脱魔法:

    <script><a></script>
    

    请参阅:HTML 中的 CDATA 是什么?

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

    <input type="text" disabled />
    

    请参阅:禁用属性的正确值是多少?

  4. 不带引号的属性,例如:

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

    参见:在 XHTML 1.0 Strict 中,属性值需要用引号引起来吗?

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

    一些 HTML 元素是隐式创建的。例如。

    html
    。这允许 HTML 具有“多个顶级元素”:

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

    参见:是否需要写HEAD、BODY和HTML标签?

有效的 XHTML 是无效的 HTML:

  1. 具有显式结束标记的空元素:

    <hr></hr>
    

    参见:HTML 5:是

    还是

  2. CDATA
    内部含有无效标签的构造

  3. ENTITY
    和其他感叹号结构,允许十亿次笑声:十亿次笑声 XML DoS 攻击是如何工作的?

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

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

11
投票

它有一个 XML 序列化,称为 XHTML5。基本上,您可以自由使用 HTML5(HTML 序列化)或 XHTML5(XML 序列化)。规范草案称 HTML5“是大多数作者建议的格式”,主要出于与人们推荐 XHTML 1.1

text/html
相同的原因。


11
投票

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

根据 HTML5 规范,满足一组明确定义的约束的多语言标记被解释为兼容,无论它们是作为 HTML 还是 XHTML 处理。

基本文档可能如下所示:

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

当然,您必须遵循链接工作草案中概述的一些附加规则(例如,不要使用

noscript
元素)。


5
投票

在任何情况下,您都不应该期望任何 html 文档(无论版本如何)都是“格式良好的 xml

html!=xml。

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

HTML 5 规范有足够多的“这样做,但不这样做也没关系”的摇摆语句,任何浏览器都显示相同的东西真是一个奇迹。


3
投票

HTML5 可以使用或不使用自闭合斜杠编写;它旨在向后兼容 HTML 4.01 和 XHTML 1.0 代码,以便轻松将代码转换为有效的 HTML5。有一种称为 XHTML5 的 XML 序列化,但出于与 IE 浏览器向后兼容的目的,不建议使用它。因此从技术上讲,HTML5 被认为是格式良好的 XML。

© www.soinside.com 2019 - 2024. All rights reserved.