27
Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI Université de Genève http:// viper . unige . ch /~marchand [email protected]

Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI – Université de Genève marchand

Embed Size (px)

Citation preview

Page 1: Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI – Université de Genève marchand

Données sous XML

Stéphane Marchand-MailletGroupe Viper

Vision par Ordinateur et Multimédia

CUI – Université de Genève

http://viper.unige.ch/~marchand

[email protected]

Page 2: Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI – Université de Genève marchand

Stéphane Marchand-Maillet – CUI – Université de Genève – http://viper.unige.ch/~marchand Cours XML 2

Plan du cours

Session XML: Généralités Définition Principes

Session Représentation de données: Structuration de données Requêtes

Session Outils: XML sur le WWW Développements liés à XML

Page 3: Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI – Université de Genève marchand

Stéphane Marchand-Maillet – CUI – Université de Genève – http://viper.unige.ch/~marchand Cours XML 3

Session 2: Données

Rappel XML Structuration hiérarchique Spécification XPath Langages de requêtes

Quilt XQuery

Outil Cocoon / Kweelt

Alternatives Exemple de structuration

Page 4: Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI – Université de Genève marchand

Stéphane Marchand-Maillet – CUI – Université de Genève – http://viper.unige.ch/~marchand Cours XML 4

Résumé XML

XML = eXtended Markup Language XML version 1.0 = 10/02/1998 Spécification sur le site du W3C Basé sur SGML, « similaire » à HTML, texte XML bien formé

Syntaxe simple Peu de contraintes

XML valide Respecte la structure donnée par la DTD/Schema

Liens (XLink/Xpointer)

Page 5: Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI – Université de Genève marchand

Stéphane Marchand-Maillet – CUI – Université de Genève – http://viper.unige.ch/~marchand Cours XML 5

Exemple XML (annoté)

Instructionsde traitement

Type dedocument

Corps dudocument

Racine dudocument

Attribut

Element vide

Element non-vide

Commentaire

Balise d'ouverture Balise de fermeture

Declaration

<? xml version = "1.0" ?><? xml-stylesheet href = "http://cui.unige.ch/adressesToHTML.xsl"

type = "text/xsl" version = "1.0" ?><? cocoon-process type = "xslt" ?><! DOCTYPE adresses SYSTEM "http://cui.unige.ch/adresses.dtd">

<!--Ceci est un commentaire-->< adresses> <personne id= "marchand " > <type classe= "enseignant" rang="MA"/> <nom>Marchand-Maillet</nom> <prenom>Stéphane</prenom> <adresse>CUI, Université de Genève</adresse> </personne></adresses >

Entête dudocument

Page 6: Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI – Université de Genève marchand

Stéphane Marchand-Maillet – CUI – Université de Genève – http://viper.unige.ch/~marchand Cours XML 6

Document XML

Entête

adresses

personne

type nom prenom adresse

personne

type nom prenom adresse

Page 7: Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI – Université de Genève marchand

Stéphane Marchand-Maillet – CUI – Université de Genève – http://viper.unige.ch/~marchand Cours XML 7

Structure hiérarchique

Syntaxe XML: Une seule racine Imbrication correcte

Sans les liens (Xlink/Xpointer), document = arbre Balises = Nœuds Contenus, Elements vides = feuilles

Il faut pouvoir naviguer dans cet arbre Structure de graphe orienté XPath = « Langage » de localisation

Page 8: Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI – Université de Genève marchand

Stéphane Marchand-Maillet – CUI – Université de Genève – http://viper.unige.ch/~marchand Cours XML 8

XPath (types) Spécification W3C, V 1.0: 16/11/99 (V 2.0 pour XQuery) Types

Boolean Number String Node-sets Sous-arbre

Types of nodes: processing instruction nodes Instructions comment nodes Commentaires root nodes Racine element nodes Élément attribute nodes Attribut namespace nodes Attributs d’un nœud d’un NS text nodes Contenu

Page 9: Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI – Université de Genève marchand

Stéphane Marchand-Maillet – CUI – Université de Genève – http://viper.unige.ch/~marchand Cours XML 9

XPath (chemin = axes) Position (nœud) courant self . Descendants

Direct child / (In)direct descendant //

Predecesseurs Direct parent .. (In)direct ancestor

Frères Meme niveau sibling Navigation following- / preceding-sibling

Autres ancestor-or-self descendant-or-self namespace attribute @

Page 10: Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI – Université de Genève marchand

Stéphane Marchand-Maillet – CUI – Université de Genève – http://viper.unige.ch/~marchand Cours XML 10

Chemins

descendant

children

sibling

ancestor

parent

root

processing

commentaire

attribut

texte

self

Page 11: Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI – Université de Genève marchand

Stéphane Marchand-Maillet – CUI – Université de Genève – http://viper.unige.ch/~marchand Cours XML 11

XPath (fonctions)

Positions relatives et information locale Exemples:

position() : postion dans le contexte number() : Nombre de positions possibles dans le contexte count() : Cardinalité d’un « node-set » last() : Indicateur de derniere position

Autres: Fonctions booléennes: and, not, or, … Operateurs : mod, >, <=, … Fonctions de chaîne: contains, substring-before Fonctions d’environnement: normalize-space

Permettent des requêtes de base Analyse des contenus et noms de balises/attributs

Page 12: Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI – Université de Genève marchand

Stéphane Marchand-Maillet – CUI – Université de Genève – http://viper.unige.ch/~marchand Cours XML 12

XPath : exemples

child::paragraphe : enfant <paragraphe…> ./paragraphe (premier de la liste)

child::text() : texte contenu dans les enfants descendant::paragraphe : element paragraphe dans le ss-arbre

//paragraphe child::*/child::paragraphe

*/paragraphe child::paragraphe/descendant::section

./paragraphe//section /descendant::list/child::item

//list/item child::paragraphe[position()=last()-1] (avant-dernier paragraphe) /child::doc/child::chapitre[position()=5]/child::section[position()=2]

Page 13: Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI – Université de Genève marchand

Stéphane Marchand-Maillet – CUI – Université de Genève – http://viper.unige.ch/~marchand Cours XML 13

Requête XML

Standardisation toujours en cours (presque finale - WD) Buts:

Recherche d'informations dans le document Travaille directement sur la structure XML

Ressemble à SQL Bases de réflexion:

XML-QL (AT&T) YAT (INRIA) Lorel (Stanford) XQL (~Microsoft) Quilt (IBM) Base du standard

Kweelt (open source) ksp (module de Cocoon)

Comparaison: http://www-db.research.bell-labs.com/user/simeon/xquery.html

http://www.w3.org/XML/Query

Page 14: Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI – Université de Genève marchand

Stéphane Marchand-Maillet – CUI – Université de Genève – http://viper.unige.ch/~marchand Cours XML 14

Langage de requête (analyse)

Capacités essentielles: Une formulation de la requête en trois parties: pattern + filter +

constructor La possibilité d'imbriquer des requêtes, de les grouper, d'avoir une

indexation interne et de pouvoir faire des opérations de classement de disposer d'un opérateur JOIN d'avoir un accès imprécis aux données pour une grande flexibilité

Capacités utiles Avoir la possibilité de définir une alternative en cas de données

manquantes Pouvoir faire appel à des fonctions externes Pouvoir manipuler les données par références

Page 15: Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI – Université de Genève marchand

Stéphane Marchand-Maillet – CUI – Université de Genève – http://viper.unige.ch/~marchand Cours XML 15

Langage de requête (analyse)

10 Requêtes de test Sélection et extraction: "tous les ouvrages publiés après 1991" Flattening: l'arbre XML de la base est "mis à plat" Garder la structure: afficher la base dans sa version originale Changer la structure par imbrication de requête: lister la base par

auteur Changer la structure par opérateur de regroupement Combiner plusieurs sources de données Indexer les éléments de la structure: accéder au 3ème auteur d'un livre Classer les résultats Avoir un accès approximatif (wildcard) sur les éléments (tags) Avoir un accès approximatif (wildcard) sur le contenu

Page 16: Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI – Université de Genève marchand

Stéphane Marchand-Maillet – CUI – Université de Genève – http://viper.unige.ch/~marchand Cours XML 16

Requirements

Test cases W3C Use Case "XMP": Experiences and Exemplars Use Case "TREE": Queries that preserve hierarchy Use Case "SEQ" - Queries based on Sequence Use Case "R" - Access to Relational Data Use Case "SGML": Standard Generalized Markup Language Use Case "TEXT": Full-text Search Use Case "NS" - Queries Using Namespaces Use Case "PARTS" - Recursive Parts Explosion Use Case "REF" - Queries based on References

Page 17: Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI – Université de Genève marchand

Stéphane Marchand-Maillet – CUI – Université de Genève – http://viper.unige.ch/~marchand Cours XML 17

XQuery language (1)

Spécification du W3C (Working Draft au 20/12/2001) Ressemble à SQL

Notation ENBF (notation des DTD) Satisfait les contraintes emises « W3C XQuery requirements » S’inspire de Quilt (IBM)

basé sur XPath (2.0), XQL, XML-QL, ODMG

Literals (éléments de base) Entiers, Flottants, Doubles, Chaînes

Variables Notation $nom

Appels de fonctions Syntaxe nom-de-la-fonction(…)

Page 18: Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI – Université de Genève marchand

Stéphane Marchand-Maillet – CUI – Université de Genève – http://viper.unige.ch/~marchand Cours XML 18

XQuery language (2)

Requêtes sur un arbre => parcours de l’arbre Utilisation de XPath

Opérateurs sur les éléments Logiques: and or Arithmetiques: + - * div mod (pas « / ») Comparaison: > < = <= >= (en fait lt, gt, eq) Comparaison sur les nœuds: == !== Ordre sur les nœuds : << >>

Notion de « sequences » ~ listes Exemples (1,2,3,4) Operateurs: union, intersect,except

Page 19: Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI – Université de Genève marchand

Stéphane Marchand-Maillet – CUI – Université de Genève – http://viper.unige.ch/~marchand Cours XML 19

XQuery language (3)

Constructions Evaluation: {…}(symbole « ` » UNIX)

Commentaires {-- Ceci est un commentaire pour XQuery --}

<book isbn="isbn-0060229357"> <title>Harold and the Purple Crayon</title> <author> <first>Crockett</first> <last>Johnson</last> </author> </book>

<example> <p> Here is a query. </p> <eg> $i//title </eg> <p> Here is the result of the above query. </p> <eg>{ $i//title }</eg> </example>

<example> <p> Here is a query. </p> <eg> $i//title </eg> <p> Here is the result of the above query. </p> <eg> Harold and the Purple Crayon </eg> </example>

Page 20: Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI – Université de Genève marchand

Stéphane Marchand-Maillet – CUI – Université de Genève – http://viper.unige.ch/~marchand Cours XML 20

XQuery language (4)

Expression FLWR (FLoWeR) FOR…LET…WHERE…RETURN… Exemple:

for $b in $input//book where $b/author = $a return $b/title

Classement: SORTBY…ASCENDING/DESCENDING //book[price > 100] sortby ((author[1], title) ascending)

Conditions : IF…THEN…ELSE… if ($widget1/unit-cost < $widget2/unit-cost) then $widget1 else $widget2

Selection SOME/EVERY…SATISFIES some $emp in //employee satisfies ($emp/bonus > 0.25 * $emp/salary)

Page 21: Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI – Université de Genève marchand

Stéphane Marchand-Maillet – CUI – Université de Genève – http://viper.unige.ch/~marchand Cours XML 21

XQuery language (5)

TYPESWITCH…CASE…DEFAULT… typeswitch ($animal)

case element duck return quack($animal) case element dog return woof($animal) default return "No sound"

define function summary(element employee* $emps)

returns element dept* { for $d in distinct-values($emps/deptno)

let $e := $emps[deptno = $d] return <dept> {$d} <headcount> {count($e)} </headcount>

<payroll> {sum($e/salary)} </payroll></dept>}

summary(document("acme_corp.xml")//employee[location = "Denver"])

Page 22: Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI – Université de Genève marchand

Stéphane Marchand-Maillet – CUI – Université de Genève – http://viper.unige.ch/~marchand Cours XML 22

Requête: Exemple: KSP

<? xml-stylesheet href = "http://cui.unige.ch/adressesToHTML.xsl"?><? cocoon-process type = "kweelt" ?><? cocoon-process type = "xslt" ?>

<kweelt-query> <!– QUERY </kweelt-query>

XML et XQuery

Module KSP

XML pur

<? cocoon-process type = "kweelt" ?>

Module XSLT

HTML

<? cocoon-process type = "xslt" ?><? xml-stylesheet href = "…"?>

Serveur Apache

BrowserWWW

Page 23: Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI – Université de Genève marchand

Stéphane Marchand-Maillet – CUI – Université de Genève – http://viper.unige.ch/~marchand Cours XML 23

Alternatives Serveur SQL classique

Pas forcement adapte (Transport du systeme) XML et SQL: Cocoon + module serveur MySQL

Architecture lourde PHP: spécialisé pour les BD SQL Microsoft: ASP + Access

Plate-forme Microsoft Access n’est pas un serveur Microsoft SQL server

Choix: dépend des cas d’utilisations et de leur contexte

Page 24: Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI – Université de Genève marchand

Stéphane Marchand-Maillet – CUI – Université de Genève – http://viper.unige.ch/~marchand Cours XML 24

Structuration de l’information

Choix technologique XML: Transport de données

Technologie légère : Parseur + représentation objet Multiplateforme Basé sur le fichiers (texte) Pas de système de serveur Texte = mauvaise compression Texte => peu d’optimalité dans les requêtes XML: Hiérarchique / Pas de structure relationelle (si avec XPointer)

Structure: Choix de représentation Pas de recette générique Peu faciliter l’analyse finale

Page 25: Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI – Université de Genève marchand

Stéphane Marchand-Maillet – CUI – Université de Genève – http://viper.unige.ch/~marchand Cours XML 25

Structuration (exemple)

<liste-personnel-cui> <professeur> <nom>Jean Prof</nom> <groupe>Groupe Vision</groupe> <groupeId>vision</groupeId> </professeur> <etudiant> <nom>Pierre Etude</nom> <groupe>Groupe Vision</groupe> <groupeId>vision</groupeId> </etudiant></liste-personnel-cui>

<liste-personnel id="cui"> <personne type="prof"> <nom>Jean</nom> <prenom>Prof</prenom> <groupe id="vision">Groupe Vision</groupe> </personne> <personne type="etudiant"> <nom>Pierre</nom> <prenom>Etude</prenom> <groupe id="tios">T. I. O. S</groupe> </personne></liste-personnel>

Page 26: Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI – Université de Genève marchand

Stéphane Marchand-Maillet – CUI – Université de Genève – http://viper.unige.ch/~marchand Cours XML 26

Conclusion

XML structure d’arbre Navigation grâce à XPath Caractérisation de sous-arbres grâce aux Axes

Requêtes Travaillent sur les sous-arbres construits Opérateurs de comparaison Générent un sous-arbre extrait ou calculé

Structuration de données Dépend du contexte Pas de recette unique XML n’est pas forcément toujours le bon choix

XML : Echange de données

Page 27: Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI – Université de Genève marchand

Stéphane Marchand-Maillet – CUI – Université de Genève – http://viper.unige.ch/~marchand Cours XML 27

Liens utiles

(suite de la liste donnée au premier cours)

XPath : http://www.w3.org/TR/xpath XQuery : http://www.w3.org/TR/xquery/ Quilt : http://www.almaden.ibm.com/cs/people/chamberlin/quilt.html Kweelt : http://kweelt.sourceforge.net/ Document sur XQuery: http://www.w3.org/1999/09/ql/docs/xquery.html Cocoon : http://xml.apache.org/cocoon/ dbXML : http://www.dbxml.org/