NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires...

29
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

Transcript of NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires...

Page 1: NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires et NoSQL Les bases du formalisme XML Document bien formé Un document est bien formé

NFE204 - Bases documentaires et NoSQL

NFE204 - Bases documentaires et NoSQLPartie XML

Enseignant : Philippe Rigaux

Équipe VertigoLaboratoire CEDRIC

Conservatoire National des Arts & Métiers, Paris, France

Page 2: NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires et NoSQL Les bases du formalisme XML Document bien formé Un document est bien formé

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

Page 3: NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires et NoSQL Les bases du formalisme XML Document bien formé Un document est bien formé

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 pourdes 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), etbeaucoup d’autres.

Remarque

1. XML est une version simplifiée de SGML, utilisé depuis longtempspour les documents techniques.

2. HTML, jusqu’à la version 4.0, est aussi une variante de SGML.XHTML est un dialecte XML.

Page 4: NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires et NoSQL Les bases du formalisme XML Document bien formé Un document est bien formé

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

serialized

form

Applicationparser serializer

tree form

FIGURE 1: Parcours d’un document XML

La forme sérialisée est un codage séquentiel de l’arbre qui obéit à une syntaxeparticuliè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 quandl’occasion se présentera.

Page 5: NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires et NoSQL Les bases du formalisme XML Document bien formé Un document est bien formé

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

fn

Jean

ln

Doe

work

INRIA address

city

Cachan

zip

94235

email

[email protected]

purpose

like to teach

Remarque

Une exception : le parseur SAX (Simple Api for XML)

Page 6: NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires et NoSQL Les bases du formalisme XML Document bien formé Un document est bien formé

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>

Page 7: NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires et NoSQL Les bases du formalisme XML Document bien formé Un document est bien formé

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.

Page 8: NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires et NoSQL Les bases du formalisme XML Document bien formé Un document est bien formé

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

Page 9: NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires et NoSQL Les bases du formalisme XML Document bien formé Un document est bien formé

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

Page 10: NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires et NoSQL Les bases du formalisme XML Document bien formé Un document est bien formé

NFE204 - Bases documentaires et NoSQL

Les bases du formalisme XML

Un document XML (suite)

Un document XML est composé de :

1 Un prologue1 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 textesdes commentaires

Page 11: NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires et NoSQL Les bases du formalisme XML Document bien formé Un document est bien formé

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.

Page 12: NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires et NoSQL Les bases du formalisme XML Document bien formé Un document est bien formé

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.

Page 13: NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires et NoSQL Les bases du formalisme XML Document bien formé Un document est bien formé

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’ontdonc pas de contenu.

2 ils ont une valeur mais pas de nom

Page 14: NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires et NoSQL Les bases du formalisme XML Document bien formé Un document est bien formé

NFE204 - Bases documentaires et NoSQL

Les bases du formalisme XML

Correspondance forme sérialisée - forme DOM

Voici un élément contenant dutexte.

<monEl>Le contenu textuel.

</monEl>

Ce document représenté en DOM : chaquenœud a un type, soit Document soit Text.

ElementmonEl

TextContenu textuel

Page 15: NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires et NoSQL Les bases du formalisme XML Document bien formé Un document est bien formé

NFE204 - Bases documentaires et NoSQL

Les bases du formalisme XML

Imbrication des élémennts

Le contenu d’un élément est1 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 demoindre importance (commentaires, etc.)

Exemple d’éléments imbriqués

<elt1>Contenu texte<elt2>

Autre contenu</elt2>

</elt1>

Elementelt1

TextContenu texte

Elementelt2

TextAutre contenu

Page 16: NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires et NoSQL Les bases du formalisme XML Document bien formé Un document est bien formé

NFE204 - Bases documentaires et NoSQL

Les bases du formalisme XML

Encore un exemple

Un autre document, pas beaucoup plus compliqué.

1 <les_genies>2 <genie>3 Alan Turing4 </genie>5 <genie>6 Kurt Godel7 </genie>8 </les_genies>

Le vocabulaire à employer :

<genie> est une balise ouvrante (tagouvrant)

</genie> est une balise fermante (tagfermant)

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 ?

Page 17: NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires et NoSQL Les bases du formalisme XML Document bien formé Un document est bien formé

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;)

Page 18: NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires et NoSQL Les bases du formalisme XML Document bien formé Un document est bien formé

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 attri-buts avec le même nom dans unélément.

Elementelt1

Attr.att1 : ’12’

Attr.att2 : ’fr’

TextDu texte

Page 19: NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires et NoSQL Les bases du formalisme XML Document bien formé Un document est bien formé

NFE204 - Bases documentaires et NoSQL

Les bases du formalisme XML

Autre exemple

1 <les_genies>2 <genie date_naiss="1912−06−23" date_deces="1954−06−07">3 Alan Turing4 </genie>5 <genie date_naiss="1906−04−28" date_deces="1978−01−14">6 Kurt Godel7 </genie>8 </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.

Page 20: NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires et NoSQL Les bases du formalisme XML Document bien formé Un document est bien formé

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.

Un document avec son prologue etl’élément racine.

<?xml version="1.0" \end{remark} encoding="utf-8" ?><elt>

Contenu du document.</elt>

Remarque

Le prologue peut contenir d’autresinformations (DTD, etc.)

Dans la représentation DOM, le prologueest représenté par un nœud Document aDocument node, called the root node.

Document

Elementelt

TextContenu du document

Page 21: NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires et NoSQL Les bases du formalisme XML Document bien formé Un document est bien formé

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 cequi 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émentracine.

Chaque Element est un sous-arbre représentant du contenu structuré.

Page 22: NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires et NoSQL Les bases du formalisme XML Document bien formé Un document est bien formé

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 syntaxiqueest 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 documentdoit être bien formé).

Page 23: NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires et NoSQL Les bases du formalisme XML Document bien formé Un document est 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 sousla direction d’Alonzo Church en 1938 à l’université de Princeton, thèse intitulée “Systems of logic defined byordinals”.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 (AutomaticComputing Engine) réalisé entre 1945 et 1948, au National Physical Laboratory, situé à Teddington auRoyaume-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 égalementmembre 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 premierordre. 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’unarbre (ou d’un fichier) XML.

Page 24: NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires et NoSQL Les bases du formalisme XML Document bien formé Un document est bien formé

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

Page 25: NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires et NoSQL Les bases du formalisme XML Document bien formé Un document est bien formé

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 ducontenu, 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>

Page 26: NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires et NoSQL Les bases du formalisme XML Document bien formé Un document est bien formé

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 sion les utilise directement.

Si on les veut littéralement, il faut utiliser des références d’entités.

Déclaration Référence Symbole.<!ENTITY lt "&#60;"> &lt; <<!ENTITY gt "&#62;"> &gt; ><!ENTITY amp "&#38;"> &amp; &<!ENTITY apos "&#39;"> &apos; ’<!ENTITY quot "&#34;"> &quot; "

Page 27: NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires et NoSQL Les bases du formalisme XML Document bien formé Un document est bien formé

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é parun é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"?>

Page 28: NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires et NoSQL Les bases du formalisme XML Document bien formé Un document est bien formé

NFE204 - Bases documentaires et NoSQL

Syntaxe XML : compléments

Sections litérales

Un analyseur (parseur) XML cherche à analyser tout le contenu pour détecter dumarquage 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 unesection littérale.

<?xml version=’1.0’?><program><![CDATA[if ((i < 5) && (j > 6))

printf("error");]]></program>

Page 29: NFE204 - Bases documentaires et NoSQL - Partie XML · 2013-10-14 · NFE204 - Bases documentaires et NoSQL Les bases du formalisme XML Document bien formé Un document est bien formé

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 onassemble plusieurs documents ?⇒ les namespaces (espaces de noms).

3 et autres aspects exotiques...