谷歌隐私页面html无效

谷歌隐私页面html无效,html,validation,Html,Validation,查看标题的html源代码是: <!DOCTYPE html> <html lang="en"> <meta charset="utf-8"> <title>Google Privacy Center</title> <link rel="stylesheet" href="//www.google.com/css/privacy.css"> <h1><a href="/"><im

查看标题的html源代码是:

<!DOCTYPE html>
<html lang="en">
  <meta charset="utf-8">
  <title>Google Privacy Center</title>
  <link rel="stylesheet" href="//www.google.com/css/privacy.css">
  <h1><a href="/"><img src="//www.google.com/intl/en/images/logo_sm.gif" alt="Google"></a> Privacy Center</h1>

谷歌隐私中心
隐私中心
我注意到这里或页脚中没有body标记。而且,没有结尾

这是有效的标记吗?

说它是有效的HTML5

但请注意,谷歌并不真正关心他们的页面是否是有效的标记,只要它们显示正确。Google的主页(Google.com)充斥着无效的标记。

如果您通过运行,您会发现此文档已成功检查为HTML5

但是,它不是XHTML。

是的,这是HTML5

HTML5(他们将该页面声明为)允许您省略很多内容。例如,
body
标记的开始和结束标记都是可选的,结束
html
标记()也是可选的

验证器,但是验证器对HTML5的支持仍然是实验性的。YMMV阅读:

主体元素的开始标记可以是 如果元素为空或 体内的第一件事 元素不是空格字符或空格 注释,除非第一件事 在body元素中是一个脚本或 样式元素。主体元素的结尾 如果主体元素 不是紧接着一个 评论

html元素的结束标记可以是 如果未指定html元素,则省略 紧接着是评论

有趣的是,文档的编辑是谷歌公司的伊恩·希克森

一些HTML元素类型允许作者省略结束标记(例如
p
LI
元素类型)。一些元素类型也允许省略开始标记;例如,
HEAD
BODY
。HTMLDTD指示每个元素类型是否需要开始标记和结束标记

如果检查文档类型定义(如中的定义),则元素将使用声明。在这样的元素声明中,两个字符指定是否可以省略元素的开始标记或结束标记。请参见以下示例:

<!ELEMENT P - O (%inline;)*            -- paragraph -->
这里的两个
O
指定可以省略开始和结束标记

只有当元素在其上下文中是隐式的时,才可能省略元素上的两个标记。如果是
HEAD
,则父级的内容模型指定如下:

<!ELEMENT HTML O O (%html.content;)    -- document root element -->
<!ENTITY % html.content "HEAD, BODY">

其中,参数实体html.content的定义如下:

<!ELEMENT HTML O O (%html.content;)    -- document root element -->
<!ENTITY % html.content "HEAD, BODY">

这意味着
HTML
的内容模型被隐式定义为
HEAD
,后跟
BODY


您可以查看,看看哪些元素的标签可以省略。

下面的许多答案(包括我的答案)都引用了w3.org网站上的HTML验证程序。只是FWIW,注意用它验证HTML5,验证程序中的HTML5支持仍然是“实验性的”。如果它说你做错了什么,你可能(但不一定)做了;但它很可能会错过无效的东西……这是胡说八道,我能看到的唯一优势是“快速删除标签以丢失字节”,除此之外,这是一个大混乱。@Ben:同意。不过,要习惯它,从HTML5开始,各种事情都是可选的(比如
body
标记,结束
html
标记…)。请注意,它不仅仅是HTML5或HTML4。这些标记在HTML的每个版本中都是可选的(但不是XHTML)。一些亲手编写代码并了解这类知识的人不相信打字是绝对必要的。open
html
标记可能只是用来挂起
lang
属性的。“但是,它不是XHTML。”它也不是声称的那样。@T.J:正确。我的观点是,因为它不是XHTML,所以不需要结束标记。谢谢您的详细解释。