Les parsers HTML5

Le futur standard HTML 5 (qui sera prêt d'ici 3 ans au mieux) propose deux syntaxes pour représenter un document : HTML5 et XML. Notez l'absence d'espace entre HTML et 5, c'est ce qui permet de distinguer la syntaxe du standard. Un problème de jointure dans une requête SQL ? C'est du HTML 5. Un caractère dans un mauvais BMP Unicode ? C'est du HTML5. C'est ce qu'on appelle le pragmatisme des conventions de nommage. Pour lire un document défini par HTML 5 en HTML5, on va donc utiliser un parser HTML5 (parce qu'a priori un parser HTML 5 ne peut être que dual, vu que c'est aussi un parser XML, mais en même temps, vu qu'il est illusoire de vouloir traiter un document HTML 5 en syntaxe XML avec des outils traitant du XML, vu que HTML 5 ignore DOM 3 et étend / redéfini / malaxe DOM 2 en une bouillie pragmatiquement appelée "DOM5 HTML", et rajoute des étapes intermédiaires dans le parsing du XML). Bref, on a donc besoin d'un parser spécifique (après 30 ans à travailler avec des parsers génériques GML et SGML), et, chance, une liste est maintenue sur le site de la WTF, on y trouve donc :

HTML5 Conformance Checker
Abandonné, remplacé par validator.nu
HTML5Lib
Implémentations en C, PHP, Python et Ruby. L'implémentation en C a l'air de se limiter à la détection du charset. Pour l'implémentation en PHP, le tokenizer a l'air fini, même s'il diffère de la spécification (mouvante). Pas de modification depuis 4 mois pour l'implémentation en Ruby, son API a l'air d'être complètement différente de celle en Python. L'implémentation en Python est la plus avancée, et c'est la seule à avoir visiblement plus d'une seule personne travaillant dessus (et le seul à avoir le début d'une ombre de documentation). On y retrouve d'ailleurs des noms biens connus dans le petit cercle du WTF.
Twintsam
Implémentation en C#, pas de modification depuis bientôt un an, jamais fini.
Validator.nu parser
L'implémentation la plus aboutie, en Java, par l'inénarrable qui met des espaces de nom partout, sauf en HTML, parce que c'est trop difficile, bouh bouh.
Implementations in Web browsers
Mic mac d'implémentations de "fonctionnalités" qui se sont retrouvées dans HTML 5, la plupart du temps en version non-terminée (en même temps, c'est difficile d'avoir une implémentation terminée quand la spécification ne l'est pas). On ne retrouve nulle part sur cette page quel navigateur implémente un parser HTML5. La réponse est probablement : aucun. Il existe pour Firefox / Camino / Minimo / SeaMonkey / Thunderbird / Sunbird une version de Gecko appelant une conversion à la machine du parser Validator.nu en C++. Le commentaire de l'auteur laisse penser que ça consomme encore plus de mémoire que Firefox 2, ce qui, avec les promesses du SQL côté navigateur devrait très sérieusement faire penser à vendre des ordinateurs dédiés à GMail.

Au final, c'est pas brillant, restons avec TagSoup.

Comments

1. On Saturday 21 February 2009, 05:34 by karl

BeautifulSoup sur Python est pas mal non plus.

2. On Saturday 21 February 2009, 11:57 by Damien B

Py-quoi ?

3. On Saturday 21 February 2009, 12:43 by Bouilloire

Et moi je vais aller faire une tarte à la courge tiens

They posted on the same topic

Trackback URL : https://www.cynicalturtle.net/kame/trackback/523

This post's comments feed