A A A i

samedi 21 février 2009samedi 21 février 2009

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.(Cyberpunk, 2009/02/21 01:22) lien permanent

Commentaires ici et ailleurs :

BeautifulSoup sur Python est pas mal non plus.

Posté par karl, le samedi 21 février 2009 à 05:34 #

Py-quoi ?

Posté par Damien B, le samedi 21 février 2009 à 11:57 #

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

Posté par Bouilloire, le samedi 21 février 2009 à 12:43 #


qui est

nom : Damien Bonvillain
courriel : kame à cinemasie.com
bloggercode:
B9 D+ T+ K S F I- O X+ E- L- C-- Y1 R+ W- P+ M5 N-- N+
un peu plus : Google Whoring tortue

Messagerie instantanée

    les koms

    m'enfin

    Quant à mes invectives imaginaires, je vous laisse chercher un endroit adéquat pour les ranger. Elles craignent la lumière, si vous voulez une piste.
    Lien associé
    Eolas - « Aimez moi, c'est un ordre. »

    les bons vieux


    archives

    « février 2009 »
    lunmarmerjeuvensamdim
    1
    2345678
    9101112131415
    16171819202122
    232425262728

    XML RSS 2.0 XML RSS 2.0 commentaires A A A i

    liens

    allégeance

    Blog sans chat

    colophon

    Propulsé par pointClairMerci à la caféineDevelopment with EmacsBadges from GTMcKnightFreeListed on BlogSharesGeoURL