Je me suis mis dernièrement à l'ASP.NET et c'est avec effroi que j'ai découvert que le code généré était seulement conforme à HTML 4.01 Transitional... Voici donc une classe qui vous permettra d'être conforme à XHTML 1.0.
Pour commencer, je tiens à préciser qu'à la base cette classe a été écrite par Big71 du site CodeProject.com, vous trouverez l'originale à la page suivante (A C# class to make your ASP.NET pages XHTML valid).
L'ayant aidé à l'enrichir, j'ai reçu son autorisation pour publier cet article sur asp-php.net.
Idée
L'idée de départ de cette classe est la validation XHTML de la page générée, on modifie donc à la volée le code que nous génère asp.net pour le transformer.
Comment ça marche
Pour commencer vous devez avoir au moins quelques notions en C#, au moins pour comprendre comment fonctionne l'héritage de classes.
Donc la classe XHTMLPage hérite de la classe System.Web.UI.Page ca nous permettra de ne pas réécrire toutes les méthodes que comprend celle-ci et seulement surcharger la méthode Render() qui se charge normalement d'envoyer le code HTML 4.01 au navigateur. C'est dans la surcharge de celle-ci que se passera tout la tranformation du code HTML en XHTML. De nombreuses substitions seront effectuées à l'aide d'expressions régulières ce qui permettra de gagner en vitesse et en efficacité.
Utilisation
L'utilisation est très simple et nécessite que très peu d'étapes :
Ajoutez une référence vers l'espace de nom dans lequel se trouve la classe XHTML : Par exemple, j'ai mis cette classe dans l'espace de nom vbmaf.Web.XHTML, j'ai donc ajouté :
using vbMaf.Web.XHTML;
Modifiez la classe dont dérive votre page, par défaut vous devez avoir public class votre_page : System.Web.UI.Page, remplacez-le par
public class votre_page : XHTML
Dans la méthode privée Page_Load(...), ajoutez au début :
Voilà, c'est terminé ! A la prochaine exécution votre page sera normalement valide XHTML1.0 Strict. Biensûr, si vous préférez, vous avez aussi le choix avec XHTML1.0 Transitional et XHTML1.0 Frameset.
Le cas des scripts et des styles
D'après la spécification XHTML les feuilles de styles et les scripts doivent-être mis à l'intérieur de commentaires XML (<![CDATA[ ... ]]>) mais malheureusement les navigateurs actuels ignorent tout simplement ce qu'ils contiennent, je vous conseille donc de ne pas utiliser cette option pour le moment.
Conclusion
Il se peut qu'il reste quelques bugs dans cette classe, mais pour le moment elle semble fonctionner correctement avec des performances plus qu'inattendues.
En cas de problème, vous pouvez biensûr poser vos questions ici-même.