Marion Karle IR3 2003/2004
Exposé système
 

Introduction
Le langage de requête XPath
Xindice :
- Présentation
-
Principe
-
Installation
-
Utilisation
Interfaces graphiques existantes
Conclusion
Sources


Introduction

Xindice est un logiciel libre qui fait partie du projet ApacheXML et de la DBXML Initiative.

Il s'agit d'un logiciel permettant de gérer une base de données composées de documents XML. Il utilise pour effectuer des requêtes le langage de requête XPath.

Je vais tout d'abord présenter XPath avant de présenter Xindice. Nous verrons alors son principe de fonctionnement, son installation et son utilisation.

Enfin, je présenterai rapidement les interfaces graphiques existantes pour manipuler Xindice de façon plus conviviale.

retour au sommaire


Le langage de requête XPath

Tout d'abord, XPath est l'abbréviation de XML Path Langage. Il s'agit d'une recommandation du W3C, qui est disponible à l'adresse : http://www.w3.org/TR/xpath.html . Le 12 novembre, la version 2.0 de cette recommandation a été publiée. Elle est disponible à l'adresse suivante : http://www.w3.org/TR/xpath20/.

Xindice utilise la version 1.0 de cette recommandation.

XPath est un langage de recherche dans des documents XML. Son principe est simple : il représente les documents XML sous forme d'arborescence. Cette représentation permet ensuite un parcours rapide des documents analysés.

Nous allons analyser une requête XPath simple :

child::para[position()=1]

Elle est composée de trois éléments :
l’axe de recherche
le test de noeud
le prédicat

L'axe de recherche permet de définir dans quelle sens et jusqu'à quel niveau la recherche doit se faire. Le mot-clé child demande à ce que seuls les noeuds enfants du noeud courant soient vérifiés. Il existe bien d'autres mot-clé, les plus courant étant child/parent, qui permettent de vérifier les noeud directement supérieur ou inférieur à un noeud. Il existe également descendant et ancestor qui permettent de parcourir l'ensemble des descendants d'un noeud ou l'ensemble de ses ascendants, ainsi que bien d'autres (following, preceding, attribute...).

Une fois l'axe de recherche défini, on va définir le test à appliquer sur les noeuds parcourus. Il peut s'agir du nom du noeud recherché ou d'information sur le type du noeud que l'on recherche : s'il s'agit d'un noeud de type texte, s'il s'agit d'un noeud qui contient des instructions de traitement...

Enfin la troisième partie de la requête, appelé prédicat, énonce une condition à remplir pour correspondre à la requête.

Ici on recherche le noeud appelé para, qui est enfant du noeud courant et qui est placé en première position.
Des requêtes complexes peuvent être créées qui contiennent plusieurs requêtes basiques imbriquées les une dans les autres. Cette syntaxe permet donc une flexibilité très importante et permet de rechercher toutes sortes d'informations dans un document XML.

Ceci n'est bien sûr qu'une présentation sommaire de XPath, qui a uniquement pour but d'expliquer ses concepts centraux, afin de comprendre l'intérêt de son utilisation par Xindice. Pour une présentation plus détaillée, se reporter au site de la recommandation.

retour au sommaire


Xindice

La dernière version stable publiée est la version 1.0.

Ce logiciel existe à la fois pour Windows et Linux.

Une version 1.1 est en développement, une version 1.1béta a été publiée en septembre.

Le principe de fonctionnement de Xindice est qu'il utilise une représentation des données sous forme d’arborescence. Cette arborescence est constituée d'un ensemble de Collections, qui sont équivalents à des répertoires où l'on peut placer des fichiers XML.

Dans ce contexte l'utilisation de XPath, qui représente les fichiers sous forme d'arborescence, est particulièrement intéressante, car avec Xindice, les requêtes XPath peuvent être effectuées sur des ensembles de Collections (et donc de documents), ce qui augmente notablement son utilité : au lieu de faire des requêtes sur chaque document, on applique directement la requête à la Collection où se trouvent les documents que l'on veut analyser.

Il existe deux modes d’utilisation : en tant qu'utilisateur et en tant qu'administrateur.
Il faut noter que des possibilités de développement existent et sont même fortement encouragées par l'équipe du projet Xindice.
De plus, Xindice peut facilement s’utiliser avec Tomcat et Cocoon, ce qui permet de faciliter l'accès et la manipulation de la base de données.

J'ai réalisé une installation sous Linux, mais il est possible de l'installer également sous Windows.
Xindice se présente sous forme d'archive : xml-xindice-1.0.tar.gz.

Pour installer Xindice, il suffit de décompresser le fichier xml-xindice-1.0.tar.gz dans le répertoire o l'ondésire installer Xindice, puis de paramétrer les variables d'environnements.

Les variables d’environnement nécessaires sont JAVA_HOME, qui spécifie le répertoire où se trouve Java,XINDICE_HOME, qui indique le répertoire où est installe Xindice, et PATH, auquel on va ajouter le répertoire bin de XINDICE_HOME.

On peut noter que Xindice est livré avec les sources et les API DB:XML afin de faciliter le développement.

 

Lorsque j'ai installé Xindice sous Linux, j'ai été confrontée à une erreur bizarre :
Filer 'org.apache.xindice.core.filer.BTreeFiler' not available

Cette erreur est générée lorsque trop de fichiers sont ouverts sous Linux (on dépasse la limite fixée par défaut). La solution trouvée consiste à augmenter cette taille limite.
Après recherche sur les mailing-lists de Xindice, j'ai trouvé comment résoudre ce problème : il faut spécifier la commande #ulimit -n 5000.

Pour expliquer comment utiliser Xindice, je vais tout d'abord présenter les deux modes de commande possibles, puis je détaillerai la syntaxe d'une commande. Enfin, je donnerai quelques exemples de commandes de base.

Modes de commande

Il existe deux modes de commande : le mode utilisateur et le mode administrateur.

Le mode utilisateur permet de rechercher des documents, d'ajouter ou de supprimer des documents XML...

Le mode administrateur permet de créer et de supprimer des Collections, de lister l'ensemble des Collections contenues dans une Collection. Il permet également d'ajouter des indices de façon à pouvoir accélérer les recherches souvent effectuées. Le mode administrateur possède également la commande shutdown, qui permet de stopper le serveur Xindice.

Syntaxe d'une commande

Les requêtes sont passées en ligne de commande, en utilisant le mot-clé xindice ou xindiceadmin pour indiquer s'il s'agit d'une commande utilisateur ou administrateur.

Voici la syntaxe d'une commande :

xindice <cmd> - <option> <argument>
xindiceadmin      

Exemples de commandes

Dans ces exemples, la commande est en rouge, la première option (-c nom_rep), qui permet de spécifier dans quelle Collection on se place pour exécuter la commande, est en vert et la deuxième option, qui est spécifique à la commande passée, est en bleu.

Création d’une collection :
on spécifie dans quelle Collection on veut créer la nouvelle collection avec l'option -c, puis on spécifie le nom de la collection à créer avec l'option -n.

./xindiceadmin ac -c /db/Exemple -n Nouveau
Created : /db/Exemple/Nouveau

Ajout multiple :
il est possible d'ajouter plusieurs documents XML à la fois, s'il sont situés dans un même répertoire, que l'on spécifie aavec l'option -f.

./xindice addmultiple -c /db/Exemple -f /home/Test
Reading files from: Test
Added document /db/Exemple/fichier1.xml
Added document /db/Exemple/fichier2.xml
Added document /db/Exemple/fichier3.xml

Requête Xpath :
l'option -c permet de définir la collection de départ de la requête. Tous les documents contenus dans cette collection et dans ses sous-collections seront parcourus pour voir s'ils contiennent un noeud répondant à la requête.
Ici on recherche lune balise product, contenant l'attribut product_id avec la valeur 120320. Dans la réponse on ajoute les informations permettant de retrouver le document XML d'où est extrait le résultat (en gras dans l'exemple).

./xindice xpath_query -c /db/Exemple –q product[@product_id="120320"]
<?xml version="1.0"?>
<product product_id="120320" xmlns:src=
"http://xml.apache.org/xindice/Query" src:col="/db/Exemple" src:key="fichier1.xml">
<description>Jambon de Bayonne</description>
</product>

Xindice permet donc de manipuler facilement une base de documents XML, et permet d'exécuter facilement des requêtes sur cette base de documents. Le principe de fonctionnement est simple et puissant. Xindice fournit un éventail complet des opérations que l'on, peut effectuer sur une base de documents XML.

Cet outil présente néanmoins un certain nombre d'inconvénients : il ne peut gérer que de petits fichiers ( environ un Mo) et il est assez facile de se perdre dans l'arborescence des collections, car aucune vue d'ensemble n'est disponible. C'est pour cette dernière raison que j'ai testé une interface graphique pour Xindice, de façon à rendre son utilisation plus intuitive.

retour au sommaire


Interfaces graphiques existantes

Plusieurs interfaces graphiques pour Xindice ont été développées, dont voici la liste :

En effet, Xindice n'est pas très convivial, et l'utilisation d'une interface graphique rend son utilisation beaucoup plus intuitive.
J'ai testé un de ces logiciels, XindiceBrowser, que je vais rapidement présenter.

XindiceBrowser

XindiceBrowser ne permet pas de réaliser toutes les commandes existantes sous Xindice, notamment tout ce qui concerne la gestion des indices et les import et export de fichiers. Par contre, il possède une fonctionnalité supplémentaire, en ceci qu'il permet d'enregistrer le résultat d'une requête XPath dans un fichier.

Voici quelques copies d'écran de XindiceBrowser.

Page d'accueil

La base de données est représentée sous forme d'arborescence, qu'il est possible d'ouvrir pour ajouter, supprimer des documents...

Il faut signaler que la barre de commande au bas de l'écran est uniquement indicative : elle affiche la commande réalisée au format xindice.

Visualisation d'un fichier

Un fichier peut être visualisé sous forme d'arborescence, en mode HTML ou en mode code source.

 

Exemple de requête XPath

Cette interface est facile à installer et à utiliser, elle est en effet très simple. Elle est recommandée pour les premiers pas avec Xindice. Par contre, comme on ne dispose pas de toutes les commandes, une utilisation professionnelle de cette interface n'est pas forcément recommandée.

retour au sommaire


Conclusion

Le concept de Xindice est intéressant, mais mérite encore d'être développé. Le fait qu'il puisse être utilisé avec Tomcat et Cocoon est un point fort pour l'emploi de ce logiciel en entreprise, mais il reste trop limité dans d'autres domaines.

Ce logiciel a quelques limitations qui peuvent être génantes pour certains types d'utilisation. Je pense notamment à la limitation de la taille des fichiers, qui peut être handicapante dans certains domaines (ex : labos pharmaceutiques, qui utilisent beaucoup de documents XML très gros).

De plus, je n'ai pu tester la robustesse du serveur dans un environnement de production, ni ses performances en cas de fortes sollicitations.

Une version 1.1 est prévue, qui devrait permettre de résoudre les limitations de ce logiciel et autoriser son emploi dans un contexte professionnel.

retour au sommaire

 


Sources

Site Xindice : http://xml.apache.org/xindice

Chargement des logiciels présentés
Xindice :
http://xml.apache.org/xindice/download.cgi

Interfaces graphiques :
XMLdbGUI :
http://titanium.dstc.edu.au/xml/xmldbgui/
Attrezzo per Xindice :
http://attrezzo.sourceforge.net/
Yab :
http://www.cs.put.poznan.pl/dweiss/xml/projects/yab/index.xml?lang=en
Xindice Browser :
http://www.schatten.info/software/xindice_browser/xindice_browser.html
phpXindice :
http://sourceforge.net/projects/phpxindice
Xindice XML-RPC Interface :
http://xindice-xmlrpc.sourceforge.net/

Xpath : http://www.w3.org/TR/xpath.html
http://www.w3.org/TR/xpath20/

 

retour au sommaire