Rapport 3: Servlet XML

Ce petit servlet a pour but d'explorer un arbre DOM parsé à partir d'une page XML. Cette application n'est valable que pour des documents valides correspondants à la DTD Seb. Par défaut, la page traitée est http://tecfa.unige.ch/staf/staf-e/lhaires/staf2x/example.xml, mais on peut traiter n'importe quelle autre page valide pour cette DTD.

Cette application est très simple. L'arbre est simplement parcouru et les tags rencontrés déterminent de quelle manière on affiche la page. Il s'agit en aucun cas d'un outil générique d'affichage de pages XML. Pour cela, il faudrait par exemple déterminer à quelle profondeur un tag se trouve pour le traiter. Je n'ai pas eu le temps de regarder la documentation pour regarder si le degré de profondeur est contenu dans l'arbre du document. Il serait simple de le déterminer à l'aide d'une variable globale.

Les messages d'erreur retournés par la gestion des exceptions du parser ou pour parcourir l'arbre sont très peu clairs. Il est peu simple de trouver les erreurs.

De plus, le parser me semble peu efficace. En effet, il place des variables de texte vides ou avec de simples espaces un peu partout. Il a fallu faire des contrôles avant affichage pour que la page soit affichée sans tags inutiles. Il y a pire: ma DTD demande qu'il y ait un et un seul nom, suivi d'une et une seule description etc. Si le document XML n'a pas un de ces éléments, l'arbre est tout de même parsé, ce qui n'est pas souhaitable. Voir l'effet du fichier http://tecfa.unige.ch/staf/staf-e/lhaires/staf2x/badexample.xml. Il ne teste donc pas la conformité du document avec la DTD. Pourquoi lit-il et valide-t-il la DTD s'il ne contrôle que la "well-formedness" du document XML?

Cet exercice est utile pour comprendre les règles de la récursivité des procédures. Néanmoins, le DOM est parfaitement inutile pour faire un simple affichage d'une page. DOM est utile si l'on veut manipuler le contenu et connaître l'imbrication des tags. Pour l'affichage, du simple XSL aurait largement suffi. L'application présentée est parfaitement inutile. Il faut finalement de nombreuses lignes de code pour afficher un simple document conforme à une DTD très simple.

Vous pouvez jeter un coup d'oeil à la source


Sébastien L'HAIRE.

Retour à la page travaux