这个极简的 HTML5 标记有效吗?
Posted
技术标签:
【中文标题】这个极简的 HTML5 标记有效吗?【英文标题】:Is this minimalist HTML5 markup valid? 【发布时间】:2012-08-10 03:26:39 【问题描述】:<!DOCTYPE html>
<meta charset="utf-8">
<body>
Hello, world!
SOURCE FOR CODE
如果是这样,除了删除“Hello, world!”之外是否有任何标签可以删除并且仍然有效,您怎么知道它仍然有效?
【问题讨论】:
嗯,正好缺少一个标签,而另一个标签可以删除。闻起来有点像作业。 @mootinator:来源是这个presentation on D3,我不知道如何链接到幻灯片,所以我只是链接到代码。认为这很有趣,但看起来无效。更重要的是,不,这不是硬件。 啊,不过是出于讨论目的的人为示例 :) 有趣的是它在那个演示文稿中,但实际上不是有效。 Bare minimum HTML5 - is it valid? 的可能重复项——我意识到这是我的问题,它是 -2,但那里的答案比这里的要好得多。 【参考方案1】:这是无效的。要检查它,您可以在 W3C Validator 中运行它
错误是:元素头缺少子元素标题的必需实例。
...
更新
正如 vcsjones 所说,head
元素是可选的。那是title
是必需的。感谢 mootinator 指出body
也是可选的。
所以最简单的有效文档将是:
<!DOCTYPE html>
<title></title>
【讨论】:
明确地说,head
标签是可选的。这是必需的title
标签。在正文前添加title
将清除验证错误。
显然<body>
也是可选的。
-1。 “错误:元素title
不能为空。”【参考方案2】:
(假设 HTML5 的 HTML 语法。)
请注意,在某些情况下,title
元素也是可选的。
来自HTML5’s definition of head
:
title
元素在大多数情况下是必需的子元素,但当更高级别的协议提供标题信息时,例如当 HTML 用作电子邮件创作格式时,在电子邮件的主题行中,title
元素可以省略。
因此,从“更高级别协议”获取标题的文档的最小标记是这样的:
<!DOCTYPE html>
如果文档是iframe
-srcdoc
的值,就是这个(假设容器文档提供了标题):
<html>
对于一个独立的文档,它是这样的(title
元素需要一些实际内容,如noted by kapep,所以“...”只是一个示例):
<!DOCTYPE html>
<title>…</title>
【讨论】:
请注意,对于最后一个 HTML 代码 sn-p,Nu Html checker(WHATWG 当前认可的唯一 HTML 验证器)输出:'警告:考虑将lang
属性添加到 @987654337 @start 标签来声明这个文档的语言。' 所以没有错误和警告的最小文档似乎是:<!DOCTYPE html><html lang="en"><title>…</title>
@Maggyero:提供lang
当然是一件好事,但由于它不是一致性所必需的(因为警告不是错误),它不会是最小的有效文档.【参考方案3】:
标题标签不能为空或仅包含空格。因此,如果文档位于需要标题标签的上下文中,则必须设置有效的标题值。
title content model 被定义为“不是元素间空白的文本”。
“空文本节点和仅由 [空格字符] 序列组成的文本节点”是 inter-element whitespace。空格字符是空格、制表符、换行、换页和回车。
如果标题标签为空,W3C 验证器会抱怨“元素标题不得为空”。验证器只需添加空格就可以了,即使根据规范这是不正确的。
如果你添加另一个非空格字符有效:
<!DOCTYPE html>
<title>x</title>
如果您想伪造一个“空”标题,您可以使用其他空格字符,例如不间断空格或零宽度不间断空格。
【讨论】:
【参考方案4】:Nu Html Checker(WHATWG 唯一的 HTML 验证器 currently endorsed)不会产生任何错误或警告的最小 HTML 文档如下:
<!DOCTYPE html>
<html lang="">
<title>x</title>
【讨论】:
以上是关于这个极简的 HTML5 标记有效吗?的主要内容,如果未能解决你的问题,请参考以下文章