XHTML (Extensible HyperText Markup Language) is een strengere versie van HTML die herschreven is om de regels van XML te volgen. In de praktijk betekent dat: elke tag moet gesloten zijn, elementen moeten netjes genest zijn, attributen hebben aanhalingstekens nodig en alles staat in kleine letters. Het was een poging om webpaginas schoner en voorspelbaarder te maken.
Zie het als het verschil tussen een appje en een formeel contract. Een appje is nog steeds te begrijpen als je een komma overslaat of een zin half afmaakt. Een contract heeft regels: mist er één handtekening, dan is het geheel ongeldig. XHTML behandelde HTML als dat contract, dus één niet-gesloten tag kon de hele pagina laten weigeren.
Die strengheid was de bedoeling en meteen ook het probleem. Het duwde ontwikkelaars richting nettere code, wat goed samenging met CSS voor de opmaak. Maar op het echte web, waar paginas rommelig zijn en browsers veel vergeven, voelde de alles-of-niets-aanpak nogal zwaar. HTML5 verving het uiteindelijk en hield de goede gewoontes zonder de breekbaarheid. Vandaag leeft XHTML vooral voort in oudere sites en een paar gespecialiseerde systemen. Er zat ook een praktische angel in. Serveer je het met het echte XML-contenttype, dan liet één losse ampersand of een niet-gesloten afbeeldingstag een kale foutmelding zien in plaats van de pagina, en zag de bezoeker niks. Veel sites omzeilden dat stilletjes door XHTML als gewone HTML te versturen, en kregen zo de syntaxis zonder het echte voordeel. Dat gat was een grote reden dat het de strijd om browsercompatibiliteit nooit won. Internet Explorer 6, destijds de dominante browser, kon echte XHTML niet eens lezen, dus schreven makers strenge code die browsers er toch soepel doorheen joegen.
Bij TopDevs bouwen we met modern HTML5, maar we houden vast aan de schone, goed gevormde code die XHTML voorstond, want nette code is makkelijker te onderhouden, te debuggen en werkend te houden in alle browsers.