eXtensible HyperText Markup Language, dit XHTML, est un langage de balisage servant à écrire des pages pour le World Wide Web. Conçu à l'origine comme le successeur d'HTML, XHTML se fonde sur la syntaxe définie par XML, plus récente, mais plus exigeante que celle définie par SGML sur laquelle repose HTML : il s'agit en effet de présenter un contenu affichable non seulement par les ordinateurs classiques, mais également sans trop de dégradation par des PDA bien moins puissants.
Comme de nombreux langages fondés sur XML, celui-ci commence par la lettre X, qui représente le mot eXtensible. Ainsi le premier document décrivant officiellement XHTML s'appelle XHTML™ 1.0 The Extensible HyperText Markup Language (« XHTML 1.0 Le langage de balisage hypertexte extensible »). C'est cependant l'abréviation XHTML qui est une marque du World Wide Web Consortium (W3C) et qui est seule utilisée dans les spécifications qui ont suivi la version 1.0.
Les évolutions suivantes divisent le langage XHTML en modules, chacun regroupant un type de fonctionnalités. Cette division est conçue pour permettre d'étendre le format, ou à l'inverse d'en tirer des sous-ensembles adaptés à des contextes spécifiques. Ainsi :
ruby
permettant d'ajouter des annotations aux textes écrits dans les langues idéographiques (japonais, hébreu, chinois…)XHTML 1.0 reformule donc simplement HTML 4 en application de XML 1.0. La syntaxe seule change, aucune fonctionnalité n'ayant été ajoutée ni retirée. La conversion d'un document en HTML 4.01 conforme en XHTML 1.0 peut se faire automatiquement sans perte d'information.
Cet exemple illustre les différences syntaxiques les plus courantes entre un document écrit en HTML 4 et en XHTML 1.0.
Exemple HTML 4
Des éléments comme HTML, HEAD et BODY sont implicites, leurs balises ouvrantes et fermantes sont optionnelles.
De nombreuses balises fermantes sont optionnelles, notamment pour P (paragraphe) et LI (entrée de liste).
Les noms d'éléments et d'attributs peuvent
<EM Class="important">
librementEm>
mélanger majuscules et minuscules.
Certains attributs ont une valeur par défaut
.
Les guillemets ne sont pas
toujours
obligatoires autour des valeurs d'attribut.
Les éléments vides n'ont pas de syntaxe fermante
.
À l'inverse de la syntaxe HTML permissive ci-dessus, le même document doit être « bien formé » pour respecter les règles d'écriture du XHTML :
XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Exemple XHTML 1.0
Tous les éléments doivent être explicitement balisés.
Les balises fermantes ne sont pas optionnelles.
Les noms d'éléments et d'attributs
doivent
être en minuscules.
Tous les attributs doivent avoir une valeur explicite
="checked" value="..." >
.
Les guillemets sont
"important">
toujours obligatoires autour des valeurs d'attribut.
Les éléments vides doivent être fermés
./>