660 likes | 769 Views
Intégration d'information avec XML. Patrick Valduriez Lip6 Université Paris 6 Patrick.Valduriez@lip6.fr http://www-poleia.lip6.fr/~valdurie/patrick.html. Bibliographie. The XML Handbook. C. Goldfard, P. Prescod, Prentice Hall, 2000
E N D
Intégration d'information avec XML • Patrick Valduriez • Lip6 • Université Paris 6 • Patrick.Valduriez@lip6.fr • http://www-poleia.lip6.fr/~valdurie/patrick.html
Bibliographie • The XML Handbook. C. Goldfard, P. Prescod, Prentice Hall, 2000 • Data on the Web. S. Abiteboul, P. Buneman, D. Suciu, Morgan Kaufmann, 1999 • Principles of Distributed Database Systems (2nd ed.). T. Özsu, P. Valduriez, Prentice Hall, 1999 • Object Technology. M. Bouzeghoub, G. Gardarin, P. Valduriez, Thomson Computer Press, en français chez Eyrolles,1997
Plan • Introduction à XML • DTD, XMLschema • Manipulation de données XML • XPath, XSL, Xquery, DOM • Intégration de données avec XML • architectures, stockage, médiateurs • Intégration d'applications • SOAP, ebXML, Web services, .NET
Couplage HTML-base de données • Serveur HTTP dynamique • basé sur CGI, ne passe pas à l’échelle • serveur Web dédié aux BD, solution propriétaire • Oracle WebDB, VersantWeb, etc. • Pages serveurs dynamiques • MS Active Server Pages (ASP) • Java Server Pages (JSP) • Personal Home Pages (PHP)
Page server dynamique • Page HTML avec scripts pour accéder la base de données • variables et paramètres avec des tags spéciaux • templates pour la présentation des résultats en HTML <HTML> <BODY><H1>Result of your selection</H1> <%select Q1 = "select A1, A2 from R where ... " %> <%iterate Q1 %> <TABLE> <TR><TD> "A1"</TD> <TD> "A2 "</TD></TR> <TR><TD>%Q1.A1%</TD> <TD>%Q1.A2</TD></TR> <%end-iterate%> </TABLE> </BODY> </HTML>
Limitations du couplage HTML-BD • Solutions propriétaires • excepté JSP • Pas de protocolepour publier les données • SQL n’est pas conçu pour le Web • transformations limitées avec les templates • Pas de format d’échange de données standard: HTML est un format de présentation • mélange présentation et contenu • pas de structure, pas de sémantique, pas de contrainte d’intégrité • perd la structure (schéma) provenant de la BD
La règle d’or (Goldfard) • Le contenudoit être abstrait et indépendant du stockage et de la présentation • permet l’intégration uniforme de données hétérogènes • provenant de différentes sources de données • permet des applications dynamiques • la présentation doit pouvoir être différente selon le medium, le temps la requête ou le profil de l’utilisateur
XML pour l’échange de données universel • Le langage XML • standard du W3C • décrit le contenu, pas la présentation • structure, type, schéma, requêtes, etc. • HTML XML SGML • indépendance des données au stockage et à la présentation • supportela règle d’or • Facilite l’échange de données entre applications
HTML <h1> Bibliography </h1> <p> <i> Principles of Distributed Database Systems </i> Ozsu, Valduriez <br> Prentice Hall, 1999 <p> <i> Data on the Web </i> Abiteboul, Buneman, Vianu <br> Morgan Kaufmann, 1999
XML décrit le contenu <bibliography> <book> <title> Principles of Distributed Database Systems </title> <author> Ozsu </author> <author> Valduriez </author> <publisher> Prentice Hall </publisher> <year> 1999 </year> </book> <book> <title> Data on the Web </title> <author> Abiteboul </author> <author> Buneman </author> <author> Vianu </author> <publisher> Morgan Kaufmann </publisher> <year> 1999 </year> </book>
Différences avec HTML • Les utilisateurs peuvent définir leurs propres tags pour indiquer la structure • plus verbeux que HTML • Un document XML ne fournit pas d’instruction pour la présentation • dans des stylesheets séparés pour convertir en HTML • Les structures peuvent être arbitrairement imbriquées • Un document XML peut avoir une description optionnelle de sa grammaire (DTD)
Terminologie • Tags: book, title, author • similaire aux attributs dans une base de données • Markups: start tag <book>, end tag </book> • Les données sont du texte en PCDATA (Parsed Character Data) • caractères Unicode • Eléments: <book> ... </book>, <author> ... </author> • Elément vide: <year></year> abbrv. <year/> • Les éléments sont imbriqués • Un document XML : élément racine
Attributs • Propriétés supplémentaires des tags • paires (nom= "valeur ") <book lang="English"price="US$59.99"> <title> Principles of Distributed Database Systems </title> <author> Ozsu </author> <author> Valduriez </author> ... </book>
Identifiants et références • Les éléments peuvent avoir des identifiants uniques, comme la valeur d’un certain attribut, utilisés comme références <person id="o1"> <name> Ozsu </name> </person> <person id="o2"> <name> Valduriez </name> </person> <book> <title> Principles of Distributed Database Systems </title> <authors idref="o1 o2"/> <publisher> Prentice Hall </publisher> <year> 1999 </year> </book>
Pas de schéma, données auto-descriptives Pas de typage Décrit par un graphe étiquetté noeud = tag feuille = tag + texte arc étiquetté = référence Modèle de données semi-structuré Person Person Name Name idref Ozsu Valduriez Authors Book Title Publisher Year Principles of ... Prentice Hall 1999
Définition de type de document (DTD) • Définit la structure logique du document • grammaire du document • contraint la structure avec typage faible • Document valide • document bien formé conforme à sa DTD • vérifié par un parser
DTD simple • DTD pour un document contenant un nombre arbitraire de livres <!DOCTYPE db [ <!ELEMENT db (book)*> <!ELEMENT book (title,author,year)> <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)> <!ELEMENT year (#PCDATA)> ]> L’ordre des éléments est contraint
DTD comme grammaire récursive • DTD décrivant des arbres binaires et un document valide <!ELEMENT node (leaf l (node,node))> <!ELEMENT leaf (#PCDATA)> <node> <node> <node><leaf> 1 </leaf> </node> <node><leaf> 2 </leaf> </node> </node> <node><leaf> 3 </leaf> </node> </node> 3 1 2
DTD comme schéma • DTD pour le schéma relationnel r(a,b), s(c) <!DOCTYPE db [ <!ELEMENT db (r*, s*)> <!ELEMENT r ((a,b) l (b,a))> <!ELEMENT s (c)> <!ELEMENT a (#PCDATA)> <!ELEMENT b (#PCDATA)> <!ELEMENT c (#PCDATA)> ]> • Limitations • très verbeux • un seul type atomique (PCDATA) • pas de contrainte sur le type de IDREF
Schéma défini en XML associe des types de données aux attributs et éléments Remplace les DTD typage plus complet namespaces En cours de standardisation par le W3C XML Schema <Schema xmlns:dt="urn:schemas-microsoft-com:datatypes"> <elementType name="title" content="textOnly"/> <attributeType name="price" dt:type="float" required="yes"/> <elementType name= "author" content="textOnly"/> <elementType name= "book" content="mixed"> <element type= "title"/> <attribute type= "price"/> <element type= "author"/> </elementType> </Schema> XML
Motivations pour un langage de requêtes • Granularité d’accès HTML = document (fichier) • Langages de requêtes (SQL) • extraction rapide d’un sous-ensemble utile de la base • niveau de granularité arbitraire • élément simple • éléments multiples, combinés • agrégats, etc. • Pourquoi un langage de requêtes pour XML? • pour définir la granularité d’accès aux données XML • éléments dans un document • collections de documents • navigation
Expressions de chemins • Modèle de données XML = graphe dont les noeuds sont des éléments • Expression de chemins • séquence de noeuds T1.T2. ... .Tn • retourne un ou plusieurs noeuds Tn, tels qu’il existe des arcs T1 T2, ... Tn-1 Tn, db db.Book.Author Book Book Author Author Author Title Author A1 A2 A1 T1 A2
XPath • Expressions de chemins XML standard • suit la notation URL • prédicats pour spécifier des éléments ou des valeurs d’attributs • Brique de base pour d’autres standards XML • Xlink • liens avec URL • Xpointer • pour référencer l’intérieur d’un document • XSL • XQuery • langage de requête pour docs XML
Expressions XPath • / l’élément racine • /db l’élément db sous root • db/book un élément book dans db • db//book ... à n’importe quelle profondeur • @price un attribut price • db/book/@price un attribut price dans book, dans db • db/book[@price] éléments book avec un attribut price • db/book[@price=’10’] ... avec une valeur price de 10 • //book/para[2] le second paragraphe de n’importe quel élément book
XSL • Language de spécification de stylesheets • langage de transformation XSLT • XML XML • XML XHTML • langage de formatage XSLFO • Programme XSLT = { règle de production} de la forme • si <condition> alors <production> • condition : match=<chemin XPath> • production : action <chemin XPath> • Traitement XSLT • application récursive des règles templates de la racine aux feuilles
Exemple XSLT <xsl:template><xsl:apply-templates/> </xsl:template> <xsl:template match= "/bib/*/title"><result> <xsl:value-of> </result> </xsl:template> <bib> <book> <title> T1 </title> <author> A1 </author> </book> <paper> <title> T2 </title> <author> A2 </author> </paper> <book> <title> T3 </title> <author> A3 </author> </book> <bib/> <result>T1</result> <result>T2</result> <result>T3</result>
Exemple de génération HTML <xsl:template match= "/bib"> <html:head> <html:title> Book Titles </html:title> </html:head> <html:body> <xsl:apply-templates/> </html:body> </xsl:template> <xsl:template match="book/title"> <html:p> <xsl:value-of> </html:p> </xsl:template> <HTML> <HEAD> <TITLE> Book Titles </TITLE> </HEAD> <BODY> <P> T1 </P> <P> T3 </P> </BODY> </HTML>
XQuery • Standard prévu fin 2001 • proposé par Chamberlin (IBM), Florescu (Propel) et al. • basé sur XML-QL (AT&T Research) • très puissant • sélection, projection, jointure, imbrication, agrégats, tri, etc. • Requêtes • de la forme (simplifiée) for $<var> in <forêt>, … where <condition> return <résultat> • une forêt est sélectionnée par un document et une expression XPath
Sélection en XQuery • for $R in document(Guide)/Restaurant • where $R/Adresse/Ville = "Agadir" • return • <restau> $R/Nom </restau> Noms des restaurants d'Agadir
Jointure en XQuery • for $R in document(GuideR)/Restaurant, • $H in document(GuideH)/Hotel • where $H//Rue like $R//Rue • and $H//Nom = "Agadir" • return • <result> • <nom> $R/Nom </nom> • <tel> $R/Tel </tel> • </result> Noms et tél. des restaurants dans la rue de l'hôtel Agadir
Interfaces de programmation XML • Pour manipuler (lire, écrire, transformer) des documents XMLavec un programme, il faut • un parser pour lire le texte XML et reconnaitre sa structure • vérifier que le document est bien formé • vérifier que le document est valide (validating parser) • du code applicatif, appelé par le parser • APIs standardspour XML • Simple API for XML (SAX) • Document Object Model (DOM)
Où gérer le XML? • Initialement, au niveau du serveur d'application • XML produit dynamiquement à partir de BD • A terme, au niveau du SGBD • XML produit directement par des outils basés sur DOM • XML obtenu à partir d'accès à des sources de données hétérogènes
XML comme modèle d'intégration DB1 OLE DB Serveur d'application JDBC DB2 HTMLXML XMLSQL ODBC XSL DB3
XML comme modèle d'accès DB1 XML Serveur d'application XML DB2 Médiateur XML HTMLXML XML XML Schema XSL DB3
Gestion de données XML • SGBD relationnel-objet • Oracle8i, IBM DB2, MS SQLServer8, Informix, Sybase • SGBD orienté-objet • ODI eXcelon, Poet XML Repository • Serveurs XML • SAG Tamino, BlueStone XML Server, Ipedo XML Database, XYZfind Server, X-Hive db, etc.
Comment stocker un document XML? • Problèmes • doc.= graphe d’éléments • schéma (DTD) optionnel • Solutions • Binary Long Object (BLOB) • classes prédéfinies • tables relationnelles • classes spécifiques Doc. Book Book B1 B2 Authors Authors Person Person Person P1 P2 P3
Doc. Book Book B1 B2 Authors Authors Person Person Person P1 P2 P3 BLOB • Chaque document est stocké comme un BLOB textuel • utilisé par les SGBDOR • Forces • pas besoin de schéma • recherche textuelle • Faiblesses • inefficace pour les grands docs
Classes prédéfinies • Chaque document est stocké comme un graphe d’objets éléments • utilisé par les SGBDOO • Forces • pas besoin de schéma • navigation • Faiblesses • n’exploite pas le placement et les index Doc. Elt.1 Elt.2 Elt.3 Elt.4 Elt.5 Elt.6 Elt.6
Tables relationnelles • Les éléments de documents sont groupés dans des tables • utilisé par les SGBDOR • Forces • exploite le schéma • efficace pour de grands documents avec collections • Faiblesses • surcoût de stockage pour les petits documents • navigation inefficace Books ID Title .... Authors B1 ..... P1,P2 B2 ..... P2,P3 Persons ID Name Org. ... P1 ..... P2 ..... P3 .....
Classes spécifiques • Chaque document est stocké comme un graphe d’objets de classes DTD • utilisé par les serveurs XML • Forces • exploite le schéma et les index • navigation Doc. B1 B2 P1 P2 P3
Support XML dans Oracle8i • Parsers XML • Processeurs XSL • Générateurs de classes XML • pour créer des docs XML pour utilisation dans des apps, applets et JSP • XML Java Beans • pour ajouter la visualisation • XSQL Servlets • pour produire dynamiquement du XML ou du HTML à partir de requêtes SQL • XML SQL utility • pour lire et écrire des docs XML dans la BD • BLOB et tables relationnelles
Traitement de XSQL <?xml version="1.1"?> <query connection=“xmldb"> select value(a) as Author from authors a where a.book.title=‘t...’ </query> XSQL doc. XSQL Servlet Schema Tables, BLOBs XML parser XSL processor XML SQL Utilities XML doc.
Tamino: serveur XML pour e-business HTTP Server E-business apps, e.g. Bolero XQL or URL/query XML X-Machine SDK native XML storage programming Adabas DB2, ... XML SQL X-Node Data mapping
X-Machine • Système de stockage et de recherche XML deTamino • stockage des objets XML avec des classes spécifiques • data maps (schéma dérivé des DTD) • requêtes XML • simple avec URL • plus complexe avec XQL • interpréteur de requêtes • transactions • utilitaires • chargement de grand documents XML
Cachent l’hétérogénéité des sources Adaptateur1 Adaptateur2 Adaptateur3 Architecture de médiation Projet I3 (DARPA) Source1 Catalogue global Médiateur Source2 Requête Donne une vue globale des sources Source3
décomposition de la requête schéma local Schéma schéma local global schéma local composition du résultat Médiateur XML Médiateur Adaptateur1 XQuery Source1 Requêtes Adaptateur2 Source2 Résultats Adaptateur3 Source3 XML interfaces différentes
Intégration de données en relationnel • Problèmes: renommage et introduction de valeurs nulles Emp = Emp@Site1 U Emp@Site2 ville tel. prenom nom null Anne null Jean P. Dupont Martin A. Martin Smith Paris Nantes Nantes Lille 0140... null 0235… null Emp@Site1 Emp@Site2 nom ville tel. prenom nomF ville Nantes Lille Martin Smith P. Dupont A. Martin Paris Nantes 0140... 0235... Anne Jean
Intégration en XML • Admet la différence d’éléments, mais plus verbeux <!DOCTYPE db [ <!ELEMENT db (Emp)*> <!ELEMENT emp (nom,ville,(tel.)?)> <!ELEMENT nom (#PCDATA | (prenom, nomF))> <!ELEMENT prenom (#PCDATA)> <!ELEMENT nomF (#PCDATA)> <!ELEMENT tel. (#PCDATA)>]> <emp> <nom> <prenom> Anne </prenom> <nomF> Martin </nomF> </nom> <ville> Nantes </ville> </emp> <emp> <nom> A. Martin </nom> <ville> Nantes </ville> <tel.> 0235... </tel.> </emp>
Interrogation en Xquery for $e in document(db)/emp where $e/ville = "Nantes" return <r> <nom> $e/nom </nom> <tel.> $e/tel </tel> </r> <r> <nom> <prenom> Anne </prenom> <nomF> Martin </nomF> </nom> </emp> <r> <nom> A. Martin </nom> <tel.> 0235... </tel.> </r>