20 Données semi-
structurées et XML
27/02/22 © Robert Godin. Tous droits réser vés.
2
Pourquoi XML
HTML
–
Langage pour la présentation
–
Balise définit format
XML (eXtensible Markup Language)
–
Balise définit structure et sémantique
Facilite l’interprétation des données (par programme ou humain)
–
Présentation à part (XSL)
–
Représentation de données semi-structurées
conformance 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
20.1 Introduction à XML
< C a t a l o g u e >
< A r t i c l e > < A r t i c l e >
. . .
27/02/22 © Robert Godin. Tous droits réser vé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
. . . . . .
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
27/02/22 © Robert Godin. Tous droits réser vés.
6
20.2 Espace de nom XML
(XML namespace)
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
27/02/22 © Robert Godin. Tous droits réser vés.
8
Exemple de schéma XML :
http://www.info.uqam.ca/~godin/XML/schemaCommandesXML.xsd
Exemple d’instance du schéma :
http://www.info.uqam.ca/~godin/XML/CommandesAvecSchema.xml
27/02/22 © Robert Godin. Tous droits réser vé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]
20.5 XPointer
27/02/22 © Robert Godin. Tous droits réser vés.
12
20.6 Contraintes de clé
Exemple d’instance valide
27/02/22 © Robert Godin. Tous droits réser vés.
14
20.7 Langage de requête
XML Query (XQuery)
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
27/02/22 © Robert Godin. Tous droits réser vés.
16
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
20.9 Système de Gestion de XML
Application centrée données
– XML = format d’échange avec BD
Application centrée document
– XML dans SGXML
SGXML natif
–
Modèle BD = XML
Extension à SGBD
–
«Vue» XML sur modèle SGBD
–
Découpage du XML en objets d’un schéma BD
27/02/22 © Robert Godin. Tous droits réser vés.
18
20.10 Oracle et XML
XML SQL Utility (XSU) :
Données => XML
Fonctions SQLX de
génération de XML
27/02/22 © Robert Godin. Tous droits réser vés.
20
Fonctions SGXML
Stockage natif CLOB par défaut
- requêtes traitées par
conversion DOM à la
volée
Requêtes XPath en SQL
27/02/22 © Robert Godin. Tous droits réser vés.
22
Indexage avec stockage CLOB
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)
Support de schéma XML
27/02/22 © Robert Godin. Tous droits réser vés.
24