Bases de données et XML. Évaluation d un programme XSLT p.1/??



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

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

Chapitre IX. L intégration de données. Les entrepôts de données (Data Warehouses) Motivation. Le problème

Module BD et sites WEB

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

BD et XML : Exercices

Bases de Données relationnelles et leurs systèmes de Gestion

Faculté de Génie Chaire industrielle en infrastructures de communication. La technologie XML. Wajdi Elleuch

Bases de données - Modèle relationnel

Compte Rendu d intégration d application

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

Information utiles. webpage : Google+ : digiusto/

Cours Bases de données

Bases de données Cours 1 : Généralités sur les bases de données

Cours Base de données relationnelles. M. Boughanem, IUP STRI

Bases de données cours 1

1 Introduction et installation

Présentation du module Base de données spatio-temporelles

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

Server-side XML. PAS FINI... mais ok pour un début. Originaux. Auteurs et version. Prérequis: Java de base, servlets, GUI et XML

CREATION WEB DYNAMIQUE

Bases de Données. Plan

Formation : WEbMaster

Évaluation et optimisation de requêtes

4. SERVICES WEB REST 46

XML : documents et outils

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

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

Systèmes d information et bases de données (niveau 1)

A QUOI SERVENT LES BASES DE DONNÉES?

Hébergement de site web Damien Nouvel

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)

Bases de données avancées Introduction

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

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

1 Modélisation d une base de données pour une société de bourse

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

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

TP base de données SQLite. 1 Différents choix possibles et choix de SQLite : 2 Définir une base de donnée avec SQLite Manager

Bases de données cours 4 Construction de requêtes en SQL. Catalin Dima

Evolution et architecture des systèmes d'information, de l'internet. Impact sur les IDS. IDS2014, Nailloux 26-28/05/2014

XML, PMML, SOAP. Rapport. EPITA SCIA Promo janvier Julien Lemoine Alexandre Thibault Nicolas Wiest-Million

<?xml version="1.0" encoding="iso " standalone="yes"?>

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Master d Informatique Corrigé du partiel novembre 2010

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Implémentation des SGBD

Hébergement de sites Web

Gestion collaborative de documents

Devenez un véritable développeur web en 3 mois!

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)

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

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

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

Développement des Systèmes d Information

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

PROJET DE PORTAIL INTRANET YNNA

<Insert Picture Here>ApExposé. Cédric MYLLE 05 Février Exposé Système et Réseaux : ApEx, Application Express d Oracle

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

BASE DE DONNÉES XML NATIVE

Introduction à la B.I. Avec SQL Server 2008

Mise en œuvre des serveurs d application

COMMUNICATION TECHNIQUE N TCV060 Ed. 01. OmniVista 4760 Nb de pages : 18 Date : URGENTE NON URGENTE TEMPORAIRE DEFINITIVE

Création et Gestion des tables

Bases de données et sites WEB Licence d informatique LI345

Sélection d un moteur de recherche pour intranet : Les sept points à prendre en compte

Le langage SQL Rappels

Les Entrepôts de Données

Bases de Données Avancées

Oracle Maximum Availability Architecture

Mercredi 15 Janvier 2014

SQL Server 2012 et SQL Server 2014

CHAPITRE 1. Introduction aux bases de données

Application web de gestion de comptes en banques

Bases de Données. Stella MARC-ZWECKER. Maître de conférences Dpt. Informatique - UdS

Les architectures 3-tiers Partie I : les applications WEB

Formation en Logiciels Libres. Fiche d inscription


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

BASES DE DONNÉES. CNAM Centre associé de Clermont-Ferrand Cycle A Année J. Darmont I. INTRODUCTION II. LES SYSTÈMES HIÉRARCHIQUES

Structure fonctionnelle d un SGBD

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

CESI Bases de données

Présentation Alfresco

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.

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

I4 : Bases de Données

Catalogue des Formations

Evidian IAM Suite 8.0 Identity Management

TP11 - Administration/Tuning

Evry - M2 MIAGE Entrepôts de Données

Les bases de données

Bases de données documentaires et distribuées Cours NFE04

Bases de données élémentaires Maude Manouvrier

SQL SERVER 2008, BUSINESS INTELLIGENCE

W4 - Workflow La base des applications agiles

Bases de données et sites WEB

Transcription:

Bases de données et XML Évaluation d un programme XSLT p.1/??

Quelques questions XML, format de bases de données? Pas vraiment : stockage inefficace, pas très structuré, pas (encore) de langage de requête Doit-on associer une BD à XML? Oui, pour l indexation, les transactions, les mises à jour, etc => encore une fois, XML est plutôt un format d échange et d intégration Évaluation d un programme XSLT p.2/??

Données et documents Dans une base, il y a des données : Très structurées Granularité fine Typées Et dans un document XML? Pas de typage Beaucoup de texte Une structure très souple Évaluation d un programme XSLT p.3/??

Situations mixtes Systèmes d information où la séparation données/document n est pas très nette. Un part de description textuelle est de nature «document» Exemple : tout le texte présentant un cinéma, ses activités, etc Une part est contenue dans une base de données Exemple : les films Évaluation d un programme XSLT p.4/??

XML dynamique XML : moyen de rendre publique (= publier) tout ou partie d une BD. Besoin : intégrer du XML statique, et des parties de code effectuant du SQL Mieux : comment éviter le mélange programmation/gestion du contenu (séparation des points de vue) => même problème que HTML + (PHP, ASP, JSP)... Évaluation d un programme XSLT p.5/??

Architecture générale Déclenchement du code par «balises dynamiques» Partie statique Balises "dynamiques" Partie statique Document initial Code SQL Base de données Partie statique <fragment XML> Partie statique Document intermédiaire Publication XSLT Évaluation d un programme XSLT p.6/??

Première étape : transformation BD relationnelle vers XML Évaluation d un programme XSLT p.7/??

Notre base de données Des stations où séjournent des clients. Station (nomstation, capacité, lieu, région, tarif) Activité (nomstation, libellé, prix) Client (id, nom, prénom, ville, région, solde) Séjour (idclient, station, début, nbplaces) un schéma avec clés primaires et clés étrangères Évaluation d un programme XSLT p.8/??

Une instance nomstation capacité lieu région tarif Venusa 350 Guadeloupe Antilles 1200 Passac 400 Alpes Europe 1000 La table Station nomstation libellé prix Venusa Voile 150 Venusa Plongée Passac Ski 200 Passac Piscine 20 La table Activité Évaluation d un programme XSLT p.9/??

Une instance id nom prénom ville région solde 10 Fogg Phileas Londres Europe 12465 30 Kerouac Jack New York Amérique 9812 idclient station début nbplaces 30 Santalba 2001-08-14 5 30 Passac 2001-08-15 3 30 Venusa 2001-08-03 3 30 Farniente 2002-06-24 5 10 Farniente 2002-09-05 3 Évaluation d un programme XSLT p.10/??

Réprésentation XML : avec éléments Trois niveaux d éléments dans l arbre : table, lignes, attributs <?xml version= 1.0 encoding= ISO-8859-1?> <Stations> <Station> <nomstation>venusa</nomstation> <capacite>350</capacite> <lieu>guadeloupe</lieu> <region>antilles</region> <tarif>1200.00</tarif> </Station> </Stations> Tous représentés par des éléments Évaluation d un programme XSLT p.11/??

Réprésentation XML : avec attributs Deux niveaux d éléments tables et lignes : <?xml version= 1.0 encoding= ISO-8859-1?> <Stations> <Station nomstation= Venusa capacite= 350 lieu= Guadeloupe region= Antilles tarif= 1200.00 /> </Stations> Attributs relationnels attributs XML Évaluation d un programme XSLT p.12/??

Petite discussion La représentation avec attributs est plus proche du relationnel car : Absence d ordre sur les attributs en XML comme en relationnel. On ne peut pas avoir deux fois un attribut avec le même nom. On peut, avec une DTD, donner la liste des valeurs acceptées pour un attribut. De plus, moins volumineux Évaluation d un programme XSLT p.13/??

Représentation des associations L équivalent du relationnel en XML <?xml version= 1.0 encoding= ISO-8859-1?> <Stations> <Station nomstation= Venusa capacite= 350 lieu= Guadeloupe region= Antilles tarif= 1200.00 /> <Activite nomstation= Venusa libelle= Voile prix= 150.00 /> <Activite nomstation= Venusa libelle= Plongee /> </Stations> Évaluation d un programme XSLT p.14/??

Pourquoi cette représentation En relationnel : tout est représenté «à plat» on associe les lignes par le système clé primaire/clé étrangère on fait le rapprochement par un calcul (la jointure) assez coûteux Intérêt : simple, raisonnablement efficace, évite les redondances Évaluation d un programme XSLT p.15/??

Et en XML? Le modèle est plus puissant même représentation possible toujours aussi coûteux pas nécessaire de garder la représentation «à plat» On peut exploiter une représentation imbriquée quand c est judicieux. Évaluation d un programme XSLT p.16/??

Représentation imbriquée On exploite le fait qu une activité est relative à une seule station <?xml version= 1.0 encoding= ISO-8859-1?> <Stations> <Station nomstation= Venusa capacite= 350 lieu= Guadeloupe region= Antilles tarif= 1200.00 > <Activite libelle= Voile prix= 150.00 /> <Activite libelle= Plongee /> </Station> </Stations> Évaluation d un programme XSLT p.17/??

Associations plusieurs à plusieurs Beaucoup moins évident à gérer. Exemple avec l association Client/Station Un client peut aller dans plusieurs stations Un station peut accueillir plusieurs clients En relationnel, on crée une table intermédiaire (Les séjours) Séjour (idclient, station, début, nbplaces) Évaluation d un programme XSLT p.18/??

Exemple <?xml version= 1.0 encoding= ISO-8859-1?> <Station nomstation= Venusa region= Antilles tarif= 1200.00 > <Sejour idclient= 30 debut= 2001-08-03 nbplaces= 3 /> </Station> <Station nomstation= Farniente region= Océan Indien tarif= 1500.00 > <Sejour idclient= 30 debut= 2002-06-24 nbplaces= 5 /> </Station> <Client id= 30 nom= Kerouac prenom= Jack ville= New York /> Évaluation d un programme XSLT p.19/??

Solution ultime On choisit une racine (par exemple les stations) et on imbrique tout les séjours sont des éléments dans les stations les clients sont des éléments dans les séjours On introduit une certaine redondance : les clients apparaissent plusieurs fois Évaluation d un programme XSLT p.20/??

Solution ultime : exemple <?xml version= 1.0 encoding= ISO-8859-1?> <Station nomstation= Venusa region= Antilles tarif= 1200.00 > <Sejour nom= Kerouac prenom= Jack ville= New York /> debut= 2001-08-03 nbplaces= 3 /> </Station> <Station nomstation= Farniente region= Océan Indien tarif= 1500.00 > <Sejour nom= Kerouac prenom= Jack ville= New York debut= 2002-06-24 nbplaces= 5 /> </Station> Évaluation d un programme XSLT p.21/??

Déclaration de la DTD Évaluation d un programme XSLT p.22/??

Pourquoi une DTD? En général on exporte une base de données pour fournir une «vue» XML à d autres utilisateurs. Il faut donc fournir une description de la structure XML. On utilise (pour l instant) les Document Type Definition NB : la DTD peut aussi servir à valider des documents (en utilisant un parseur validant) Évaluation d un programme XSLT p.23/??

DTD de la base Station On suppose que : les colonnes sont représentées par des attributs XML ; le chemin d accès principal est la station ; pour chaque station on trouve, imbriqués, les séjours de la station, et dans chaque séjour les clients qui ont séjourné dans la station ; les activités de la station sont représentées par des éléments indépendants, avec un lien de navigation. Évaluation d un programme XSLT p.24/??

Qu est-ce qu une DTD? Un description du contenu (attributs et fils) de chaque élément. Exemple général : <!ELEMENT Stations (Station*)> <!ELEMENT Station (Sejour*)> <!ATTLIST Station nomstation ID #REQUIRED capacite CDATA #IMPLIED lieu CDATA #REQUIRED > tarif region CDATA #REQUIRED (Antilles Europe Amérique Asie) #REQUIRED Évaluation d un programme XSLT p.25/??

Contenu d un élément La forme générale de définition d un élément est : <!ELEMENT nom structure> La structure décrit le modèle de contenu avec le type, l ordre et le nombre d occurrences des fils. A, B : un A suivi d un B A, B* : un A suivi de 0 ou plusieurs B A, B?, C+: un A, suivi de 0 ou 1 B, suivi d au moins un C A, (B C)* : un A suivi de plusieurs B ou C dans n importe quel ordre Évaluation d un programme XSLT p.26/??

Types et contraintes dans une DTD Les principaux types sont : CDATA (pour les attributs) et #PCDATA (pour les éléments) : chaînes de caractères ID : identifiant d un nœud dans le document. IDREF : réf. un nœud du même document Les contraintes : #IMPLIED pour les attributs facultatifs #REQUIRED pour les attributs obligatoires Évaluation d un programme XSLT p.27/??

Suite de la DTD Station <!ELEMENT Sejour (Client)> <!ATTLIST Sejour debut CDATA #REQUIRED nbplaces CDATA #REQUIRED > <!ELEMENT Client EMPTY> <!ATTLIST Client id ID #REQUIRED nom CDATA #REQUIRED prenom CDATA #REQUIRED ville CDATA #REQUIRED region CDATA #REQUIRED solde CDATA #REQUIRED > Évaluation d un programme XSLT p.28/??

Fin de DTD Station On déclare une référence depuis Activité vers Station. <!ELEMENT Activite EMPTY> <!ATTLIST Activite nomstation IDREF #REQUIRED libelle CDATA #REQUIRED prix CDATA #IMPLIED > NB : identifiants et références ne tiennent pas compte du type des éléments. Évaluation d un programme XSLT p.29/??

Architectures Évaluation d un programme XSLT p.30/??

Problématique une base de données, contenant des informations gérées par des applications de gestion ou autre des informations textuelles et informelles relatives à l activité de l entreprise nécessité de publier toutes ces informations dans différents formats (le Web, une plaquette, un rapport d activité...) Problème : comment éviter de manipuler tous les outils à la fois Évaluation d un programme XSLT p.31/??

Séparation des points de vue la base de données est relationnele : efficacité, simplicité, services avancés de traitement des données (transactions, sécurité, etc) une «vue» XML des données, intégrant celles issues de la base, et les informations textuelles diverses des traitements de mise en forme, s appuyant sur la vue XML, chacun à destination d un support particulier Évaluation d un programme XSLT p.32/??

L utilitaire XSQL d ORACLE Oracle propose un XML Development Kit avec : DOM, SAX, processeur XSLT et nombreux utilitaires (en java). XSQL est un SQL mis à la sauce XML. Il permet : de se connecter à la base d effectuer une requête de mettre en forme XML le résultat, selon certains paramètres d enchaîner avec une transformation XSLT Évaluation d un programme XSLT p.33/??

Une page XSQL minipale C est un document XML. <?xml version="1.0"?> <xsql:query connection="maconnexion" xmlns:xsql="urn:oracle-xsql"> SELECT Hello World AS TEXT FROM Dual </xsql:query> Les instructions XSQL sont identifiées par l espace de nom xsql: Évaluation d un programme XSLT p.34/??

Le résultat C est encore document XML, avec la représentation en éléments du résultat de la requête. <?xml version="1.0"?> <ROWSET> <ROW num= 1 > <TEXT>Hello World</TEXT> </ROW> </ROWSET> Évaluation d un programme XSLT p.35/??

Pour effectuer une transformation Très simple : on ajoute une instruction indiquant le programme de transformation à appliquer. <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="helloworld.xsl"?> <xsql:query connection="maconnexion" xmlns:xsql="urn:oracle-xsql"> SELECT Hello World AS TEXT FROM Dual </xsql:query> NB : la requête est effectuée avant la transformation. Évaluation d un programme XSLT p.36/??

Utilisation plus générale de XSQL <Promotion NO="1"> <Description> Cette semaine nous proposons une promotion exceptionnelle sur bla bla bla </Description> <xsql:query connection="connexionbase" xmlns:xsql="urn:oracle-xsql"> SELECT * FROM Station WHERE nomstation= Passac </xsql:query> </Promotion> Utilisable dans les contextes Servlets, JSP, etc. Évaluation d un programme XSLT p.37/??

Le format de sortie Par défaut le format de sortie est le suivant : <?xml version="1.0" encoding="iso-8859-1"?> <ROWSET> <ROW num="1"> <NOMSTATION>Passac</NOMSTATION> <CAPACITE>400</CAPACITE> <LIEU>Alpes</LIEU> <REGION>Europe</REGION> <TARIF>1000</TARIF> </ROW> </ROWSET> Mais tout est paramétrable Évaluation d un programme XSLT p.38/??

Ce qu on peut faire avec XSQL On fait les choses simples simplement, et on peut faire des choses compliquées. Utiliser des paramètres dans la requête Placer plusieurs requêtes dans une page Contrôler le format XML de sortie Produire plusieurs formats de sortie avec XSLT Voir les exemples proposés en TD/TP. Évaluation d un programme XSLT p.39/??

Exemple de paramètres Des paramètres (HTTP, Cookies, autre) peuvent être exploités dans la requête. <?xml version="1.0"?> <xsql:query connection="maconnexion" xmlns:xsql="urn:oracle-xsql"> SELECT * FROM Station WHERE nomstation= {@nom} </xsql:query> Évaluation d un programme XSLT p.40/??

Contrôle du résultat XML On peut remplacer ROWSET et ROW par des noms explicites. <?xml version="1.0" encoding="iso-8859-1"?> <xsql:query connection="maconnexion" xmlns:xsql="urn:oracle-xsql" rowset-element= STATIONS row-element= STATION > SELECT * FROM Station WHERE nomstation= Passac </xsql:query> Évaluation d un programme XSLT p.41/??

Le résultat <?xml version="1.0" encoding="iso-8859-1"?> <STATIONS> <STATION num="1"> <NOMSTATION>Passac</NOMSTATION> <CAPACITE>400</CAPACITE> <LIEU>Alpes</LIEU> <REGION>Europe</REGION> <TARIF>1000</TARIF> </STATION> </STATIONS> NB : on peut aussi indiquer l identifiant, gérer les valeurs nulles, etc. Évaluation d un programme XSLT p.42/??

Avec paramètres Les paramètres peuvent aussi être utilisés dans les atttributs de <xsql:query>. Exemple : <?xml version="1.0" encoding="iso-8859-1"?> <xsql:query connection="connexionvisiteur" xmlns:xsql="urn:oracle-xsql" rowset-element="{@racine}" row-element="{@element}"> SELECT * FROM Station WHERE nomstation= {@nomstation} </xsql:query> Évaluation d un programme XSLT p.43/??

Et l imbrication Par défaut la représentation est «à plat», comme en relationnel. On peut spécifier la création de XML imbriqué de la manière suivante : SELECT nomstation, capacite, CURSOR(SELECT libelle, prix FROM Activite WHERE A.nomStation = S.nomStation) AS activites FROM Station S Évaluation d un programme XSLT p.44/??

Le résultat <ROWSET> <ROW num= 1 > <nomstation>passac</nomstation> <capacite>400</capacite> <activites> <activites_row num= 1 > <libelle>ski</libelle> <prix>200.00</prix> </activites_row> <activites_row num= 2 > <libelle>piscine</libelle> <prix>20.00</prix> </activites_row > </activites> </ROW> </ROWSET> Évaluation d un programme XSLT p.45/??

Transformations XSLT <?xml version="1.0" encoding="iso-8859-1"?> <?xml-stylesheet href="film.xsl" type="text/xs <FILM> <TITRE>Alien</TITRE> <AUTEUR>Ridley Scott</AUTEUR> <ANNEE>1979</ANNEE> <GENRE>Science-fiction</GENRE> <PAYS>Etats Unis</PAYS> <RESUME>Près d un vaisseau spatial échoué planète, des Terriens en mission découv "oeufs". Ils en ramènent un à bord, ign d introduire parmi eux un huitième pass féroce et meurtrier. </RESUME> </FILM> Évaluation d un programme XSLT p.46/??

Avec xsql:include-xml On inclut le document XML. <?xml version="1.0" encoding="iso-8859-1"?> <?xml-stylesheet href="cinema.xsl" type="text/xsl"?> <page xmlns:xsql="urn:oracle-xsql"> <xsql:include-xml href="epee.xml"/> </page> Évaluation d un programme XSLT p.47/??

Pour la version WML Avantage : on peut lui appliquer une autre transformation XSLT. <?xml version="1.0" encoding="iso-8859-1"?> <?xml-stylesheet href="cinemawml.xsl" type="text/xsl"?> <page xmlns:xsql="urn:oracle-xsql"> <xsql:include-xml href="epee.xml"/> </page> Évaluation d un programme XSLT p.48/??