Il existe trois versions de XHTML 1.0, qui correspondent à trois versions de HTML 4.01 :
• XHTML 1.0 Transitionnel
• XHTML 1.0 Strict
• Jeu de cadres XHTML 1.0
XHTML 1.0 Transitional inclut toutes les balises et attributs de HTML 4.01 Transitional. La norme de transition XHTML 1.0 a été introduite pour permettre aux concepteurs et développeurs HTML existants de migrer vers XHTML sans trop de difficultés.
XHTML 1.0 Strict diffère de XHTML 1.0 Transitional en ce sens qu'il impose une séparation plus claire entre la structure et la présentation du document. Contrairement à XHTML 1.0 Transitional, XHTML 1.0 Strict vous oblige à utiliser des feuilles de style en cascade pour contrôler l'apparence de la page.
Les documents XHTML 1.0 Frameset sont destinés à être des documents qui utilisent la balise pour diviser le navigateur en cadres (les pages XHTML 1.0 Transitional et Strict ne peuvent pas contenir la balise).
Le W3C a également publié XHTML 1.1 sous forme de recommandation (31 mai 2001). XHTML 1.1 est très similaire à XHTML 1.0 Strict. La principale différence est que XHTML 1.1 peut être étendu avec des modules complémentaires pour prendre en charge de nouveaux éléments. Par exemple, vous pouvez générer une page XHTML 1.1 spécifique qui contient également des éléments de MathML (Mathematical Markup Language), SVG (Scalable Vector Language) ou d'un module personnalisé que vous créez.
Enfin, le W3C développe une recommandation XHTML 2.0. Étant donné que XHTML 2.0 est encore en phase de rédaction et qu'aucun navigateur Web ne prend actuellement en charge la norme, nous n'en discutons pas dans cet article.
ASP.NET 2.0 Framework et Visual Studio .NET 2005 ciblent XHTML 1.0 Transitional. Cette norme est la moins restrictive des normes XHTML et la plus compatible avec les pages HTML existantes. Cependant, vous pouvez également générer des pages ASP.NET 2.0 qui ciblent la norme XHTML 1.0 Strict ou même la norme XHTML 1.1 (voir la section « Configuration de la conformité XHTML » plus loin).
(Notez que les versions bêta 2 du framework ASP.NET ciblent XHTML 1.1 par défaut. La version finale du framework ASP.NET 2.0 ciblera XHTML 1.0 Transitional.)