2010-09-06 5 views
3

Examiner le html pour Googles Privacy Page l'en-tête est:Google confidentialité Page html invalide

<!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> 

Je remarqué qu'il n'y a pas corps étiquette ici ou dans le pied de page. Aussi, pas de fin </html>.

Est-ce un balisage valide?

+2

La plupart des réponses ci-dessous (y compris la mienne) font référence au validateur HTML sur le site Web w3.org. Juste FWIW, méfiez-vous de valider HTML5 avec, le support HTML5 dans le validateur est encore "expérimental". Si cela dit que vous avez quelque chose de mal, vous le faites probablement (mais pas nécessairement); Mais ça peut bien rater des choses invalides ... –

+3

C'est fou, le seul avantage que je peux voir est le "strip tags à la volée pour perdre des octets", à part ça c'est un gros morceau de désordre. – Ben

+1

@Ben: D'accord. Habituez-vous, cependant, toutes sortes de choses sont facultatives à partir de HTML5 (comme la balise 'body', la balise fermante' html' ...). –

Répondre

3

HTML5 (qui est ce qu'ils déclarant page) vous permet d'omettre beaucoup de choses. Par exemple, les balises de début et de fin de la balise body sont toutes deux facultatives, tout comme la balise html de fin (ref).

Le validateur says it's valid, mais le support HTML5 du validateur est également expérimental. YMMV

3

The validation page from validator.w3.org dit c'est valide HTML5.

Mais notez que Google ne se soucie pas vraiment si leurs pages sont valides ou non, à condition qu'elles s'affichent correctement. La page principale de Google (google.com) est truffée de balisage non valide.

0

Si vous l'exécutez à travers le W3C validator vous obtenez que Ce document a été vérifié avec succès comme HTML5!.

0

It is valid HTML5.

Cependant, ce n'est pas XHTML.

+2

* "Cependant, ce n'est pas du XHTML." * Il ne prétend pas l'être. –

+0

@ T.J .: Correct. Mon point est que puisque ce n'est pas XHTML, il n'a pas besoin de balises de fermeture. – SLaks

1

Lecture W3C HTML5 Spec syntax tag omission:

Un tag de l'élément du corps de départ peut être omis si l'élément est vide, ou si la première chose à l'intérieur du corps élément n'est pas un espace ou un commentaire , sauf si la première chose à l'intérieur de l'élément de corps est un script ou un élément de style . La balise d'un élément de corps peut être omise si l'élément de corps n'est pas immédiatement suivi d'un commentaire .

L'étiquette de fin d'un élément html peut être omise si l'élément html n'est pas immédiatement suivi d'un commentaire.

drôle est que l'éditeur du document est Ian Hickson de Google, Inc.

3

HTML allows to omit certain start and/or end tags:

Certains types d'éléments HTML permettent aux auteurs omettent souvent les balises de fin (par exemple, le P et LI types d'éléments). Quelques types d'éléments permettent également d'omettre les balises de début; par exemple, HEAD et BODY. La DTD HTML indique pour chaque type d'élément si la balise de début et la balise de fin sont requises.

Si vous examinez une définition de type de document comme celui des HTML 4.01, les éléments sont déclarés avec le element declarations <!ELEMENT … >. Et dans ces déclarations d'élément, deux caractères spécifient si la balise de début ou de fin d'un élément peut être omise. Voir la definition of P par exemple:

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

Voici le - après le nom de l'élément P indique que la balise de début est nécessaire et le O indique que la balise de fin peut être omise. Un autre exemple, le HEAD element:

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

Voici les deux O précisent que le début et la balise de fin peut être omis.

L'omission des deux balises sur les éléments n'est possible que si ces éléments sont implicites dans leur contexte. En cas de HEAD, le modèle de contenu du parent element HTML est spécifié comme suit:

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

Lorsque l'entité paramètre html.content est défini comme suit:

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

Cela signifie que le modèle de contenu de HTML est implicitement défini comme HEAD suivi de BODY.

Vous pouvez jeter un oeil à la index of HTML 4.01 elements pour voir quelles étiquettes de quels éléments peuvent être omis.

+0

Merci pour l'explication détaillée. – Yehonatan