La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

1 XML. 2 Introduction XML: eXtensible Markup Language Défini par le consortium W3C A lorigine, proposé comme langage dannotation (en remplacement ou en.

Présentations similaires


Présentation au sujet: "1 XML. 2 Introduction XML: eXtensible Markup Language Défini par le consortium W3C A lorigine, proposé comme langage dannotation (en remplacement ou en."— Transcription de la présentation:

1 1 XML

2 2 Introduction XML: eXtensible Markup Language Défini par le consortium W3C A lorigine, proposé comme langage dannotation (en remplacement ou en complément à HTML, SGML, …) pas en tant que langage pour BD –Les documents contiennent des tags qui décrivent le contenu XML Introduction XML: eXtensible … …

3 3 Introduction Contrairement à HTML –On peut définir nous même les tags –On ne s"intéresse a priori quau contenu et non à la forme de la présentation du document La présentation est définie en des endroits différents –Le but du W3C était (est ?) de remplacer HTML pour ajouter de la sémantique aux documents du WEB

4 4 Introduction Actuellement, XML est plutôt utilisé comme langage déchange de données entre applications Plusieurs communautés ont défini des standards de représentation de données basés sur XML –ChemML, BSML (BioSequenceML), GraphML, … Chaque standard définit des restrictions pour valider les documents en utilisant –Des outils de spécification de type Les DTD (Document Type Description) XML schemas –Une description textuelle de la sémantique XML autorise lajout de nouveaux tags, mais ceux-ci sont contraints par les DTD Plusieurs outils pour valider, interroger et afficher les documents XML

5 5 Structure dun document XML(1) Tag: cest le label ou létiquette dune partie des données Élément : cest une partie de données commençant par un et se terminant par Les éléments peuvent être imbriqués Les éléments doivent être correctement imbriqués Dupont Jean Chaque document doit obligatoirement navoir quun seul élément au niveau le plus haut

6 6 Limbrication déléments(1) Limbrication est utile lors du transfert de données 112 ABCD 123_ … …

7 7 Limbrication déléments (2) Limbrication est prohibée ou découragée dans les bases de données relationnelles –La théorie de la normalisation nous incite à ne pas créer la table Cde(NumC, DateC, NumProduit, num_cl, nom_cli, Prix, Quantité) –En BD relationnelle, limbrication est remplacée par le concept de clé étrangère Cde(NumC, DateC, num_cl), Cli(num_cl, nom_cli), CP(NumC, numP, quantité), Prod(NumProduit, Prix) –Limbrication est appropriée quand il faut transférer les données car les application externes nont pas un accès direct aux données référencées par les clés étrangères

8 8 Structure dun document XML (2) Le mixage de texte avec les sous-éléments est autorisé dans XML Bonjour M. Dupont … Ceci est utile pour les documents du type texte auxquels on veut ajouter des « repères » mais déconseillé lorsquil sagit de transférer des données –Tout le contenu doit être décrit !!

9 9 Les attributs Les éléments peuvent avoir des attributs … Les attributs sont spécifiés par nom_att=valeur dans le tag de début de de lélément Un élément peut avoir plusieurs attributs 100

10 10 Attributs Vs. Sous-éléments Dans le contexte des documents (texte), les attributs font partie du marquage (description) alors que les sous-éléments constituent le contenu Dans le contexte de léchange de données, la distinction est loin dêtre claire (voir lexemple précédent) –En fait, XML a été historiquement proposé par des spécialistes des langages à marques (markup languages) tels que SGML qui sintéressent à la structuration des documents (ex: documentation technique) –Suggestion : Dans le cadre de la manipulation des données, utiliser les attributs pour lidentification des éléments (voir plus loin)

11 11 Un peu plus sur la structure Les éléments sans sous-éléments ou sans texte peuvent être abrégés

12 12 Document bien formé Un document est bien formé si –Il a une seule racine –Chaque tag ouvrant a un tag fermant qui lui correspond –Chaque attribut napparaît quune seule fois dans un tag ouvrant, sa valeur doit être spécifiée et entre "

13 13 Les espaces de noms : Namspaces Les données XML doivent être échangées entre organisations Le même tag risque dêtre utilisé avec différents sens causant des confusions La spécification dun nom unique pour un élément permet de résoudre le problème Meilleur solution, utiliser Namespace:nom_local –Namespace: désigne une URI où les tags sont définis, ou bien un alias à une URL

14 14 Espace de nom : (exemple) abcde Jean Dupont Le tag est utilisé avec deux sens, une première fois pour désigner le nom dune société et une deuxième fois pour désigner le nom dune personne. Le Namespace par défaut est Lautre a un alias " per "

15 15 Définition du schéma Le schéma dune BD fixe lorganisation logique des données quon peut stocker ainsi que leurs types Les documents XML ne sont pas obligés davoir un schéma Cependant, quand il sagit déchanger des données, il devient nécessaire de fixer la structure pour pouvoir ensuite écrire les applications qui les exploitent Il existe deux mécanismes –Les DTD (Document type definition) Très utilisées –Les XML schemas Plus récents, plus riches et bien plus compliquées donc moins utilisés

16 16 Les DTD Elles spécifient –Quels éléments peuvent apparaître dans le document –Quels attributs peuvent/doivent apparaître dans le document –Quels sous-éléments peuvent/doivent apparaître dans le document Les DTD ne contraignent pas le type de données –Tout est chaîne de caractères Syntaxe –

17 17 Spécification des éléments dans une DTD Les sous-éléments peuvent être spécifiés comme –Noms déléments –#PCDATA (chaînes de caractère) –EMPTY (pas de sous-éléments) –ANY (nimporte quoi) Exemple

18 18 Spécification des attributs dans une DTD Pour chaque attribut –Son nom –Son type CDATA (chaîne) ID (identificateur ~clé) IDREF (fait référence à un ID ~ clé étrangère) IDREFS (ensemble de références) –Si Il est obligatoire (#REQUIRED) Il a une valeur par défaut (valeur) Sinon (#IMPLIED) Exemple:

19 19 ID et IDREF Un élément ne peut avoir plus dun attribut du type ID La valeur de lattribut de type ID doit être unique pour chaque élément dans le document –Dans lexemple précédent, un compte et un client ne peuvent avoir le même ID !!! Un attribut du type IDREF doit contenir une valeur qui correspond à un ID dans le même document

20 20 Critique des DTD Pas de typage –Pas possible dexiger que lélément doit contenir un entier. Le seul type cest PCDATA (ou CDATA pour les attributs) Par défaut, les éléments sont triés –Exemple: Le document nest pas conforme à la DTD car arrive avant Il aurait fallu faire Avec n attributs, il y a n! ordres possibles

21 21 Critique des DTD ID et IDREF ne sont pas typés Exemple : –si lattribut Comptes fait référence à lID dun client alors cela sera considéré comme correcte !!! Pourvu que lID existe dans le document –La même contrainte pour IDREFS

22 22 XML Schema Cest un outil plus sophistiqué que les DTD. Permet de spécifier –Les types –Contraintes sur les valeurs min/max –De nouveaux types utilisateur XML schema est lui même défini en XML Intégré aux Namespaces (contrairement aux DTD) Permet de définir des clés et des clés étrangères … MAIS: BIEN PLUS COMPLQUE QUE LES DTD

23 23 XML Schema: Exemple … définition du client …

24 24 Interrogation et transformation Transformation dun document dun schéma à un autre Récupérer une information contenue dans un document Les deux tâches sont très liées et sont souvent prises en charge par les mêmes outils –XPATH Langage simple avec expressions de chemins –XSLT Langage simple pour la transformation XML XML et XML HTML –XQuery, XQL, Quilt, XML-QL, … Langages de requêtes plus élaborés

25 25 Modèle arborescent (1) Epée de Bois 100 rue neuve Ligne F

26 26 Modèle arborescent (2) CINEMA NOM ADRESSE BUS 100 rue neuve Epée de BoisLigne F Les nœuds sont des éléments, des attributs ou des chaînes (nœuds terminaux) No 125

27 27 Modèle arborescent Les nœuds éléments ont des éléments fils qui peuvent être soit des éléments, soit des attributs soit des chaînes Les fils dun élément sont triés dans lordre de leur apparition dans le document XML Tous les nœuds ont un et un seul parent sauf la racine Les nœuds attributs ont obligatoirement un fils de type chaîne mais pas de petit-fils

28 28 XPATH Le principe de XPATH consiste à utiliser des « expressions de chemin » pour sélectionner des parties du document –Le même principe que pour les répertoires Le résultat dune expression de XPATH est un « ensemble » de valeurs ou déléments/attributs

29 29 XPATH(2) Exemple c1 c2 /a/b/c retourne lensemble c1 c2 /a/b retourne c1 c2 /a/b/c/text() retourne c1 c2

30 30 XPATH (3) Le symbole / initial désigne la racine de larbre Les expressions de chemins sont évaluées de gauche à droite On peut poser des conditions sur des valeurs c1 d1 c2 d2 /a/b[d="d1"] retourne c1 d1

31 31 XPATH(4) Les attributs sont accédés retourne lattribut num associé aux éléments b qui ont un fils c dont la valeur associée est "c1" XPATH utilise aussi des fonctions /a/b[c/count() > 2] retourne les éléments b qui ont des fils de type c eux mêmes ayant plus de deux fils XPATH permet aussi de sélection lélément en se basant sur sa position /document/section[position()=2] retourne la section 2 du document

32 32 XPATH(5) Les attributs IDREF et IDREF peuvent être utilisés pour récupérer les éléments auxquels ils font référence retourne le titulaire du compte dont le numéro est 250 Le symbole // permet de « sauter » plusieurs niveaux /a//d permet de sélectionner les éléments d descendants dun nœud a. d nest pas nécessairement un fils de a. Le symbole.. désigne un parent /a//d[../c] retourne les nœuds d descendants de a et dont le parent a un fils c Et plus encore …

33 33 XSLT XSLT est un langage basé sur XPATH qui permet de faire des transformations –XML XML –XML HTML –XML WML (pour WAP) On a un fichier.xml et un autre.xsl

34 34 XSLT Deux types dutilisation pour la visualisation par un browser HTML Fich.xml Fich.xsl Processeur XSLT Fich.html Browse r Fich.xml Fich.xsl Browse r

35 35 XSLT La deuxième approche suppose lutilisation dun browser qui récupère les deux fichiers et qui fait le traitement localement. –Problème: A part IE qui peut le faire (et encore) les autres (Netscape version <4, Opera, … ) ne peuvent pas faire ce traitement (cétait vrai en 2002) –Conclusion: Pour être le plus indépendant des browsers, utiliser plutôt la première approche.

36 36 Structure de base: les règles Règle= template. Elément de base pour produire le résultat –Une règle sapplique dans le contexte dun nœud de larbre –Lapplication dune règle produit un fragment du résultat Un programme XSLT est un ensemble de règles permettant de construire un résultat Les règles sont de la forme –Lorsque « condition » faire « action » –La condition permet de sélectionner des nœuds –Laction permet de récupérer une partie des données et le cas échéant lui appliquer des modes de présentation à la HTML

37 37 Exemple FILM AnnéeRéalisateurTITRE 1958Hitchcock Vertigo

38 38 Un exemple Produire une phrase quand on rencontre un nœud FILM Jai rencontré un nœud FILM Motif de sélection : match="Film" Laction de la règle: produit la phrase qui représente le contenu de lélément template.

39 39 Extraction de données On insère dans le résultat des fragments du document traité –Exemple: recherche du TITRE pour le nœud FILM Plus généralement, on spécifie le chemin daccès à un nœud à partir du nœud courant en utilisant des expressions de XPATH Condition Action

40 40 Illustration FILM AnnéeRéalisateurTITRE 1958Hitchcock Vertigo select=TITRE Match=FILM

41 41 Une règle complète Film: lannée de sortie du film est

42 42 Le résultat Appliquée au fichier précédent, on obtient Film: Vertigo lannée de sortie du film est 1958

43 43 Production dun document XML Ceci peut retourner Dupont

44 44 Création dattributs Pour ajouter des attributs, il faut utiliser la construction xsl:attribute Ex:

45 45 Autre exemple Retourne : 1 En fait, value-of retourne le premier b trouvé. Que faut-il faire pour retourner tous les ? Pour cela il faut utiliser la construction xsl:apply-template

46 46 template et apply-templates Avec template, lattribut match prend une valeur XPATH Avec apply-templates, lattribut select prend une valeur XPATH Publication XSLT Amann Rigaux Documents XML Programmation XSLT 2002

47 47 Exemple (suite) On veut récupérer les noms, lidentificateur de la séance et le texte associé à la séance Lexpression XPATH dans apply-templates sert à désigner (ou sélectionner) un ensemble de nœuds Lexpression XPATH dans template exprime une condition sur les nœuds Cette règle peut être lue: pour tout nœud satisfaisant /, exécuter les 3 actions de la règle –Cette règle est toujours déclenchée car il y a au moins (exactement) un élément racine

48 48 Exemple (suite) "//NOM" retourne tous les nœuds du type nom (il y en a 2). Si on rajoute la règle Chacun des nœuds sélectionné avec la première action satisfait le match de la règle, donc son action est exécutée.

49 49 Exemple (suite) On fait pareil pour les deux autres actions : On rajoute les règles

50 50 XQuery Inspiré de SQL Aussi puissant que XSLT mais beaucoup plus simple XQuery 1.0 standard fin 2002

51 51 XQuery : Introduction structure générale : FOR déclarations des variables WHERE condition RETURN document expression FLWR

52 52 Inscrit.xml …/…

53 53 Inscrit.xml (suite)

54 54 Xquery: Exemple Exemple: FOR $t IN document(Inscrits.xml)//Inscrit WHERE = MAT123 RETURN $t/Etudiant Résultat:

55 55 XQuery : Exemple La requête précédente ne produit pas un résultat XML bien formé. { FOR $t IN document(Inscrit.xml)//Inscrit WHERE = MAT123 RETURN $t/Etudiant } Inscrit,FOR : instancie $t avec les éléments Inscrit, WHERE : permet de poser une condition et RETURN : permet de placer les étudiants comme des sous-éléments de ListeEtudiants.

56 56 Restructuration de documents Au lieu davoir la liste des étudiants avec chacun de ses cours, obtenir la liste des cours avec chacun des étudiants qui sy sont inscrits: FOR $c IN distinct(document(Inscrit.xml)//CrsChoisi) RETURN { FOR $t IN document(Inscrit.xml)/Inscrit WHERE = $c/CodeCours RETURN $t/Etudiant SORTBY } SORTBY

57 57 Restructuration de documents Les éléments retournés par la requête sont de la forme: Problème: Lélément ci-dessus sera retourné deux fois: Une fois quand $c est instanciée par La deuxième quand $c est instanciée par On verra plus loin comment résoudre ce problème

58 58 Sémantique de XQuery Etape 1: produit une liste dinstatiations de variables –La clause FOR associe à chaque variable une liste de noeuds spécifiés par une expression qui peut être: Une expression Xpath Une requête Xquery Une fonction qui retourne une liste de noeuds

59 59 Sémantique de XQuery Exemple: –Supposons que la clause FOR déclare $A et $B –$A est associé aux noeuds {v,w}; $B à {x,y,z} –Alors FOR produit la liste des associations suivantes: $A/v, $B/x $A/v, $B/y $A/v, $B/z $A/w, $B/x $A/w, $B/y $A/w, $B/z

60 60 Sémantique de XQuery Etape 2: garder les associations en évaluant la clause WHERE Exemple: WHERE –Association: $A/w, où w = $B/x, où x = –Comme = alors la clause WHERE est satisfaite les associations sont retenues.

61 61 Sémantique de XQuery Etape 3: Construire le résultat –Pour chaque tuple dassociations, instancier la clause RETURN –Ceci constitue une partie du résultat

62 62 Fonctions et XQuery : Exemple Compter le nombre de sous-éléments récursivement: DEFINE FUNCTION countNodes(element $e) RETURNS integer { RETURN IF empty($e/*) THEN 0 ELSE sum( FOR $n IN $e/* RETURN countNodes($n)) + count($e/*) } expression XQuery fonctions prédéfinies sum, count et empty Signature de la Fonction

63 63 Restructuration en utilisant les fonctions DEFINE FUNCTION extraire_liste_cours(element $e) RETURNS element* { FOR $c IN $e//CrsChoisi RETURN } FOR $c IN distinct( FOR $d IN document(Inscrit.xml) RETURN extraire_liste_cours($d) ) RETURN { LET $trs := document(Inscrit.xml) FOR $t IN and RETURN $t/Etudiant SORTBY }

64 64 Aggregation: Exemple La liste des étudiants ainsi que le nombre de cours auxquels ils sont inscrits: FOR $t IN document(Inscrits.xml)//Inscrit, $s IN $t/Etudiant LET $c := $t/CrsChoisi RETURN SORTBY

65 65 Quantification et XQuery XQuery permet de lexprimer: SOME ( ) et EVERY ( ) Exemple: FOR $t IN document(Inscrit.xml)//Inscrit WHERE SOME $ct IN $t/CrsChoisi SATISFIES = MAT123 RETURN $t/Etudiant Presque équivalent à: FOR $t IN document(Inscrit.xml)//Inscrit, $ct IN $t/CrsChoisi WHERE = MAT123 RETURN $t/Etudiant –En fait, si les étudiants peuvent prendre plusieurs fois le même cours, le résultat peut être différent.


Télécharger ppt "1 XML. 2 Introduction XML: eXtensible Markup Language Défini par le consortium W3C A lorigine, proposé comme langage dannotation (en remplacement ou en."

Présentations similaires


Annonces Google