D'abord basé sur la réélaboration de HTML 4 en XML, le résultat fut XHTML 1.0. Avec la publication des directives de compatibilité HTML (HTML Compatibility Guidelines) dans l'annexe C de la spécification XHTML 1.0, les documents XHTML 1.0 sont systématiquement présents dans les agents utilisateurs HTML.
L'étape suivante consiste à modulariser les attributs des éléments pour une intégration plus facile dans les documents, en intégrant XHTML et d'autres jeux de balises. Ce module est précisé dans l'article Modularisation de XHTML. XHTML Basic est un langage reconnu comme l'architecture minimale parmi ces modules et destiné au développement d'applications mobiles.
XHTML 1.1 est un exemple de module architectural volumineux qui élimine de nombreuses fonctionnalités de la couche de présentation. Bien que XHTML 1.1 ressemble beaucoup à XHTML 1.0 Strict, il est prévu de servir d'extension future à la famille de types de documents XHTML, et sa conception de module facilite l'ajout d'autres modules nécessaires ou son intégration dans d'autres langages de balisage. . Le type de document XHTML 1.1 plus MathML 2.0 est un type similaire à la famille de types de documents XHTML.
XHTML 2.0 est destiné aux applications Web riches et portables. Bien que les ancêtres de XHTML proviennent de HTML 4, XHTML 1.0 et XHTML 1.1, il n'est pas destiné à être rétrocompatible avec les versions antérieures. Il s'agit d'un langage hôte XHTML spécifié dans la modularisation de XHTML. De même, il se compose d'une série de modules qui décrivent collectivement les éléments et attributs du langage XHTML et leurs modèles de contenu. XHTML 2.0 met à jour de nombreux modules définis dans la modularisation de XHTML et contient des versions mises à jour de tous ces modules et sémantiques. XHTML2.0 utilise également des modules de Ruby, XMLEvents et XForms.