Ils ne sont pas répétitifs. L'espace de noms XML pour XHTML et la déclaration doctype ne sont pas identiques. Les attributs xml:lang
et lang
ne le sont pas non plus. Le XHTML 1.0 specification exige que tous ces éléments soient inclus.
la liste d'attributs de l'élément <html>
comme décrit par le XHTML 1.0 Strict DTD est la suivante:
<!ATTLIST html
%i18n;
id ID #IMPLIED
xmlns %URI; #FIXED 'http://www.w3.org/1999/xhtml'
>
(où %i18n
est une entité interne qui représente les attributs de l'internationalisation xml:lang
, lang
et dir
, voir ci-dessous)
Notez la quatrième ligne. Il est dit que xmlns
est un attribut d'une valeur d'URI donnée, et a été corrigé à cet URL d'espace de noms. Cela signifie que si vous omettez l'attribut ou lui donnez un espace de noms différent, votre document est XHTML strict non valide.
L'entité %i18n
correspond à ces attributs:
<!-- internationalization attributes
lang language code (backwards compatible)
xml:lang language code (as per XML 1.0 spec)
dir direction for weak/neutral text
-->
<!ENTITY % i18n
"lang %LanguageCode; #IMPLIED
xml:lang %LanguageCode; #IMPLIED
dir (ltr|rtl) #IMPLIED"
>
L'attribut lang
est pour la compatibilité ascendante (à savoir HTML ≤ 4.01), et xml:lang
est décrit par XML 1.0 (donc l'espace de noms xml
vu ici). Je ne suis pas trop sûr de la raison exacte pour laquelle xml:lang
devrait précéder lang
, mais il est logique étant donné que XHTML est simplement "reformulé" HTML en syntaxe XML (pour ainsi dire). L'attribut dir
par défaut est ltr
(texte de gauche à droite) s'il n'est pas spécifié, il ne s'agit donc pas d'un attribut obligatoire.
Et en effet, le point # 4 – developmentalinsanity
Lien pour la spécification XHTML 1.0 est http://www.w3.org/TR/xhtml1/#docconf – BoltClock