Russell Holt a publié hexml 1.0, un
parseur open source qui traduit les balises en appel de
classes Java, ce qui le rend souple, léger, capable
de gérér des sources de données non conformes et... très controversé !
Par Eric van der Vlist,
Dyomedea (vdv@dyomedea.com).
jeudi 20 juillet 2000
Sa conception est simple et originale, plaçant hexml à
mi-chemin entre parseur SAX et outils de "Java binding":
"Son principe de base est de traduire des balises en classes
Java, et c'est donc un hybride entre arbres de
type DOM et parseurs événementiels; les classes
instanciées contrôlent de manière significative le processus de parsing."
Mettant l'accent sur les balises plus que sur les éléments, hexml traduit
le parsing des balises en création de nouvelles classes Java.
Ces classes Java assurent l'analyse d'éventuels attributs
et peuvent recevoir une collection de classes imbriquées. Les balises ouvrantes
des éléments, mais également les PIs, les commentaires et même la déclaration
XML sont considéres comme des balises pouvant être
traduites en classes Java.
La correspondance entre balises et classes peut être contrôlée dynamiquement en
appelant des méthodes Java, mais également au moyen de
fichiers XML de "vocabulaires".
Hexml ne fait aucun type de validation et
ne demande pas même aux documents d'être bien formés (les balises peuvent
par exemple se chevaucher), ce qui le rend extèmement souple mais également controversé,
Aaron Hope commentant:
"Si votre parseur absorbe du XML audacieusement formé,
c'est un mauvais parseur. Les parseurs XML doivent rejeter
le XML mal formé, en fait d'après la
spécification XML, si ce n'est pas conforme à
XML, ce n'est pas du tout du XML."
Ce commentaire caractéristique illustre bien les craintes de la communauté
XML de voir se
répéter les excès de laxisme des navigateurs HTML.
Il n'en reste pas moins vrai que cette souplesse devrait permettre à
hexml de parser des "variantes non conformes" de
XML tels que documents HTML,
le format HTML des documents
office 2000 parfois
décrit
comme
"un horrible mélange de XML, HTML
mal formé, scripts et instructions 'if'
à l'intérieur d'accolades carrées"
et peut être même des DTDs.
Copyright 2000,
Eric van der Vlist.
|