Notion de driver

Généralités

Comme précisé dans l'introduction, XPathFinder utilise les mécanismes de base de Java pour le chargement DOM des fichiers XML puis l'exécution de requêtes XPath sur cet arbre.

Or il se trouve que Java n'offre que le support de la version 1.0 du XPath ainsi qu'une gestion limitée du DOM.

C'est pourquoi, si besoin est, XPathFinder permet de définir les drivers à utiliser en fonction du type de fichier (identifié par son extension). Ainsi, il devient possible d'exécuter les recherches par Java pour les fichiers XML (par exemple), d'utiliser Saxon pour les fichiers FO (autre exemple) et un moteur personnel pour les fichiers INI.

Bien entendu les fichiers INI ne constitue pas des fichiers XML, mais du moment qu'on fourni dans la définition du driver une classe capable de monter un arbre DOM à partir d'un flux de données, il n'y a pas de limitation au type d'extension pouvant être pris en charge par XPathFinder.

Définition d'un driver

Un driver se définit par les éléments suivants :

  • un ensemble d'extension de fichier (les ensembles doivent être disjoints)
  • un ensemble de jars (contenant les classes nécessaires à l'exécution du driver)
  • la définition d'une classe capable de construire un DOM (javax.xml.parsers.DocumentBuilderFactory) - optionnel
  • la définition d'une classe capable d'exécuter des requêtes XPath (javax.xml.xpath.XPathFactory) - optionnel
  • des options de lecture :
    • ignorer le DOCTYPE : permet de faire sauter la clause DOCTYPE présente dans le fichier à lire, le parseur de document ne verra pas la clause apparaître et ne la prendra donc pas en charge
    • ignorer les entités : si des entités ont été définies dans le DOCTYPE du document et celui-ci a été retiré, il est préférable d'utiliser cette option qui remplacement le caractère esperluette par son entité XML &, de cette façon, il n'y aura pas d'erreur de parsing
    • ignore les namespaces : si le document XML contient des namespaces, suivant le driver utilisé, ils peuvent être pris en compte ce qui complique l'écriture des requêtes XPath, cette option permet de les faire disparaître avant que le parseur n'entre en jeu - recommandé pour l'utilisation de Saxon par exemple

Remarques

  • Si les éléments optionnels de la définition ne sont pas remplis, le moteur de recherche utilisera les classes de base de Java.
  • La recherche se fait sans tenir compte de l'homogénéité des drivers. Chaque fois qu'un fichier est trouvé, il est automatiquement associé à un driver et c'est celui-ci qui sera exécuté pour la recherche.