XHTML (Extensible HyperText Markup Language) est unlangage de balisage servant à écrire despages pour leWorld Wide Web. Conçu à l'origine comme le successeur deHTML, XHTML se fonde sur la syntaxe définie parXML, plus récente et plus simple que celle définie parSGML sur laquelle repose HTML. Il s'agissait en effet à l'époque de tirer parti des bénéfices techniques attendus de la simplification offerte par XML.
Comme de nombreux langages fondés surXML, celui-ci commence par la lettre X, qui représente le motextensible. Ainsi le premier document décrivant officiellement XHTML s'appelleXHTML 1.0 The Extensible HyperText Markup Language[1] (« XHTML 1.0 Le langage de balisagehypertexte extensible »). C'est cependant l'abréviationXHTML qui est une marque[2] duWorld Wide Web Consortium (W3C) et qui est seule utilisée dans les spécifications qui ont suivi la version 1.0.
XHTML 1.0 reformule simplement HTML 4 en application deXML 1.0. Lasyntaxe 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.
XHTML 1.0 est devenu une recommandation du W3C en 2000[3], et le XHTML 1.1 en 2001[4]. Durant toutes les années 2000, HTML 4 et XHTML sont tous les deux utilisés par les développeurs et interprétés par lesnavigateurs Web.
Cet exemple illustre les différences syntaxiques les plus courantes entre un document écrit en HTML 4 et en XHTML 1.0.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"><title>Exemple HTML 4</title><ul><li>Des éléments comme HTML, HEAD et BODY sont implicites, leurs balises ouvrantes et fermantes sont optionnelles.</li><li>De nombreuses balises fermantes sont optionnelles, notamment pour P (paragraphe) et LI (entrée de liste).<li>Les noms d'éléments et d'attributs peuvent<EMClass="important">librement</Em> mélanger majuscules et minuscules.</li><li>Certains attributs ont une valeur par défaut<inputtype="checkbox"checkedvalue="...">.</li><li>Les guillemets ne sont pas<emclass=important>toujours</em> obligatoires autour des valeurs d'attribut.</li><li>Les éléments vides n'ont pas de syntaxe fermante<imgsrc="i.png"alt="i">.</li></ul>
À l'inverse de la syntaxe HTML permissive ci-dessus, le même document doit être « bien formé »[5] pour respecter les règles d'écriture du XHTML :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><head><title>ExempleXHTML1.0</title></head><body><ul><li>Touslesélémentsdoiventêtreexplicitementbalisés.</li><li>Lesbalisesfermantesnesontpasoptionnelles.</li><li>Lesnomsd'élémentsetd'attributs<emclass="important">doivent</em>êtreenminuscules.</li><li>Touslesattributsdoiventavoirunevaleurexplicite<inputtype="checkbox"checked="checked"value="..."/>.</li><li>Lesguillemetssont<emclass="important">toujours</em>obligatoiresautourdesvaleursd'attribut.</li><li>Lesélémentsvidesdoiventêtrefermés<imgsrc="i.png"alt="i"/>.</li></ul></body></html>
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 :
XHTML1.1 enrichit XHTML1.0 avec l'élémentruby permettant d'ajouter des annotations aux textes écrits dans les langues idéographiques (japonais, hébreu, chinois…)
XHTML BASIC est un sous-ensemble simplifié, destiné à l'adaptation des contenus aux clients légers (mobiles)
La déclaration XML n'est requise que dans quelques conditions d'encodage (jeu de caractères autre qu'UTF-8 en particulier), et lorsque le document est traité en tant que document XML (type de contenuapplication/xhtml+xml). La plupart des documents XHTML 1.0 ne l'exigent donc pas. Il entraîne par ailleurs dans lenavigateur webInternet Explorer 6.0 un mode d'interprétation problématique desCascading Style Sheets et des scriptsJavaScript. Néanmoins, la versionInternet Explorer 8 tend à se rapprocher des autres navigateurs et à se conformer au CSS.
En fonction du jeu de caractères retenu, le document peut donc commencer par l'instruction suivante mise en première ligne :
<?xml version="1.0" encoding="iso-8859-1"?>
Quelques exemples de Déclaration de Type de Documents en XHTML :
La redondance des attributsxml:lang etlang n'est requise qu'en cas de document XHTML 1.0 traité en tant que documenttext/html, selon les recommandations (non normatives) de compatibilité XHTML/HTML. On écrira alors :