NFE204 - Bases documentaires et NoSQL - Partie XML

Transcription

NFE204 - Bases documentaires et NoSQL - Partie XML
NFE204 - Bases documentaires et NoSQL
NFE204 - Bases documentaires et NoSQL
Partie XML
Enseignant : Philippe Rigaux
Équipe Vertigo
Laboratoire CEDRIC
Conservatoire National des Arts & Métiers, Paris, France
NFE204 - Bases documentaires et NoSQL
Structuration de documents : XML
Plan du cours
1
Structuration de documents : XML
2
Les bases du formalisme XML
3
Syntaxe XML : compléments
NFE204 - Bases documentaires et NoSQL
Structuration de documents : XML
Quelques généralités
XML en bref
XML est un standard défini par le World-Wide-Web Consortium (W3C).
Les documents XML peuvent être sérialisés dans un encodage normalisé
(typically iso-8859-1, ou utf-8), et transmis sur le réseau sans perte d’information.
XML est un format générique qui peut être spécialisé en “dialectes” conçus pour
des domaines spécifiques (e.g., XHTML).
Le W3C normalise des standards associés : DOM le “modèle” XML), XSchema
(typage), XPath (chemins), XSLT (restructuration), XQuery (interrogation), et
beaucoup d’autres.
Remarque
1. XML est une version simplifiée de SGML, utilisé depuis longtemps
pour les documents techniques.
2. HTML, jusqu’à la version 4.0, est aussi une variante de SGML.
XHTML est un dialecte XML.
NFE204 - Bases documentaires et NoSQL
Structuration de documents : XML
Quelques généralités
Forme sérialisée, forme arborescente
Une application reçoit typiquement un document sous forme sérialisée, l’analyse
(parsing) pour le en forme arborescente, puis le sérialise pour le sauvegarder.
serialized
form
Application
parser
tree form
serializer
serialized
form
F IGURE 1: Parcours d’un document XML
La forme sérialisée est un codage séquentiel de l’arbre qui obéit à une syntaxe
particulière.
La forme arborescente est définie par un modèle, le DOM.
Remarque
Dans ce qui suit, on s’attache à l’essentiel. L’accessoire sera découvert ensuite quand
l’occasion se présentera.
NFE204 - Bases documentaires et NoSQL
Structuration de documents : XML
Quelques généralités
Les documents XML sont des arbres
Les applications manipulent les documents XML comme des arbres ordonnés.
entry
name
purpose
work
fn
ln
Jean
Doe
address
INRIA
email
city
zip
Cachan
94235
Remarque
Une exception : le parseur SAX (Simple Api for XML)
[email protected]
like to teach
NFE204 - Bases documentaires et NoSQL
Structuration de documents : XML
Quelques généralités
Représentation sérialisée d’un document XML
La forme sérialisée est la plus connue pour XML :
<entry><name><fn>Jean</fn><ln>Doe</ln></name><work>INRIA<adress><city>
Cachan</city><zip>94235</zip></adress><email>[email protected]</email>
</work><purpose>like to teach</purpose></entry>
La structure hiérarchique est partiellement rendue par l’indentation :
<entry>
<name>
<fn>Jean</fn>
<ln>Doe</ln> </name>
<work>
INRIA
<adress>
<city>Cachan</city>
<zip>94235</zip> </adress>
<email>[email protected]</email> </work>
<purpose>like to teach</purpose>
</entry>
NFE204 - Bases documentaires et NoSQL
Structuration de documents : XML
Quelques généralités
XML describes structured content
Un texte sans aucune stucture est difficile à interpréter pour une application.
The book ‘‘Fundations of Databases’’, written by Serge Abiteboul,
Rick Hull and Victor Vianu, published in 1995 by Addison-Wesley
XML permet d’introduire de la structure.
<bibliography>
<book>
<title> Foundations of Databases </title>
<author> Abiteboul </author>
<author> Hull </author>
<author> Vianu </author>
<publisher> Addison Wesley </publisher>
<year> 1995 </year> </book>
<book>...</book>
</bibliography>
On peut accéder aux auteurs, réorganiser le contenu, etc.
NFE204 - Bases documentaires et NoSQL
Les bases du formalisme XML
Plan du cours
1
Structuration de documents : XML
2
Les bases du formalisme XML
3
Syntaxe XML : compléments
NFE204 - Bases documentaires et NoSQL
Les bases du formalisme XML
Un document XML
<?xml version="1.0" encoding="utf−8"?>
<!−− Auteur : M. Philippe Rigaux −−>
<cours code="NFE204">
<formation name="CNAM Paris"></formation>
<titre>
NFE204 − Bases de donn&#233;es documentaires
</titre>
<notion>XML</notion>
<notion>DTD</notion>
<notion>XSLT</notion>
<notion>DOX</notion>
</cours>
Listing 1 – Un simple fichier XML
NFE204 - Bases documentaires et NoSQL
Les bases du formalisme XML
Un document XML (suite)
Un document XML est composé de :
1
Un prologue
1
déclaration de document XML
<?xml version = "1.x" [encoding = "norme" ]? >
2
suivie éventuellement (sans contrainte d’ordre)
d’une déclaration ou (exclusif) une référence à une DTD
<!DOCTYPE element racine [schema racine ] > ou
<!DOCTYPE element racine SYSTEM "uri schema racine" >
de commentaires <!-- texte -->
d’instructions de traitement (par ex. appel à XSLT)
<?instruction attribut1 = "valeur" ... attribut n ="valeur" ? >
2
Un corps :
une imbrications d’éléments et de textes
des commentaires
NFE204 - Bases documentaires et NoSQL
Les bases du formalisme XML
Quelques exemples de base
Remarque : les retours à la ligne n’ont aucune signification.
<document/>
<document> Hello World! </document>
<document>
<salutation> Hello World! </salutation>
</document>
<?xml version="1.0" encoding="utf-8" ?>
<document>
<salutation color="blue"> Hello World! </salutation>
</document>
Le dernier exemple est le seul complètement correct : il comprend le prologue.
NFE204 - Bases documentaires et NoSQL
Les bases du formalisme XML
Forme hiérarchique des documents : le modèle DOM
Un document XML est interprété comme un arbre.
Cette interprétation est fixée par un modèle, le DOM (Document Object Model)
normalisé par le W3C.
Dans le DOM, chaque nœud de l’arbre a un type, et une description. Par exemple :
1
le nom du nœud,
2
la valeur du nœud.
3
le contenu d’un nœud.
Remarque
La description exacte dépend du type du nœud.
NFE204 - Bases documentaires et NoSQL
Les bases du formalisme XML
Principaux types : Element et Text
Les nœuds de type Element correspondent au balisage dans la forme sérialisée.
1
ils définissent la structure du document.
2
ils ont un nom mais pas de valeur.
3
ils ont un contenu : le sous-arbre dont ils sont racine.
Les nœuds de type Text correspondent au contenu du document.
1
ils constituent les feuilles de l’arborescence (un nœud Text n’a pas de fils) et n’ont
donc pas de contenu.
2
ils ont une valeur mais pas de nom
NFE204 - Bases documentaires et NoSQL
Les bases du formalisme XML
Correspondance forme sérialisée - forme DOM
Ce document représenté en DOM : chaque
nœud a un type, soit Document soit Text.
Voici un élément contenant du
texte.
Element
monEl
<monEl>
Le contenu textuel.
</monEl>
Text
Contenu textuel
NFE204 - Bases documentaires et NoSQL
Les bases du formalisme XML
Imbrication des élémennts
Le contenu d’un élément est
1
tout ce qui est compris entre la balise ouvrante et la balise fermante (dans la
forme sérialisée).
2
le sous-arbre dont le nœud est la racine (dans la forme DOM).
Ce contenu comprend d’autres élément, des nœuds Text, et autres gadgets de
moindre importance (commentaires, etc.)
Element
elt1
Exemple d’éléments imbriqués
<elt1>
Contenu texte
<elt2>
Autre contenu
</elt2>
</elt1>
Text
Contenu texte
Element
elt2
Text
Autre contenu
NFE204 - Bases documentaires et NoSQL
Les bases du formalisme XML
Encore un exemple
Un autre document, pas beaucoup plus compliqué.
Le vocabulaire à employer :
1
2
3
4
5
6
7
8
<les_genies>
<genie>
Alan Turing
</genie>
<genie>
Kurt Godel
</genie>
</les_genies>
<genie> est une balise ouvrante (tag
ouvrant)
</genie> est une balise fermante (tag
fermant)
Kurt Godel est un contenu texte
<genie>Alan Turing</genie> est un
élément et un sous-élément de les_genies
Test
1
Donnez la forme arborescente de ce document.
2
Quel est le contenu de l’élément les_genies ?
3
Quel est le contenu textuel de l’élément les_genies ?
NFE204 - Bases documentaires et NoSQL
Les bases du formalisme XML
Quelques remarques en vrac (anecdotique)
Les sous-éléments sont ordonnés.
Pas de caractères spéciaux (mais -,_,.,/ autorisés) dans les noms des
éléments, pas d’espaces.
Un élément peut être vide : <nom_elt></nom_elt>
Notation abrégée : <nom_elt/> (Exemples d’éléments vides (XHTML) :
<br/> ou
<img width="100" height="57" src="logoCnam.jpg"/>)
(Contrairement à HTML,) XML est case sensitive donc <genie> ≠ <Genie>
Les caractères spéciaux non autorisés peuvent être remplacés par une référence :
& doit être remplacé par sa référence &amp; (version numérique : &#28;)
< devient &lt; (ou &#60;)
> devient &gt; (ou &#62;)
" devient &quot; (ou &#39;)
’ devient &apos; (ou &#34;)
NFE204 - Bases documentaires et NoSQL
Les bases du formalisme XML
Un peu plus loin : les attributs
Les attributs sont des paires clé/valeur attachées à un élément.
1
on les place dans la balise ouvrante (forme sérialisée) ;
2
ce sont des noeud-fils spéciaux du nœud Element dans la forme DOM.
Un attribut a une valeur : un chaîne de caractères.
Un élément avec deux attributs.
<elt1 att1=’12’ att2=’fr’>
Du texte
</elt1>
Les attributs ne sont par ordonnés,
et on ne peut pas avoir deux attributs avec le même nom dans un
élément.
Attr.
att1 : ’12’
Element
elt1
Attr.
att2 : ’fr’
Text
Du texte
NFE204 - Bases documentaires et NoSQL
Les bases du formalisme XML
Autre exemple
1
2
3
4
5
6
7
8
<les_genies>
<genie date_naiss="1912−06−23" date_deces="1954−06−07">
Alan Turing
</genie>
<genie date_naiss="1906−04−28" date_deces="1978−01−14">
Kurt Godel
</genie>
</les_genies>
date_naiss est un attribut du premier élément <genie>
1912-06-23 est sa valeur
On aurait très bien pu utiliser des noeuds Text plutôt que des attributs.
Remarque
Les attributs sont (en principe) utilisés pour des "méta-données" qualifiant le contenu
(auteur, date de création). Peu important.
NFE204 - Bases documentaires et NoSQL
Les bases du formalisme XML
Pour compléter l’essentiel : la racine du doument
Un document XML sous forme sérialisée commence toujours par un prologue :
<?xml version="1.0"encoding="utf−8"?>
et le contenu d’un document est toujours contenu dans un unique élément, appelé
l’élément racine.
Dans la représentation DOM, le prologue
Un document avec son prologue et
est représenté par un nœud Document a
l’élément racine.
Document node, called the root node.
<?xml version="1.0" \end{remark} encoding="utf-8" Document
?>
<elt>
Contenu du document.
</elt>
Remarque
Le prologue peut contenir d’autres
informations (DTD, etc.)
Element
elt
Text
Contenu du document
NFE204 - Bases documentaires et NoSQL
Les bases du formalisme XML
Résumé de l’essentiel
Forme sérialisée
Un document débute par un prologue
Le contenu est enclos dans une unique balise ouvrante/fermante.
Chaque balise ouvrante <nom> doit avoir une balise fermante </nom> ; tout ce
qui est entre les deux est soit du texte, soit du balisage correctement ouvert/fermé.
Forme arborescente (DOM)
Un document est un arbre avec une racine (du document) de type Document
La racine du document a un seul élément fils, de type Element, appelé l’élément
racine.
Chaque Element est un sous-arbre représentant du contenu structuré.
NFE204 - Bases documentaires et NoSQL
Les bases du formalisme XML
Document bien formé
Un document est bien formé s’il respecte la syntaxe XML.
à tout tag ouvrant est associé un tag fermant,
les éléments sont imbriqués (pas de superposition),
présence d’un seul élément racine,
etc (se référer à la syntaxe XML).
Un document XML se doit d’être bien formé (sinon inexploitable).
i
Pour tester si l’un de vos documents est bien formé : un vérificateur syntaxique
est disponible à l’adresse
http://www.w3schools.com/xml/xml_validator.asp.
Vous pouvez également ouvrir votre fichier XML avec un navigateur web,
intégrant généralement un parser XML (pour pouvoir être parsé, un document
doit être bien formé).
NFE204 - Bases documentaires et NoSQL
Les bases du formalisme XML
Une petite mise en jambes : structuration d’information
Voici quelques informations “en vrac” :
Le britannique Alan Turing est né le 23 juin 1912 à Londres (au Royaume-Uni). Il obtient sa thèse effectuée sous
la direction d’Alonzo Church en 1938 à l’université de Princeton, thèse intitulée “Systems of logic defined by
ordinals”.
Il est célèbre pour ses travaux sur le problème de l’arrêt, les machines de Turing, la Cryptanalyse d’Enigma
(pendant la seconde guerre mondiale), le test de turing, la conception et la réalisation de l’ACE (Automatic
Computing Engine) réalisé entre 1945 et 1948, au National Physical Laboratory, situé à Teddington au
Royaume-Uni. Il reçu d’ailleurs deux distinctions : l’ordre de l’Empire britannique (en 1945, au rang d’officier,
officiellement pour ses travaux scientifiques, officieusement pour le décryptage de Enigma), il a est également
membre de la Royal Society (élu en 1951, pour ses travaux sur les machines de turing).
Il est à l’origine du prix Turing (informatique), attribué tous les ans depuis 1966.
Il est décédé le 7 juin 1954 (à 41 ans) d’un empoisonnement au cyanure, à Wilmslow (Royaume-Uni).
Kurt Gödel est né le 28 avril 1906 à Brno (Autriche-Hongrie). Il était de nationalité austrau-américaine.
Il obtient son doctorat en philosophie en 1930. Il y prouve la complétude de la logique classique du premier
ordre. Il est particulièrement célèbre pour son “théorème d’incomplétude” publié en 1931.
Il est à l’origine du prix Gödel (informatique théorique), attribué tous les ans depuis 1992.
Il est décédé le 14 janvier 1978 de cachexie, à Princeton (états-Unis).
Test
Réorganisez ces informations afin de les structurer et les présenter sous la forme d’un
arbre (ou d’un fichier) XML.
NFE204 - Bases documentaires et NoSQL
Syntaxe XML : compléments
Plan du cours
1
Structuration de documents : XML
2
Les bases du formalisme XML
3
Syntaxe XML : compléments
NFE204 - Bases documentaires et NoSQL
Syntaxe XML : compléments
Les entités et les références
Les entités sont des symboles qui désignent des fragments. Utile pour réutiliser du
contenu, sans le répéter.
Une entité est déclarée (dans le prologue), puis référencée.
<?xml version="1.0" encoding="ISO−8859−1"?>
<!DOCTYPE a [
<!ENTITY monNom "Charles Martel">
<!ENTITY maSignature SYSTEM "signature.xml">
]>
<a>
Mon nom est &monNom;.
&maSignature;
</a>
NFE204 - Bases documentaires et NoSQL
Syntaxe XML : compléments
Entités prédéfinies
Tout un ensemble de symboles qui sont interprétées comme du marquage / balisage si
on les utilise directement.
Si on les veut littéralement, il faut utiliser des références d’entités.
Déclaration
<!ENTITY
<!ENTITY
<!ENTITY
<!ENTITY
<!ENTITY
lt "&#60;">
gt "&#62;">
amp "&#38;">
apos "&#39;">
quot "&#34;">
Référence
Symbole.
&lt;
&gt;
&amp;
&apos;
&quot;
<
>
&
’
"
NFE204 - Bases documentaires et NoSQL
Syntaxe XML : compléments
Commentaires et instructions de traitement
Les commentaires peuvent être placés n’importe où dans la forme sérialisée.
<!−−C’est un commentaire −−>
Ils apparaissent dans l’arbre DOM comme des nœuds de type Comment.
Remarque
Très peu d’intérêt : on n’est pas censé lire un document XML. Peut être remplacé par
un élément de type element et de nom comment.
Instructions de traitements : commandes spécifiques à une application particulière.
Typiquement, on demande à un processeur XSLT d’utiliser un programe prog.xslt :
<?xml−stylesheet href="prog.xslt"type="text/xslt"?>
NFE204 - Bases documentaires et NoSQL
Syntaxe XML : compléments
Sections litérales
Un analyseur (parseur) XML cherche à analyser tout le contenu pour détecter du
marquage structurel.
Problème : et si on ne veut pas que le contenu soit analysé ?
<?xml version=’1.0’?>
<program>
if ((i < 5) && (j > 6))
printf("error");
</program>
Solution : soit on utilise des entités (lourd), soit on insère la texte à protéger dans une
section littérale.
<?xml version=’1.0’?>
<program>
<![CDATA[if ((i < 5) && (j > 6))
printf("error");
]]>
</program>
NFE204 - Bases documentaires et NoSQL
Syntaxe XML : compléments
C’est tout pour l’instant !
Ce qui précède suffit pour produire et comprendre à peu près tout les documents XML.
Autres aspects qui peuvent (quand même) s’avérer importants :
1
Validation d’un document. Comme déclarer qu’un document doit être conforme à
une structure donnée ? Comment le vérifier ?
⇒ typage de documents XML, avec les DTD ou XML Schéma (horreur !)
2
Conflits de nom. Comment bien interpréter une balise (nom d’élément) quand on
assemble plusieurs documents ?
⇒ les namespaces (espaces de noms).
3
et autres aspects exotiques...