HTML-страница конфиденциальности Google недействительна - PullRequest
3 голосов
/ 06 сентября 2010

Просмотр html-источника для Googles Privacy Page заголовок:

<!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 . Кроме того, без окончания </html>.

Это допустимая разметка?

Ответы [ 7 ]

3 голосов
/ 06 сентября 2010

HTML5 (то, что они объявляют на этой странице как) позволяет вам пропустить много вещей.Например, начальный и конечный теги body являются необязательными, как и конечный тег html ( ref ).

Валидатор говорит, что он действителен , но поддержка валидатора HTML5 также все еще экспериментальная.YMMV

3 голосов
/ 06 сентября 2010

HTML позволяет пропустить определенные начальные и / или конечные теги :

Некоторые типы элементов HTML позволяют авторам опускать конечные теги (например, типы элементов P и LI). Несколько типов элементов также позволяют опустить стартовые теги; например, HEAD и BODY. HTML DTD указывает для каждого типа элемента, требуются ли начальный тег и конечный тег.

Если вы изучите определение типа документа, например, HTML 4.01 , элементы будут объявлены с помощью объявлений <!ELEMENT … >. И в таких объявлениях элемента два символа указывают, можно ли пропустить начальный или конечный тег элемента. См. определение P, например:

<!ELEMENT P - O (%inline;)*            -- paragraph -->

Здесь - после имени элемента P обозначает, что начальный тег требуется, а O обозначает, что конечный тег может быть опущен. Другой пример, элемент HEAD :

<!ELEMENT HEAD O O (%head.content;) +(%head.misc;) -- document head -->

Здесь два O указывают, что как начальный, так и конечный тег могут быть опущены.

Пропуск обоих тегов на элементах возможен только потому, что такие элементы подразумеваются в их контексте. В случае HEAD модель содержимого родительского элемента HTML указывается следующим образом:

<!ELEMENT HTML O O (%html.content;)    -- document root element -->

Где параметр сущности html.content определяется следующим образом:

<!ENTITY % html.content "HEAD, BODY">

Это означает, что модель содержимого HTML неявно определяется как HEAD, за которым следует BODY.

Вы можете взглянуть на индекс элементов HTML 4.01 , чтобы увидеть, какие теги каких элементов можно опустить.

3 голосов
/ 06 сентября 2010

На странице проверки с validator.w3.org говорится, что это правильный HTML5.

Но учтите, что Google на самом деле не волнует, верна ли их страница верной разметки или нет, еслиони отображаются правильно.Главная страница Google (google.com) пронизана неверной разметкой.

1 голос
/ 06 сентября 2010

Чтение W3C HTML5 Spec упущение синтаксического тега :

Начальный тег элемента тела может быть опущен, если элемент пустой или если первым элементом в элементе тела являетсяне пробел или комментарий, за исключением случаев, когда первым элементом внутри элемента body является элемент script или style.Конечный тег элемента body может быть опущен, если за элементом body не сразу следует комментарий.

Конечный тег элемента html может быть опущен, если за элементом html сразу не следует комментарий.

Забавно, что редактором документа является Ян Хиксон из Google, Inc.

0 голосов
/ 06 сентября 2010
0 голосов
/ 06 сентября 2010

Это действительно HTML5 .

Однако это не XHTML.

0 голосов
/ 06 сентября 2010

Если вы запустите его через W3C-валидатор , вы получите Этот документ был успешно проверен как HTML5! .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...