我很困惑。一位同事让我发现以
/>
结尾的标签(例如 <br />
)仍然可以在 HTML5 中使用。我以为只能用<br>
风格。互联网上所有的“讨论”都是关于使用后者。
有人可以向我解释一下吗?这看起来非常令人困惑并且记录很少。
这又带来了另一个问题:HTML 5 是否被认为是格式良好的 XML?
没有。反例:
这些是有效的 HTML5,但无效的 XHTML5:
一些结束标签可以省略:
<p>First
<p>Second
)
script
逃脱魔法:
<script><a></script>
没有值的属性(布尔属性):
<input type="text" disabled />
请参阅:禁用属性的正确值是多少?
不带引号的属性,例如:
<div data-a=b></div>
隐式开放元素和多个顶级标签。
一些 HTML 元素是隐式创建的。例如。
html
。这允许 HTML 具有“多个顶级元素”:
<!doctype html><title>a</title><p>a</p>
有效的 XHTML 是无效的 HTML:
具有显式结束标记的空元素:
<hr></hr>
CDATA
内部含有无效标签的构造
ENTITY
和其他感叹号结构,允许十亿次笑声:十亿次笑声 XML DoS 攻击是如何工作的?
有效的 HTML 和 XHTML,但含义不同:
£
、©
),XML 只有 5 个(quot
、amp
、apos
、lt
、gt
)。它有一个 XML 序列化,称为 XHTML5。基本上,您可以自由使用 HTML5(HTML 序列化)或 XHTML5(XML 序列化)。规范草案称 HTML5“是大多数作者建议的格式”,主要出于与人们推荐 XHTML 1.1
text/html
相同的原因。
您可以将页面标记为有效的 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
元素)。
在任何情况下,您都不应该期望任何 html 文档(无论版本如何)都是“格式良好的 xml”
html!=xml。
这是一个不同的规范,对于如何解释它有不同的建议(我在这里故意避免使用“规则”这个词)。
HTML 5 规范有足够多的“这样做,但不这样做也没关系”的摇摆语句,任何浏览器都显示相同的东西真是一个奇迹。
HTML5 可以使用或不使用自闭合斜杠编写;它旨在向后兼容 HTML 4.01 和 XHTML 1.0 代码,以便轻松将代码转换为有效的 HTML5。有一种称为 XHTML5 的 XML 序列化,但出于与 IE 浏览器向后兼容的目的,不建议使用它。因此从技术上讲,HTML5 不被认为是格式良好的 XML。