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é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 & (version numérique : ) < devient < (ou <) > devient > (ou >) " devient " (ou ') ’ devient ' (ou ") 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 "<"> gt ">"> amp "&"> apos "'"> quot """> Référence Symbole. < > & ' " < > & ’ " 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...