2.2.1 Les parseurs XML
Les parseurs sont des logiciels qui permettent de lire des documents XML. Cette lecture peut être faite avec un contrôle du document par rapport à son schéma ou à sa DTD. Dans ce cas, le parseur est dit " validant ".
Il existe des parseurs pour les différents langages (Java, Perl, C++, Visual Basic, JavaScript, Python, …) et pour les différents environnements (ActiveX, Java Virtual Machine).
Trois types d'interfaces sont définis entre un parseur et l'application qui l'utilise :
- l'interface SAX (Simple Access to XML) qui enchaîne un ensemble de rétro appels vers l'application au fur et à mesure que les objets XML sont traités (balise de début, attribut, texte, balise de fin, …) ;
- l'interface DOM (Document Object Model) qui construit une hiérarchie d'objets représentant le document en mémoire (document, éléments, attributs, contenus...) ;
- les interfaces utilisant des objets Java correspondant au document XML parsé.
L'interface SAX (http://www.megginson.com/SAX/Java/sax2.zip) a été établie par un groupe de programmeurs participant à la liste de diffusion XML-DEV (celle des développeurs XML).
Dans cette catégorie d'interface, on peut citer :
- SAX et XAF de Megginson ;
- Expat de James CLARK.
L'interface DOM a été recommandée par le W3C mais elle oblige à maintenir une hiérarchie d'objets représentant tout le document en mémoire, ce qui peut être contraignant pour les grands documents. Les parseurs DOM utilisent souvent un parseur SAX en interne. Deux versions de DOM sont opérationnelles. La troisième version est en cours de normalisation.
Dans cette catégorie d'interfaces, on peut citer :
- MSXML de Microsoft distribué avec Internet Explorer ;
- XERCES, utilisable en complément des serveurs Apache.
Les parseurs générant des objets Java correspondant au type de document parsé n'ont pas d'interface normalisée. Plutôt que de gérer une hiérarchie d'objets de type balise, attribut, instruction de traitement, ils génèrent, dans la phase d'analyse, un objet Java par type de document. Cet objet Java dispose d'attributs correspondant aux différents éléments imbriqués, conduisant à une programmation beaucoup plus naturelle.
Dans cette troisième catégorie d'interfaces, on peut citer :
- Breeze de Breeze Factor (http://www.breezefactor.com/) ;
- JDOM, supporté par l'éditeur O'Reilly (http://www.jdom.org).
Comparaison avec les traducteurs EDI
On compare souvent les parseurs et les traducteurs EDI. En fait, leurs dissemblances sont plus importantes que leurs ressemblances.
Un traducteur fonctionne dans deux sens :
- création d'un message à partir de fichiers applicatifs ;
- création de fichiers applicatifs à partir d'un message.
Les étapes de traitement dans un traducteur sont les suivantes :
Figure 8 Les fonctions d'un traducteur EDI
Le parseur ne réalise que la partie " contrôle de la structure ". Il est nécessaire de faire appel à d'autres outils pour gérer les transformations de structure. Ces outils utilisent le langage XSL. Sa mise en œuvre demande donc des compétences de programmation.
Un traducteur dispose généralement d'une interface graphique permettant son paramétrage, c'est-à-dire de définir les rapprochements entre les données applicatives et les données du message. Lors de ce rapprochement, le traducteur permet généralement de définir des règles de transformation : troncature, transcodage, mise en équivalence, création de valeur par défaut… Dans le cas d'XML, ces tâches nécessitent de la programmation.
Les industriels des logiciels d'interface, en toute probabilité, seront conduits à développer des outils XML de plus en plus complets et paramétrables et dont les fonctions seront progressivement identiques à celles des traducteurs.