BASE DE DONNÉES XML NATIVE



Documents pareils
BASE DE DONNÉES XML NATIVE

La base de données XML exist. A. Belaïd

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr

XML et Bases de données. Les bases de données XML natives.

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

Bases de données avancées Introduction

Compte Rendu d intégration d application

contact@nqicorp.com - Web :

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Programmation des Applications Réparties. Parsers XML DOM et SAX

LES ACCES ODBC AVEC LE SYSTEME SAS

Accès à l'information XML par des requêtes XQuery au travers de son XSchema

Architectures web/bases de données

Configuration d'un annuaire LDAP

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

BIRT (Business Intelligence and Reporting Tools)

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

1 Introduction et installation

contact@nqicorp.com - Web :

Refonte front-office / back-office - Architecture & Conception -

A. Architecture du serveur Tomcat 6

Java pour le Web. Cours Java - F. Michel

JOnAS Day 5.1. Outils de développements

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Application Web et J2EE

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

PROSOP : un système de gestion de bases de données prosopographiques

TP réseau Android. Bidouilles Tomcat. a) Installer tomcat : il suffit de dézipper l'archive apache-tomcat windowsx64.zip.

KWISATZ_TUTO_module_magento novembre 2012 KWISATZ MODULE MAGENTO

2 Serveurs OLAP et introduction au Data Mining

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

TP Bases de données réparties

Formateur : Jackie DAÖN

PHP 5.4 Développez un site web dynamique et interactif

Document Object Model (DOM)

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

Datalift. + + Architecture Modularité Déploiements. d j = 09/04/2015 Laurent BIHANIC

Connexion à une base de données. Connexion à une base de données. Connexion à une base de données Développement d'une application

Environnements de Développement

Application web de gestion de comptes en banques

SQL Server 2014 Administration d'une base de données transactionnelle avec SQL Server Management Studio

Quick Start Installation de MDweb version 2.3

Introduction à JDBC. Accès aux bases de données en Java

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

THEME PROJET D ELABORATION D UNE BASE DE DONNEES SOUS LE SERVEUR MYSQL

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France

THEGREENBOW FIREWALL DISTRIBUE TGB::BOB! Pro. Spécifications techniques

Cours Bases de données

Java DataBaseConnectivity

Thierry BOULANGER. par la pratique. Bases indispensables Concepts et cas pratiques XML. 3 ième édition. Nouvelle édition

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

SQL Parser XML Xquery : Approche de détection des injections SQL

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

Une solution opensource d'affichage dynamique - XIBO

1. La plate-forme LAMP

Formation en Logiciels Libres. Fiche d inscription

SITE WEB E-COMMERCE ET VENTE A DISTANCE

Java Licence professionnelle CISII,

SQL Server Administration d'une base de données transactionnelle avec SQL Server Management Studio (édition enrichie de vidéos)

Module BD et sites WEB

Introduction à la B.I. Avec SQL Server 2008

L annuaire et le Service DNS

Joomla! Création et administration d'un site web - Version numérique

Architecture Orientée Service, JSON et API REST

Faculté Polytechnique de Mons. Le processus d Extraction, Transformation et Load (ETL) dans des entrepôts de données XML

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Maarch V1.4

Pentaho. présentation

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

FileMaker 13. Guide ODBC et JDBC

Documentation utilisateur, manuel utilisateur MagicSafe Linux. Vous pouvez télécharger la dernière version de ce document à l adresse suivante :

Utiliser Access ou Excel pour gérer vos données

Le langage SQL Rappels

Open Source Job Scheduler. Installation(s)

Pharmed. gestion de pharmacie hospitalière. Installation / déploiement

les techniques d'extraction, les formulaires et intégration dans un site WEB

Business Intelligence avec SQL Server 2012

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE

Business Sharepoint Contenu

Bases de données cours 1

Du 10 Fév. au 14 Mars 2014

1. Installation d'un serveur d'application JBoss:

Gestion collaborative de documents

Introduction aux «Services Web»

LANDPARK NETWORK IP LANDPARK NETWORK IP VOUS PERMET D'INVENTORIER FACILEMENT VOS POSTES EN RÉSEAU

Un serveur d'archivage

NoSQL. Introduction 1/23. I NoSQL : Not Only SQL, ce n est pas du relationnel, et le contexte. I table d associations - Map - de couples (clef,valeur)

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Construire des plug-ins pour SAS Management Console SAS 9.1

Bases de données Page 1 de 11. Bases de données. Prof. : Dzenan Ridjanovic

1/ Présentation de SQL Server :

But de cette présentation

DOSSIER D'ACTIVITES SUR LE PHP N 03 Créer une base de données MySQL avec PHPMyAdmin

Transcription:

BASE DE DONNÉES XML NATIVE Ivan Madjarov NXDB - exist - XQuery IvMad, 2011-2013 2 1. exist exist-db Open Source Native XML Database Ce cours s inspire, reprend, modifie et enrichi des supports disponibles sur Internet

NXDB - exist - XQuery IvMad, 2011-2013 3 Introduction au BDXN BDXN est un SGBD conçu pour XML: Stocke les documents en entiers sans les décomposer en élément, ni transformation ou mapping Utilise des techniques d'indexation d'arbres spécifiques. Un modèle B+Tree Utilisation d'un thésaurus au chargement ensemble de termes reliés liste des mots importants synonymes et préférés XML Stockage XML Forêts d'arbres 3 Requête XML Recherche XML Noyau SGBD Concurrence, Fiabilité Index NXDB - exist - XQuery IvMad, 2011-2013 4 Introduction au exist BDXN Le SGBD-XML exist est un système open-source sous licence GNU. exist est utilisable sur toutes les plates-formes: Windows, Linux ou MacOS exist exploite de nombreux standard tels que: XQuery, XSLT, XPath, XUpdate, etc. exist est facile à installer. exist supporte l'accès concurrent. exist optimise l'accès par une indexation automatique des données. exist propose une documentation riche à l'adresse suivante: http://www.exist-db.org/exist/documentation.xml exist se déploie comme une application Web sous le contrôle d'un moteur de Servlets : Tomcat, Jetty ou autre.

NXDB - exist - XQuery IvMad, 2011-2013 5 La connexion exist NXDB - exist - XQuery IvMad, 2011-2013 6 Compatibilité exist-db support plusieurs technologies Web et ainsi peut être vue comme une plateforme de développement et de déploiement d'applications Web : Langages de requêtes : XQuery 1.0 XPath 2.0 Transformation et publication : XSLT 1.0 (avec Apache Xalan) ou XSLT 2.0 (avec Saxon) HTTP interfaces: REST, WebDAV, SOAP, XMLRPC, Atom Publishing Protocol Outils spécifique à la BDXN : XMLDB, XUpdate, XQuery update extensions

NXDB - exist - XQuery IvMad, 2011-2013 7 La prise en main exist-db est une BD en XML. L outil exist-db est utilisé pour maintenir une BD en XML au travers d une interface Web. L'interface Web permet notamment de : intégrer des documents dans leur format d'origine (natif) XML interroger la base données (XQuery) modifier la base de données (XQuery Update) appliquer des feuilles de style aux documents produits (XSLT). APIs Java sont disponibles pour un accès programmé et interfacé par une application client-serveur (TCP). Les opérations disponibles par l'interface Web sont également accessibles au travers l'api Java. NXDB - exist - XQuery IvMad, 2011-2013 8 La collection XML La base de données exist-db stocke les données natives XML sous la forme : Collections comme un ensemble de documents XML qui se reportent au même schéma. Arborescence de répertoires récursifs pour une meilleurs flexibilité de stockage et de recherche. Un schéma identique ou commun n'est pas une obligation.

NXDB - exist - XQuery IvMad, 2011-2013 9 Service Java pour exist exist peut être interrogée par une application Java en utilisant la méthode d'accès XML-RPC ou un service Web basé protocole SOAP. NXDB - exist - XQuery IvMad, 2011-2013 10 Méthodologie d'un TP avec exist exist sera utilisé pour mettre en place un site Web avec une base de données XML native afin de pouvoir l'administré en: intégrant des documents XML, interrogeant la base données (Xquery), modifiant la base de données (XQuery Update), appliquant des feuilles de style aux documents produits (XSLT) exist propose une implémentation de XQuery, accompagnée de nombreuses fonctionnalités et d'interfaces Web. exist est entièrement développé en Java, il est possible d'utiliser ses librairies dans des programmes Java pour manipuler la BD. Pour simplifier l'installation du produit une archive intégrant les composants nécessaires au TP est mise en disposition pour être déployé dans un espace utilisateur. http://139.124.26.245/ic4/tomcat-exist.rar

NXDB - exist - XQuery IvMad, 2011-2013 11 Déploiement de exist Dans un premier temps il faut déployer l'archive Tomcat-eXist.rar avec le moteur de Servlets Tomcat et la BD exist en tant qu'application Web. L'archive est à décompresser sur un disque dur ou une clé USB dans le répertoire racine, exemple: c:\tomcat ou e:\tomcat Le fichier script catalina_start.bat lance le serveur d'application tomcat avec activation du SGBD exist. Le fichier script catalina_stop.bat arrête les serveurs. NXDB - exist - XQuery IvMad, 2011-2013 12 Le démarrage catalina_start.bat

NXDB - exist - XQuery IvMad, 2011-2013 13 Le serveur Tomcat sur port 8080 NXDB - exist - XQuery IvMad, 2011-2013 14 Déploiement de exist exist est déployé comme une application Web par le moteur de Servlets Tomcat à son lancement (fichier.war):

NXDB - exist - XQuery IvMad, 2011-2013 15 Le serveur SGBD exist NXDB - exist - XQuery IvMad, 2011-2013 16 Connexion aux collections

NXDB - exist - XQuery IvMad, 2011-2013 17 Fonctions de gestion NXDB - exist - XQuery IvMad, 2011-2013 18 Collections XML

NXDB - exist - XQuery IvMad, 2011-2013 19 Manipulation d'une collections XML NXDB - exist - XQuery IvMad, 2011-2013 20 Créer une collection XML

NXDB - exist - XQuery IvMad, 2011-2013 21 Une bibliothèque en XML <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="bibliotheque.xsl"?> <bibliotheque> <livre> <titre>1984</titre> <auteur> <nom>orwell</nom> <prenom>george</prenom> </auteur> <ref>fiction-o-1</ref> </livre> <livre> <titre>n ou M</titre> <auteur> <nom>christie</nom> <prenom>agatha</prenom> </auteur> <ref>policier-c-15</ref> </livre> <livre> <titre>le cheval pale</titre> <auteur> <nom>christie</nom> <prenom>agatha</prenom> </auteur> <ref>policier-c-17</ref> </livre> <livre> <titre>le chien des Baskerville</titre> <auteur> <nom>conan Doyle</nom> <prenom>arthur</prenom> </auteur> <ref>policier-d-3</ref> </livre> <livre> <titre>dune</titre> <auteur> <nom>herbert</nom> <prenom>franck</prenom> </auteur> <ref>fiction-h-1</ref> </livre> </bibliotheque> NXDB - exist - XQuery IvMad, 2011-2013 22 Présenter une bibliothèque en XML

NXDB - exist - XQuery IvMad, 2011-2013 23 Visualiser une bibliothèque en XML NXDB - exist - XQuery IvMad, 2011-2013 24 Activer le client en JavaWebStart

NXDB - exist - XQuery IvMad, 2011-2013 25 Lancer le fichier exist.jnlp NXDB - exist - XQuery IvMad, 2011-2013 26 Autoriser l'exécution du fichier

NXDB - exist - XQuery IvMad, 2011-2013 27 Connexion à la BD S'identifier en tant que admin avec mot de passe guest NXDB - exist - XQuery IvMad, 2011-2013 28 Choisir une collection dans la BD Interface de requête XQuery

NXDB - exist - XQuery IvMad, 2011-2013 29 Lister une collection de la BD NXDB - exist - XQuery IvMad, 2011-2013 30 Activer l'interface XQuery Ouvrir une collection

NXDB - exist - XQuery IvMad, 2011-2013 31 Lancer une requête XQuery Lancer la requête XQuery: afficher les noms des auteurs présents dans la bib Écrire la requête La collection ouverte Résultat de la requête NXDB - exist - XQuery IvMad, 2011-2013 32 TP - http://localhost:8080/site

NXDB - exist - XQuery IvMad, 2011-2013 33 XQuery en bref XQuery est un langage de requête pour faire des recherches dans des collections de données XML. XQuery est un langage pour l'extraction des elements et d'attributs d'un document XML ou une collection XML. XQuery est la même chose pour XML que l'est SQL pour les bases de données relationnelles. XQuery est basé essentiellement sur des expressions XPath XQuery existe chez la plupart des BD XML XQuery est une recommandation W3C La figure ci-contre montre le convergence et l'implication des différentes technologies XML. NXDB - exist - XQuery IvMad, 2011-2013 34 XQuery en bref XQuery : Langage pour interroger les données XML (arbres, DOM) Requêtes pour interroger et extraire des éléments de l'arbre. Moins maniable pour transformer l'arbre, plus souple que XSL qui est plus une transformation d arbre XML, mais utilisant tous les deux les expressions XPath Semblable à SQL pour les B.D., sauf que SQL : travaille sur des bases relationnelles : données fortement en relation dans des tables base ses requêtes sur la recherche de ces relations fortes Tables Arbre Table: Entité-Association avec relations Arbre: Dépendance hiérarchique

NXDB - exist - XQuery IvMad, 2011-2013 35 XQuery en bref Les données XML sont différentes: Les données relationnelles (SQL) sont denses Chaque rangée a une valeur dans chaque colonne Problème des valeurs nulles Document orienté données: une fiche de paye; carnet d'adresses Ce n est pas le cas de XML qui peut avoir : des éléments vides des éléments absents C est un degré de liberté supérieur pour XML Document orienté contenu: un cours d'informatique; chapitre d'un livre Les documents XML porte pour cette raison la nomination données semi-structurées NXDB - exist - XQuery IvMad, 2011-2013 36 XQuery et XPath Xpath XPath permet d'exprimer des requêtes de filtrage sur des arbres Beaucoup de contraintes. Il n'est pas possible : de créer des nœuds dans l'arbre de construire des arbres/des documents nouveaux de trier des nœuds,... Il est difficile d'exprimer des jointures (pas de variables) XQuery XQuery est un langage de requêtes complet qui permet : de créer des nœuds et de construire des arbres nouveaux de définir et d'instancier des variables de définir des fonctions,...

NXDB - exist - XQuery IvMad, 2011-2013 37 Format d une requête XQuery Une requête XQuery est une composition d expressions Chaque expression a une valeur ou retourne une erreur Forme 1 : Expressions simples : Valeurs atomiques : 46, Salut Valeurs construites : true() Forme 2 : Expressions complexes : Expressions de chemins (XPath) FILM//ACTEUR Expressions FLWR For-Let-Where-Return Tests if-then-return-else-return NXDB - exist - XQuery IvMad, 2011-2013 38 Expressions de chemins XPath Selector Selected nodes / Racine du document // Un branchement * Tout élément name @* @name text() processing-instruction( name ) comment() node() id( value ) Elément ou nom de balise Tout attribut Un attribut ou nom de balise Un nœud de texte Nom d'instruction Un nœud de commentaire Un nœud Elément ou valeur d'élément

NXDB - exist - XQuery IvMad, 2011-2013 39 Format d une requête XQuery <biblio> <book category="cooking"> <title>everyday Italian</title> <author>giada De Laurentiis </author> <year>2005</year> <price>30.00</price> </book> <book category="children"> <title lang="en">harry Potter </title> <author>j K. Rowling</author> <year>2005</year> <price>29.99</price> </book> <book category="web"> <title lang="en">learning XML </title> <author>erik T. Ray</author> <year>2003</year> <price>39.95</price> </book> </biblio> Expressions régulières Liste de tous les auteurs doc("data/books.xml")//book/author Auteur du premier livre doc("data/books.xml")//book[1]/author Liste de tous les auteurs et prix doc("data/books.xml")// book/(author, price) ou doc("data/books.xml")/(descendant::aut hor,descendant::price) Accès via un attribut: Liste des prix des livres qui ont un attribut 'title' doc("data/books.xml")//book/(@title union price) NXDB - exist - XQuery IvMad, 2011-2013 40 Une collection XML <bookstore> <book category="cooking"> <title lang="en">everyday Italian</title> <author>giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="children"> <title lang="en">harry Potter</title> <author>j K. Rowling</author> <year>2005</year> <price>29.99</price> </book> </bookstore>

NXDB - exist - XQuery IvMad, 2011-2013 41 Sélectionner un nœud XML Quelles fonctions pour sélectionner un nœud du fichier XML "books.xml"? XQuery se sert de fonctions pour l'extraction des parties d'un document XML La fonction "doc()" ouvre un fichier XML: doc("books.xml") Les expressions: XQuery utilise les expressions Xpath pour naviguer dans un document XML. L'expression suivante est utilisée pour sélectionner les éléments du titre dans le document "books.xml" doc("books.xml")/bookstore/book/title /bookstore sélectionne les éléments bookstore /book sélectionne tous les éléments book qui se trouvent sous l'élément bookstore /title sélectionne tous les éléments dans chaque éléments book NXDB - exist - XQuery IvMad, 2011-2013 42 Lancer la requête XQuery Le bouton qui soumet la requête XQuery Rédiger la requête XQuery Le résultat de la requête XQuery

NXDB - exist - XQuery IvMad, 2011-2013 43 Lancer la requête XQuery Le bouton qui soumet la requête XQuery La requête XQuery qui affiche le titre et le pays d'origine du film à travers un "union" Le résultat de la requête XQuery NXDB - exist - XQuery IvMad, 2011-2013 44 Filtrer la requête XQuery XQuery utilise des prédicats afin de limiter (filtrer) la sélection dans un document XML : Sélectionner tous les éléments book dans bookstore dont le prix est inférieur à 30 en se limitant juste à l'affichage du titre doc("books.xml") /bookstore /book[price<30] /title

NXDB - exist - XQuery IvMad, 2011-2013 45 Filtrer la requête XQuery Le langage de requête XQuery défini FLWOR ('flower') comme une expression qui prend en charge l'itération et la liaison des variables aux résultats intermédiaires. FLWOR est l'acronyme de: FOR, LET, WHERE, ORDER BY, RETURN. L'expression FLWOR qui suit produira le même résultat que celle présentée au transparent précèdent. for $x in doc("books.xml")/bookstore/book where $x/price>30 return $x/title NXDB - exist - XQuery IvMad, 2011-2013 46 Filtrer la requête XQuery Avec le format FLWOR il est possible d'avoir un résultat trié: for $x in doc("books.xml")/bookstore/book where $x/price>30 order by $x/title return $x/title La requête utilise l'opérateur for pour sélectionner tous les book contenu dans bookstore dans une variable nommé $x. La clause where selecte les éléments de book dont l'élément price contient une valeur supérieur à 30. La clause order by clause définie l'ordre de sortie de l'élément title. La clause return spécifie le contenu du retour, c.à.d. le résultat.

NXDB - exist - XQuery IvMad, 2011-2013 47 Filtrer la requête XQuery L'opérateur alternative "if-then-else": for $x in doc("books.xml")/bookstore/book return if ($x/@category="children") then <child>{data($x/title)}</child> else <adult>{data($x/title)}</adult> Dans /bookstore/book on cherche à détacher /category contenant l'étiquette "children" pour retourner le résultat balisé en <child>, sinon balisé en <adult> NXDB - exist - XQuery IvMad, 2011-2013 48 Extraire une partie de cours Requête Xquery qui extrait le schéma SVG d'un cours info (balise <para> dont l'attribut "type" contient la chaine "Schéma"

NXDB - exist - XQuery IvMad, 2011-2013 49 Quelques requêtes XQuery Lister le nom des restaurants de Marseille (Selection) FOR $R IN collection("restaurants")/restaurant WHERE $R/Adresse/Ville = "Marseille" RETURN {$R/Nom} Lister le nom des restaurants avec téléphone dans les hôtels sur la rue d'italie à Marseille (Jointure): FOR $R IN collection("restaurants")/restaurant, $H IN collection("hotels")/hotel WHERE $H//Rue = $R//Rue AND $H//Nom = "rue d'italie" RETURN <Result> {$R/Nom}{$R/Télépone} </Result> Construire une liste de restaurants par Ville (Restructuration d'arbre) FOR $c IN distinct(collection( Restaurants )/Restaurant//Ville) RETURN <Ville>{$c}</Ville><Restaurants> FOR $r IN collection( Restaurants )/Restaurant WHERE $r//ville = $c RETURN {$r} <Restaurants> Adresses des hôtels dans des villes ayant des restaurants trois étoiles (Imbrication) FOR $h IN collection("hotels")/hotel WHERE $h/adresse/ville IN FOR $r IN collection("restaurants")/restaurant WHERE $r/@categorie = "***" RETURN {$r/adresse/ville/text()} RETURN {$h/adresse} NXDB - exist - XQuery IvMad, 2011-2013 50 Quelques requêtes XQuery Combien de restaurants y-a-t-il en collection? (Agrégat simple) LET $R := collection("restaurants")/restaurant RETURN <NombreRestaurant > count ($R) </NombreRestaurant> Lister le nom de chaque restaurant avec le prix moyens des menus proposés (Agrégat partitionné) FOR $r IN collection("restaurants")//restaurant LET $a := avg(collection("restaurants")//restaurant = $r]//menu/@prix) RETURN <resultat> {$r/nom} <avgprix>{$a}</avgprix> </resultat> Lister les bons restaurants de Paris (recherche textuelle) FOR $r IN collection("restaurants")//restaurant WHERE CONTAINS ($r/comments, "Bon") OR CONTAINS ($r/comments, "Excellent") AND $r/adresse/ville = "Paris" RETURN $r/nom Lister les bons restaurants de Paris par ordre alphabétique (ordre et désordre) FOR $r IN unordered(collection("restaurants")//restaurant) WHERE $r/comments CONTAINS ("Excellent", "Good") AND $r/adresse/ville = "Paris" RETURN $r/nom SORTBY ($r/nom DESCENDING)

NXDB - exist - XQuery IvMad, 2011-2013 51 Exercices exist par XQuery Exercice 1. requêtes simples sur Films.xml Affichez tous les titres de films Affichez tous les titres de films triés par ordre alphabétique Les titres des films d'action Le résumé de Titanic Donner le nombre de films dans la collection Titre des films avec James Stewart et Kim Novak Afficher le titre et le résumé des films Donnez les titres des films qui contiennent un 'A' (utiliser la fonction contains()) Afficher les noms des acteurs principaux dans Titanic Quels rôles jouent les acteurs K. Winslet et L. DiCaprio dans le film Titanic NXDB - exist - XQuery IvMad, 2011-2013 52 exist avec Java XML:DB On utilise L'API XML:DB dont la description est disponible à l'adresse: http://exist-db.org/api/ XML:DB API permet: Gestion de la base et des collections Stockage et récupération des ressources Requêtes sur toute ou une partie de l arborescence Il existe des extensions qui permettent entre autre : La gestion des utilisateurs La gestion de plusieurs bases de données en parallèle, avec chacune une configuration propre Pour plus d informations: http://exist-db.org/exist/devguide_xmldb.xml

NXDB - exist - XQuery IvMad, 2011-2013 53 exist et XML:DB avec Eclipse Créer un nouveau projet Java sous Eclipse NXDB - exist - XQuery IvMad, 2011-2013 54 exist et XML:DB avec Eclipse Donner un nom au projet et passer à la page suivante

NXDB - exist - XQuery IvMad, 2011-2013 55 exist et XML:DB avec Eclipse Ajouter les jar qui font le lien avec l'api XML:DB de exist et sont nécessaires à la compilation et à l'exécution de l'application NXDB - exist - XQuery IvMad, 2011-2013 56 exist et XML:DB avec Eclipse Sélectionner les jar et les ajouter par le bouton "Add external JARs"

NXDB - exist - XQuery IvMad, 2011-2013 57 Accès à une collection de la BD Pour accéder à une collection, il faut se connecter au driver de la base de données exist: org.exist.xmldb.databaseimpl Il est enregistré dans le programme avec le DatabaseManager Pour extraire une collection à partir de la base de données exist on fait appel à la méthode statique DatabaseManager.getCollection ( ) L'identification d'une collection se fait par son URI complet dont le format est : xmldb : [DATABASE-ID] :// [HOST-ADDRESS] /db/ collection DATABASE-ID est "exist", HOST-ADDRESS est localhost:8080 si nous sommes en local et si le port utilisé est 8080 Si on utilise une machine distante il faut préciser son adresse IP. Par exemple: http://139.124.26.245:8080 NXDB - exist - XQuery IvMad, 2011-2013 58 Créer une classe dans le projet

NXDB - exist - XQuery IvMad, 2011-2013 59 exist et XML:DB avec Eclipse NXDB - exist - XQuery IvMad, 2011-2013 60 Requête XQuery avec Java Pour interroger la BD on peut utiliser deux services: XPathQueryService XQueryService L'API XML:DB de exist défini différents types de services: La méthode getservice de la classe Collection fait appel au service approprié Pour l'exécution d'une requête la méthode service.query(xpath) est appelée. Elle retourne un objet de type ResourceSet qui contient les ressources trouvés par la requête. ResourceSet.getIterator() est le conteneur des ressources. Chaque ressource contient un fragment de document ou une valeur sélectionner par l'expression Xpath ou XQuery.

NXDB - exist - XQuery IvMad, 2011-2013 61 Requête XQuery avec Java NXDB - exist - XQuery IvMad, 2011-2013 62 Requête XQuery avec Java Connexion à la BD: String URI = "xmldb:exist://localhost:8080/exist/xmlrpc" final String driver = "org.exist.xmldb.databaseimpl"; Class cl = Class.forName(driver); Database database = (Database) cl.newinstance(); database.setproperty("create-database", "true"); DatabaseManager.registerDatabase(database); Constitution et envoi de la requête XQuery: col = DatabaseManager.getCollection(URI + "books"); XQueryService xqs = (XQueryService) col.getservice("xqueryservice","1.0"); xqs.setproperty("indent", "yes"); CompiledExpression compiled = xqs.compile("/bookstore/book/author"); Récupération du résultat: ResourceSet result = xqs.execute(compiled); ResourceIterator i = result.getiterator(); Le pilote XML:DB La collection à interroger Adresse de la collection Le requête XQuery

NXDB - exist - XQuery IvMad, 2011-2013 63 Requête XQuery avec Eclipse NXDB - exist - XQuery IvMad, 2011-2013 64 Ecrire un fichier dans une collection Deux arguments à la ligne de commande ou fixes en programme Recherche de la collection Création d'une nouvelle ressource

NXDB - exist - XQuery IvMad, 2011-2013 65 Ecrire un fichier dans une collection NXDB - exist - XQuery IvMad, 2011-2013 66 Exercices de requêtes avec Java Affichez tous les titres de films Afficher le titre du film avec un auteur choisi Afficher le titre du livre de la collection 'biblio' dont le nom de l'auteur est 'Scholl' Afficher les titres des films ordonnés par genre Afficher la collection 'films' Afficher la collection 'biblio' Afficher le titre des films avec 'Kate Winslet' et 'Leonardo DiCaprio' Composer la requête XQuery qui répond à la question: Quel rôle joue 'Kate Winslet' dans le film 'Titanic'. Afficher le 'Résumé' du film avec 'John Travolta' Remarque: Effectuez les requêtes XQuery par l'interface XQuery de exist et par un programme Java

NXDB - exist - XQuery IvMad, 2011-2013 67 Accès aux supports du cours Les transparents du cours sont accessibles à l'adresse: http://ivmad.free.fr/ic4/cours-ivmad-exist-m2-2013.pdf ou http://139.124.26.245/ic4/cours-ivmad-exist-m2-2013.pdf Le support du TP: Tomcat-eXist-Exercices est accessible à l'adresse: http://ivmad.free.fr/ic4/tomcat-exist.rar ou http://139.124.26.245/ic4/tomcat-exist.rar Adresse de contact: ivan.madjarov@lsis.org