Je me demandais ce que fait l'attribut xml: lang et quelles sont ses valeurs en HTML5. et l'attribut xml: lang a-t-il des restrictions?Quelqu'un peut-il expliquer ce que fait l'attribut xml: lang en HTML5?
Répondre
Comme le brouillon des normes l'explique en 3.2.3.3 The lang
and xml:lang
attributes, il s'agit de la variante XML de l'attribut standard lang
, qui spécifie le langage naturel du document. Il peut prendre n'importe quelle valeur définie par BCP47. Notez toutefois que vous ne pouvez utiliser l'attribut xml:lang
que si vous avez un document XML ou si vous définissez également l'attribut lang
, et dans le dernier cas, ils doivent avoir la même valeur. En effet, xml:lang
est seulement autorisé à faciliter la transition des anciens documents XHTML:
Les auteurs ne doivent pas utiliser l'attribut lang dans l'espace de noms XML sur des éléments HTML dans les documents HTML. Pour faciliter la migration vers et depuis XHTML, les auteurs peuvent spécifier un attribut dans aucun espace de noms sans préfixe et avec le nom local littéral "xml: lang" sur les éléments HTML dans les documents HTML, mais ces attributs ne doivent être spécifiés que si aucun attribut est également spécifié, et les deux attributs doivent avoir la même valeur lorsqu'ils sont comparés de manière insensible à la casse ASCII.
xml:lang
est un attribut XML, et donc vous ne devez l'utiliser dans les documents XHTML, pas des documents HTML.xml:lang
spécifie la langue lisible par l'homme le contenu est écrit dans
Plus d'infos:. http://www.w3.org/TR/REC-xml/#sec-lang-tag
Pour comprendre l'attribut xml:lang
, vous devez être familier avec les deux syntaxes différentes de HTML5, the HTML syntax and the XHTML syntax:
Il existe plusieurs syntaxes concrètes qui peut être utilisé pour transmettre des ressources qui utilisent ce langage abstrait, dont deux sont définies dans cette spécification .
La première syntaxe concrète est la syntaxe HTML . C'est le format suggéré pour la plupart des auteurs. Il est compatible avec la plupart des navigateurs Web existants. Si un document est transmis avec un HTML MIME type, tel que
text/html
, il sera traité en tant que document HTML par les navigateurs Web. Cette spécification définit la dernière syntaxe HTML , connue simplement comme "HTML".La deuxième syntaxe concrète est la syntaxe XHTML , qui est une application de XML.Lorsqu'un document est transmis avec un XML MIME type, comme
application/xhtml+xml
, il est traité comme un document XML par les navigateurs Web , être analysé par un processeur XML . Il est rappelé aux auteurs que le traitement pour XML et HTML diffère; en particulier, même des erreurs de syntaxe mineures empêcheront un document étiqueté comme XML d'être rendu entièrement, alors qu'ils seraient ignorés dans la syntaxe HTML. Cette spécification définit la dernière syntaxe XHTML, connue simplement comme "XHTML".Le DOM, la syntaxe HTML et XML ne peuvent pas tous représenter le même contenu. Par exemple, les espaces de noms ne peuvent pas être représentés à l'aide de la syntaxe HTML, mais ils sont pris en charge dans le DOM et au format XML . De même, les documents qui utilisent la fonctionnalité
noscript
peuvent être représentés en utilisant la syntaxe HTML, mais ne peuvent pas être représentés par avec le DOM ou en XML. Les commentaires qui contiennent la chaîne "-->
" ne peuvent être représentés dans le DOM, pas dans les syntaxes HTML et XML.
La syntaxe HTML est celle que vous utilisez probablement; il est beaucoup plus tolérant aux erreurs, et la syntaxe XHTML n'est pas supportée nativement par IE. L'attribut xml:lang
est sans signification. Cela ne fait absolument rien. Si vous souhaitez définir la langue, utilisez l'attribut lang
, qui fonctionne également dans la syntaxe XHTML. L'utilisation de l'attribut lang
spécifiera la langue par défaut pour cet élément et ses enfants, ce qui peut être utilisé pour choisir la police à utiliser (vous pouvez utiliser le sélecteur CSS :lang()
pour le contrôler vous-même). Dans la syntaxe HTML, il est autorisé d'inclure l'attribut xml:lang
uniquement si l'attribut lang
est également fourni et a la même valeur; cela garantit qu'aucune confusion ne sera occasionnée par leur différence, et l'attribut lang
est celui auquel le navigateur va faire attention.
Dans la syntaxe XHTML, l'attribut xml:lang
a la sémantique defined by the XML specification. Lors de la détermination de la langue d'un texte, en XHTML, l'attribut xml:lang
est prioritaire, mais s'il n'est pas présent, l'attribut lang
est utilisé pour déterminer la langue (à des fins de sélection de police et du sélecteur CSS :lang()
).
Il est préférable d'utiliser simplement l'attribut lang
. Cela fonctionnera dans la syntaxe HTML que vous utiliserez probablement, et la syntaxe XHTML si vous finissez par l'utiliser. Si vous devez traiter votre code avec des outils XML qui ne comprennent rien au langage HTML et que vous avez besoin de la langue à définir, vous pouvez utiliser l'attribut lang
et l'attribut xml:lang
avec la même valeur, pour vous assurer que tous les outils voir la même langue.
Les valeurs possibles, pour les lang
et xml:lang
, sont BCP47 language tags tels que en-US
pour l'anglais américain, ou sr-Latn-RS
pour le serbe écrit dans un alphabet latin tel qu'il est utilisé en Serbie. Voir la spécification BCP47 pour plus de détails.
Je pense qu'il vaut la peine de clarifier pour les lecteurs occasionnels: La dernière phrase de la réponse de You et le bloc cité s'applique spécifiquement dans les "documents HTML". Mais sachez qu'un document compatible HTML5 n'est peut-être pas un document HTML! Lisez toutes les réponses ci-dessous pour plus de détails. –