Ça fait longtemps que je n'ai pas parlé des avancées sur Etna. Donc voici quelques nouvelles.

Le nouveau validateur RelaxNG en C++ est presque terminé. Je suis en train d'implémenter nos extensions relaxng, mais d'une manière qui va être plutôt sympa : sous forme de "plugin" pour le validateur. En effet, je suis en train de rendre le validateur extensible. Ainsi un développeur pourra apporter le support de ses propres extensions RelaxNG, via un simple composant XPCOM.

Bon par contre, entre temps, une envie m'a pris de modifier l'encodeur[1] XHTML/XML de Gecko. En effet, celui-ci ne permet pas le "pretty printing", comprendre, il ne permet pas de générer le XML de manière lisible, comme le fait l'encodeur HTML. Et c'est bien sûr une chose dont j'ai besoin dans Etna.

Bon, ça ne semble pas si intéressant que ça me direz-vous. Mais en fait si. Car cette modification va avoir quelques répercussions...

Il faut savoir que l'encodeur XML est aussi utilisé pour encoder les documents XHTML qui sont servis avec le type mime application/xml+xhtml. Par contre, pour les documents XHTML servi en text/html, c'est l'encodeur HTML qui est utilisé. En sachant ça, vous comprenez qu'en ce moment, dans Gecko, l'éditeur HTML a un support plutôt bancale de XHTML. En sortie, soit on a du HTML bien présenté, mais forcément, ce n'est plus du XHTML (voir du XHTML invalide), soit on a droit à du XHTML mais présenté brut de fonderie donc on peut avoir des lignes de textes qui font des centaines de caractères si il n'y a pas de saut de ligne dans les noeuds textes. Dans NVu, Daniel avait patché l'encodeur HTML pour que la sortie XHTML soit un minimum potable (patch non porté dans le gecko officiel), mais il était insuffisant (faute de temps) : aucun support des namespaces.

En clair, avec les modifications que je vais faire dans les encodeurs XML et HTML, je vais à la fois permettre d'avoir du pretty printing sur les fichiers XML en général, mais aussi corriger les problèmes de "sérialisation" des documents XHTML. Cela va avoir donc pour effet d'améliorer le support XHTML dans l'éditeur de Gecko.

Qui va en bénéficier me direz vous ? Tout ces petits programmes comme wymeditor, tinyMCE et consorts, qui permettent l'édition WYSIWYG du HTML dans les formulaires, et qui sont actuellement obligés de faire des hacks pourris mais hélas nécessaires quand ils veulent du XHTML, pour transformer les chaînes HTML que leur donne Gecko en XHTML valide.

Bon par contre, je n'ai pas encore terminé, et il ne faut pas s'attendre à ce que ce soit dans Firefox 3 (trop tard). Le ticket correspondant dans bugzilla : 422403.

Notes

[1] l'encodeur, ou serializer, est le bout de programme qui sert à convertir un arbre DOM, en chaîne, permettant ainsi l'enregistrement d'un DOM dans un fichier par exemple