1 / 66

Intégration d'information avec XML

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

cade
Download Presentation

Intégration d'information avec XML

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Intégration d'information avec XML • Patrick Valduriez • Lip6 • Université Paris 6 • Patrick.Valduriez@lip6.fr • http://www-poleia.lip6.fr/~valdurie/patrick.html

  2. 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

  3. 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

  4. 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)

  5. 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>

  6. 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

  7. 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

  8. 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

  9. HTML décrit la présentation

  10. 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

  11. 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>

  12. 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)

  13. 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

  14. 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>

  15. 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>

  16. 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

  17. 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

  18. 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

  19. 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

  20. 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

  21. 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

  22. 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

  23. 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

  24. 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

  25. 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

  26. 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

  27. 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>

  28. 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>

  29. 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

  30. 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

  31. 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

  32. 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)

  33. 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

  34. XML comme modèle d'intégration DB1 OLE DB Serveur d'application JDBC DB2 HTMLXML XMLSQL ODBC XSL DB3

  35. XML comme modèle d'accès DB1 XML Serveur d'application XML DB2 Médiateur XML HTMLXML XML XML Schema XSL DB3

  36. 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.

  37. 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

  38. 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

  39. 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

  40. 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 .....

  41. 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

  42. 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

  43. 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.

  44. 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

  45. 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

  46. 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

  47. 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

  48. 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

  49. 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>

  50. 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>

More Related