L'attribut xml:lang permet de définir une langue dans laquelle le contenu d'un élément est rédigé.

Cet attribut se déclare dans la DTD (Document Type Definition) par l'intermédaire de la commande suivante :

<!ATTLIST nom_élément xml:lang Type_attribut Valeur>

L'utilisation de l'attribut dans un élément s'effectue comme suit :

<nom_élément xml:lang="code_langue">   Données
<&nom_élément>

Le type d'attribut CDATA (Character DATA) permet de spécifier n'importe quel chaîne de caractères ne comprenant pas de balises XML, à la valeur de l'attribut xml:lang.

<!ATTLIST article xml:lang CDATA #IMPLIED> ...
<article xml:lang="Français canadien">   Texte
</article>

Le type d'attribut NMTOKEN permet d'affecter un nom symbolique à l'attribut en l'occurrence l'abréviation d'un nom de langue.

<!ATTLIST paragraphe xml:lang NMTOKEN 'fr'>

L'énumération permet de limiter les choix de langues à quelques unes parmi des centaines.

<!ATTLIST paragraphe xml:lang (fra|eng|deu|ita|esp) 'fra'>

Les codes de langues sont fournis par différents organismes.

  • L'Organisation internationale de normalisation proposent le code ISO-639.
  • L'INIA (Internet Assigned Numbers Authority) diffusant ces propres codes commençant par i-.
  • Il est également possible de créer son propre jeu de codes de langues. Afin d'éviter toutes confusions ces codes seront précédés de x-.

Enfin, la valeur implicite peut être soit un code de langue par défaut, soit l'un des mots-clés suivants :

Valeur Description
#REQUIRED la valeur d'attribut est requis pour l'élément XML.
#IMPLIED la valeur de l'attribut peut ne pas être spécifié.
#FIXED "valeur" permet de fixer la valeur de l'attribut.
Exemple :
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE journal [
  <!ELEMENT recueil (poème)>
  <!ELEMENT poème (#PCDATA)>
  <!ATTLIST poème xml:lang (fra|eng) #REQUIRED>
]>
<recueil>
  <poème xml:lang="fra">
  Tout objet de beauté est une joie éternelle :
  Le charme en croît sans cesse ; jamais
  Il ne glissera dans le néant, mais il gardera toujours
  Pour nous une paisible retraite, un sommeil
  Habité de doux songes, plein de santé, et qui paisiblement respire.
  </poème>
  <poème xml:lang="eng">
  A thing of beauty is a joy for ever:
  Its loveliness increases; it will never
  Pass into nothingness; but stil will keep
  A bower quiet for us, and a sleep
  Fullof sweet dreams, and health, and quiet breathing.
  </poème>
</recueil>