• Aucun résultat trouvé

Transparents (PowerPoint)

N/A
N/A
Protected

Academic year: 2022

Partager "Transparents (PowerPoint)"

Copied!
34
0
0

Texte intégral

(1)

27/02/22 © Robert Godin. Tous droits réservés. 1

20 Données semi-

structurées et XML

(2)

27/02/22 © Robert Godin. Tous droits réservés. 2

Pourquoi XML

HTML

Langage de balisage pour la présentation

Balise définit format

XML (eXtensible Markup Language)

Balisage flexible en fonction de l’application

Balise peut servir à spécifier structure et sémantique des données

Facilite l’interprétation des données (par programme ou humain)

Présentation à part (XSL)

Représentation de données semi-structurées

Conformité optionnelle à un schéma

Facilite le traitement informatique et humain

Format normalisé d’échange

couplage faible entre systèmes

SOAP : sérialisation des objets en XML

Schémas

DTD, XML schéma

(3)

27/02/22 © Robert Godin. Tous droits réservés. 3

20.1 Introduction à XML

< C a t a l o g u e >

< A r t i c l e >

< n o A r t i c l e > < d e s c r i p t i o n > < p r i x U n i t a i r e >

1 0 C è d r e e n b o u l e 1 0 , 9 9

< A r t i c l e >

< n o A r t i c l e > < d e s c r i p t i o n > < p r i x U n i t a i r e >

2 0 S a p i n 1 2 , 9 9

. . .

(4)

27/02/22 © Robert Godin. Tous droits réservés. 4

Références

< C a t a l o g u e >

< A r t i c l e >

< n o A r t i c l e > < d e s c r i p t i o n > < p r i x U n i t a i r e >

1 0 C è d r e e n b o u l e 1 0 , 9 9

. . .

< L i s t e C o m m a n d e s >

< C o m m a n d e >

i d A r t i c l e l e s I d C o m m a n d e

i d A r t 1 i d L i g 1 i d L i g 4

< n o C o m m a n d e >

1

< d a t e C o m m a n d e >

0 1 / 0 6 / 2 0 0 0

< n o C l i e n t >

1 0

< l i g n e C o m m a n d e >

i d L i g n e C o m m a n d e

i d L i g 1

l e I d A r t i c l e

i d A r t 1

< q u a n t i t e >

1 0

. . . . . .

(5)

27/02/22 © Robert Godin. Tous droits réservés. 5

Intégrité d’un document XML

Document XML bien formé (well- formed)

entête correcte

un seul élément racine

balises sont correctement imbriquées

éléments non vides doivent avoir une balise de début et de fin (contrairement à HTML)

Document XML valide

respecte sa grammaire

(6)

27/02/22 © Robert Godin. Tous droits réservés. 6

20.2 Espace de nom XML

(XML namespace)

(7)

27/02/22 © Robert Godin. Tous droits réservés. 7

20.3 XML schema

Limites des DTD

Types de base

Intégration faible de la notion d’espace de noms

Support faible de clé et d’intégrité référentielle

Ordre significatif

Le nom d’un élément est global

Syntaxe non conforme à XML

(8)

27/02/22 © Robert Godin. Tous droits réservés. 8

Exemple de schéma XML :

http://www.info2.uqam.ca/~godin/XML/schemaCommandesXML.xsd

(9)

27/02/22 © Robert Godin. Tous droits réservés. 9

Exemple d’instance du schéma :

http://www.info2.uqam.ca/~godin/XML/CommandesAvecSchema.xml

(10)

27/02/22 © Robert Godin. Tous droits réservés. 10

20.4 Langage de requête XPath

< L i s t e C o m m a n d e s >

< C o m m a n d e >

. . .

< C o m m a n d e s X M L >

/CommandesXML/ListeCommandes/Commande[1]

/child::CommandesXML/child::ListeCommandes/child::Commande[position()=1]

(11)

27/02/22 © Robert Godin. Tous droits réservés. 11

20.5 XPointer

(12)

27/02/22 © Robert Godin. Tous droits réservés. 12

20.6 Contraintes de clé

(13)

27/02/22 © Robert Godin. Tous droits réservés. 13

Exemple d’instance valide

(14)

27/02/22 © Robert Godin. Tous droits réservés. 14

20.7 Langage de requête XML Query (XQuery)

 Contient XPath

 Input : ensemble de documents XML

 Sources diverses

 Peut produire du XML en sortie

(15)

Expressions XQuery

Expression primaire

litéral, variable, fonction

Séquence

« , » est le constructeur

Expression XPath

Expression FLWOR

FOR, LET, WHERE, ORDER BY, RETURN

Expression conditionnelle, arithmétique, relationnelle, régulière, quantifiée, …

27/02/22 © Robert Godin. Tous droits réservés. 15

(16)

27/02/22 © Robert Godin. Tous droits réservés. 16

20.8 Traitement d’un document XML avec Java API for XML Processing (JAXP)

http://java.sun.com/xml/jaxp/index.jsp

Interface Document Object Model (DOM)

instance XML -> arbre de Node Java

(17)

27/02/22 © Robert Godin. Tous droits réservés. 17

Java Architecture for XML Binding (JAXB)

 http://java.sun.com/xml/jaxb/

 Schéma XML -> classes métier Java

Java binding compiler

 Instance XML -> objets métier

Java

(18)

27/02/22 © Robert Godin. Tous droits réservés. 18

20.9 Système de Gestion de XML

 Application centrée donnée

XML = format d’échange avec BD

 Application centrée document

XML stocké dans SGXML

SGXML natif

Modèle BD = XML

Extension SGBD

Au dessus du modèle relationnel

(19)

27/02/22 © Robert Godin. Tous droits réservés. 19

20.10 Oracle et XML : Oracle XML DB

Application centrée données

Mécanismes de transformation SQL<->XML

XML SQL Utility (XSU) : API Java/JDBC

SQL/XML

Type XMLType avec stockage objet-relationnel

Conversion selon annotations du schéma XML

Application centrée documents (SGXML)

XMLType avec conformité facultative à un schéma XML

Stockage CLOB ou binaire (11g, après parsage) ou hybride

Requêtes sur XMLType

Fonctions SQL pour XPath et XQuery

XML DB repository

Vue des documents sous forme de répertoire hiérarchique

Accès HTTP, FTP, WebDAV

APIs Java/JDBC, PL/SQL, .NET/C#

(20)

27/02/22 © Robert Godin. Tous droits réservés. 20

XML SQL Utility (XSU) : exemple de

transformation SQL->XML

(21)

27/02/22 © Robert Godin. Tous droits réservés. 21

Fonctions SQL/XML (SQLX) de

génération de XML

(22)

27/02/22 © Robert Godin. Tous droits réservés. 22

Fonctions SGXML

Stockage natif CLOB par défaut

- requêtes traitées par

conversion DOM à la

volée

(23)

27/02/22 © Robert Godin. Tous droits réservés. 23

Requête XPath sur XMLType avec extractValue()

Instance XMLType Expression XPath Fonction qui retourne la valeur

de l’élément XML sélectionné (conversion en scalaire SQL)

SQL> SELECT extractValue(value(C),'/Commande/noCommande') 2 FROM CommandesXML C

3 WHERE extractValue(value(C),'/Commande/noClient') = 10 4 /

EXTRACTVALUE(VALUE(C),'/COMMANDE/NOCOMMANDE') --- 1

5

(24)

Fonction extract()

27/02/22 © Robert Godin. Tous droits réservés. 24

SQL> SELECT extract(value(C),'/Commande/noCommande/text()') 2 FROM CommandesXML C

3 WHERE extract(value(C),'/Commande/noClient/text()').getnumberval() = 10 4 /

EXTRACT(VALUE(C),'/COMMANDE/NOCOMMANDE/TEXT()') --- 1

5

(25)

Fonction existsNode()

27/02/22 © Robert Godin. Tous droits réservés. 25

SQL> SELECT extract(value(C),'/Commande/noCommande/text()') 2 FROM CommandesXML C

3 WHERE existsNode(value(C),'/Commande[noClient="10"]') = 1 4 /

EXTRACT(VALUE(C),'/COMMANDE/NOCOMMANDE/TEXT()') --- 1

5

SQL> SELECT extract(value(C),'/Commande/noCommande') 2 FROM CommandesXML C

3 WHERE existsNode(value(C),'/Commande[noClient="10"]') = 1 4 /

EXTRACT(VALUE(C),'/COMMANDE/NOCOMMANDE') ---

<noCommande>1</noCommande>

<noCommande>5</noCommande>

(26)

Fonction SQL/XML : XMLQuery

27/02/22 © Robert Godin. Tous droits réservés. 26

SQL> SELECT XMLQuery('(1,2+3,"ABC",<tag>blabla</tag>)' RETURNING CONTENT) AS Output FROM DUAL

2 /

OUTPUT

--- 1 5 ABC<tag>blabla</tag>

Séquence XQuery

(27)

Requête FLWOR

27/02/22 © Robert Godin. Tous droits réservés. 27

SQL> SELECT XMLQuery(

2 'for $c in /Commande

3 where $c/noClient = "10"

4 return $c/noCommande'

5 PASSING OBJECT_VALUE RETURNING CONTENT) AS Output 6 FROM CommandesXML

7 /

OUTPUT

---

<noCommande>1</noCommande>

<noCommande>5</noCommande>

Contexte de la requête est la valeur de l’objet XMLType de la table d’objets

La variable $c itère sur chacun des éléments spécifiés

par le chemin (ici un seul élément Commande)

(28)

Itération sur les éléments ligneCommande

27/02/22 © Robert Godin. Tous droits réservés. 28

SQL> SELECT XMLQuery(

2 'for $l in /Commande/ligneCommande 3 where $l/noArticle > 20

4 return $l/noArticle'

5 PASSING OBJECT_VALUE RETURNING CONTENT) 6 FROM CommandesXML

7 /

XMLQUERY('FOR$LIN/COMMANDE/LIGNECOMMANDEWHERE

$L/NOARTICLE>20RETURN$L/NOARTICLE'P

---

<noArticle>70</noArticle><noArticle>90</noArticle>

<noArticle>70</noArticle>

(29)

Construction explicite de XML en output

27/02/22 © Robert Godin. Tous droits réservés. 29

SQL> SELECT XMLQuery(

2 'for $l in /Commande/ligneCommande 3 where $l/noArticle > 20

4 return <numeroArticle>{$l/noArticle/text()}</numeroArticle>' 5 PASSING OBJECT_VALUE RETURNING CONTENT)

6 FROM CommandesXML 7 /

XMLQUERY('FOR$LIN/COMMANDE/LIGNECOMMANDEWHERE$L /NOARTICLE>20RETURN<NUMEROARTICLE

---

<numeroArticle>70</numeroArticle><numeroArticle>90</numeroArticle>

<numeroArticle>70</numeroArticle>

{} demande l’évaluation

(30)

Où est l’erreur ?

27/02/22 © Robert Godin. Tous droits réservés. 30

SQL> SELECT XMLQuery(

2 'for $c in /Commande

3 where $c/ligneCommande/noArticle > 20 4 return $c/ligneCommande/noArticle'

5 PASSING OBJECT_VALUE RETURNING CONTENT) 6 FROM CommandesXML

7 /

XMLQUERY('FOR$CIN/COMMANDEWHERE$C/LIGNECOMMANDE/NOA RTICLE>20RETURN$C/LIGNECOMMAN

---

<noArticle>10</noArticle><noArticle>70</noArticle><noArticle>90</noArticle

>

<noArticle>10</noArticle><noArticle>70</noArticle><noArticle>20</noArticle

>

(31)

27/02/22 © Robert Godin. Tous droits réservés. 31

Indexage avec stockage CLOB ou binaire

Plusieurs types d’index supportés

Indexage sur chemin XPath particulier

create unique index IndexNoCommande on CommandesXML (extractValue(object_value,'/Commande/NoCommande'))

la balise doit être unique dans le document

Indexage systématique de tous les chemins

create index IndexCommandesXML on CommandesXML (object_value) indextype is CTXSYS.CTXXPATH

réécriture en HASPATH/INPATH (voir indexage Context au chap.21)

plus coûteux que sur fonction XPath

Indexage plein texte des valeurs textuelles (voir chap. 21)

11g : XMLIndex remplace CTXXPATH

(32)

27/02/22 © Robert Godin. Tous droits réservés. 32

Support de schéma XML

(33)

27/02/22 © Robert Godin. Tous droits réservés. 33

Stockage objet-relationnel

 Annotations XML pour stockage objet-relationnel

 Vue XMLType sur stockage objet- relationnel

 Attributs xdb:SQLName,

xdb:SQLType dans le schéma XML

 Réécriture des requêtes XPath par l’optimiseur

Exploitation de l’optimiseur relationnel

(34)

BD de documents

Modèle (clé, document)

API simple

Put(clé, document), Get(clé), Update(clé), Delete(clé)

Requêtes simples sur le contenu

Scalabilité élastique

Transactions limitées

Document

Attribut : valeur, XML, JSON

CouchDB, MongoDB, Simple DB

27/02/22 © Robert Godin. Tous droits réservés. 34

Références

Documents relatifs

 Un axe dont les nœuds sont soit le nœud contexte, soit des nœuds qui suivent le nœud contexte dans l’ordre du document est un axe avant.  Un axe dont les nœuds sont soit

CREATE VIEW Article (noArticle, description, prixUnitaire, quantitéEnStock)AS SELECT C.noArticle, description, prixUnitaire, quantitéEnStock FROM Catalogue AS C, Inventaire AS

noArticle :40 quantité :2 livraison complétée noArticle :95 quantité :3 quantité en attente :2 PL/SQL procedure successfully completed. SQL&gt;

titre nomProducteur nomActeur La vie est belle Elda Ferri Roberto Benigni La vie est belle Elda Ferri Nicoletta Braschi La vie est belle Elda Ferri Giorgio Cantarini La vie est

Description: Ce cas d'utilisation est déclenché par le commis au prêt suite à une requête d'un membre ou d'un employé. Il lui permet d'enregistrer un prêt ou un retour ,

FOREIGN KEY (idUtilisateur) REFERENCES Utilisateur, FOREIGN KEY (idExemplaire) REFERENCES Exemplaire, CHECK (dateRetour &gt;=

20.8 Traitement d’un document XML avec Java API for XML Processing (

 Méthodes d’accès spatiales (Spatial Acces Method - SAM ).. – objets