![]() |
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
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.
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 :
laxe 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.
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 darborescence. 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 dutilisation :
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 sutiliser 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 denvironnement 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 dune 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.
Interfaces graphiques existantes
Plusieurs interfaces graphiques pour Xindice ont été développées, dont voici la liste :
- XMLdbGUI
- Attrezzo per Xindice (basé sur Eclipse)
- Yab, une des premières applications développées
- Xindice Browser, le logiciel testé
- phpXindice
- Xindice XML-RPC Interface
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.
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.
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/