xml : systèmes de parenthèses et structures arborescentes filexml constantine 2005 j-f. perrot 1...

28
XML Constantine 2005 J-F. Perrot 1 XML : Systèmes de parenthèses et structures arborescentes Les machines savent parfaitement traiter des arbres mais les hommes ont besoin de représenter les mêmes arbres par des textes (très longues chaînes de caractères). Les arbres sont des structures à deux dimensions. Les chaînes de caractères sont des structures à une seule dimension. Il faut donc coder les arbres sous forme de chaînes de caractères. Un des moyens pour effecuer ce codage est fourni par les systèmes de parenthèses. Le principe de XML n'est pas autre chose qu'une généralisation des systèmes de parenthèses.

Upload: doanminh

Post on 15-Feb-2019

214 views

Category:

Documents


0 download

TRANSCRIPT

XML Constantine 2005 J-F. Perrot 1

XML : Systèmes de parenthèseset structures arborescentes

• Les machines savent parfaitement traiter des arbres– mais les hommes ont besoin de représenter les mêmes

arbres par des textes (très longues chaînes decaractères).

• Les arbres sont des structures à deux dimensions.– Les chaînes de caractères sont des structures à une seule

dimension.– Il faut donc coder les arbres sous forme de chaînes de

caractères.– Un des moyens pour effecuer ce codage est fourni par

les systèmes de parenthèses.• Le principe de XML n'est pas autre chose qu'une

généralisation des systèmes de parenthèses.

XML Constantine 2005 J-F. Perrot 2

Parenthèses et mouvements de pile

• D'une manière générale, tout système bien parenthésépeut se traduire par une série de mouvements de pilequi laisse la pile invariante,

et réciproquement.• La parenthèse ouvrante s'interprète par empiler (push)• La parenthèse ouvrante s'interprète par dépiler (pop)

( ( ( ) ( ( ) ) ) )psh psh psh pop psh psh pop pop pop pop

XML Constantine 2005 J-F. Perrot 3

Mouvements de pile et parcours d'arbres

• Une série de mouvements de pile laissant à la fin lapile invariante traduit un parcours d'arbre(descendant de gauche à droite)

et réciproquement• push s'interprète par aller au sommet fils le plus à

gauche non encore rencontré• pop s'interprète par remonter au sommet père du

sommet courant

XML Constantine 2005 J-F. Perrot 4

Systèmes à plusieurs types de parenthèsescrochets, accolades, chevrons...

• Il permettent de représenter des arbres à plusieurs types desommets,– et des mouvements de pile avec différentes informations

dans la pile.• Exemple :

( [ ( ) { < > } ] )psh1 psh2 psh1 pop1 psh3 psh4 pop4 pop3 pop2 pop1

XML Constantine 2005 J-F. Perrot 5

( [ ] { < < > > } ( [ ( ) { < > } ] ) )

Le navigateurpermet d'explorerl'arbre.

XML Constantine 2005 J-F. Perrot 6

XML minimum : les balises (tags)• Un fichier XML doit commencer par l'en-tête

<?xml version="1.0"?>qui doit apparaître en première ligne première colonne.• Elle est suivie d'un système bien parenthésé où

– les parenthèses ouvrantes son de la forme <un_nom>– et les fermantes correspondantes de la forme </un_nom>– un_nom est (grosso modo) un identificateur C– chaque couple ouvrante-fermante définit un élément.

• Ce système doit être premier, c'est-à-dire non décomposable endeux systèmes bien parenthésés (la fermante de la premièreouvrante doit arriver en dernière position : "[[]()]", pas"[()][]")– l'élément correspondant est dit élément-racine du système.

• Exemples : voir ci-après

XML Constantine 2005 J-F. Perrot 7

XML minimum : les attributs

• XML offre trois manières d'associer de l'information aux sommetsde l'arbre défini par le système parenthésé des balises (en plus dunom porté par la balise)– les fils du sommet (si c'est un nœud)– le texte contenu entre l'ouvrante et la fermante (indépendament

des éléments-fils) [texte libre - ne doit contenir ni "<" ni "&"]– les attributs : système de noms-valeurs écrit dans la balise

ouvrante.• Exemple d'attributs :<personne nom="Du Nabla" prenom="Jacques"

date="22/12/56">....</personne>• Les valeurs d'attributs sont des chaînes de caractères.

XML Constantine 2005 J-F. Perrot 8

XML minimum : feuilles et commentaires• Parmi les sommets d'un arbre, on distingue les nœuds des feuilles :

les nœuds ont des fils, les feuilles n'en ont pas (sommets terminaux).• En XML, on appelle contenu d'un élément tout ce qui est écrit entre

les balises : éléments-fils et/ou texte.– une feuille est alors un élément qui n'a pas de contenu (élément

vide - mais il peut avoir des attributs !)• L'écriture des feuilles peut être abrégée :

<nom> </nom> <===> <nom/><objet prix="45"></objet> <===> <objetprix="45"/>

• Les commentaires sont écrits entre les pseudo-balises"<!--" et "-->"

• Le traitement des blancs, tabs et sauts de ligne dépend del'application...

XML Constantine 2005 J-F. Perrot 9

Représentation en XML :attributs ou structure ?

<personne nom="Du Nabla" prenom="Jacques"date="22/12/56"/>

ou bien<personne><nom>Du Nabla</nom><prenom>Jacques</prenom>

<date>22/12/56</date></personne>

?????

XML Constantine 2005 J-F. Perrot 10

Exemple 1 : une table de noms et de notesreprésentée de trois manières différentes

• Les balises portent les noms, les notes sont leurs contenustextuels

<?xml version="1.0" ?><liste>

<Pierre> 12 </Pierre ><Paul> 13 </Paul><Jacques> 17 </Jacques>

</liste>

• Noms et notes sont attributs de l'élément eleve<liste>

<eleve nom="Pierre" note="12"/><eleve nom="Paul" note="13"/><eleve nom="Jacques" note="17"/>

</liste>

XML Constantine 2005 J-F. Perrot 11

Exemple 1 : une table de noms et de notessuite

• Noms et notes sont des éléments à part entière, fils de l'élémenteleve :

<?xml version="1.0" ?><liste> <eleve>

<nom> Pierre</nom> <note> 12 </note> </eleve> <eleve>

<nom> Paul</nom> <note> 13 </note> </eleve> <eleve>

<nom> Jacques</nom> <note> 17 </note> </eleve></liste>

XML Constantine 2005 J-F. Perrot 12

Exemple 2 : Une représentation possiblepour les expressions arithmétiques

<?xml version='1.0'?><ExpAr> <Bin op="+">

<og> <Bin op="*">

<og> <VarExp nom="x"/> </og><od> <Cte val="2"/> </od>

</Bin> </og> <od> <Cte val="1"/> </od>

</Bin></ExpAr>

L'expression

((x*2)+1)

XML Constantine 2005 J-F. Perrot 13

Exemple 3 : Syntaxe abstraite d'un langage deprogrammation ultra-simple

Le texte-source{calcul du quotient et du reste}VAR a ; b ; q ; r.LIRE a {positif ou nul};LIRE b {positif};q := 0 ; r := a ;TANTQUE r >= b FAIRE

q := q+1 ; r := r-bFINTQ;ECRIRE q ;ESP ;ECRIRE r ;LIG.

/* calcul du quotient et du reste */int a, b, q, r ;main () { scanf("%d", &a); /* positifou nul */ scanf("%d", &b); /* positif*/ q = 0; r = a; while (r >= b) {

q = q+1; r = r-b; }

printf("%d ", q); printf("%d\n", r);}

En syntaxe C

XML Constantine 2005 J-F. Perrot 14

Exemple 3<?xml version='1.0'?><Prog><Sequence> <Lecture> <Var nom="a"/> </Lecture> <Lecture> <Var nom="b"/> </Lecture> <Affectation> <Var nom="q"/> <Cte val="0"/> </Affectation> <Affectation> <Var nom="r"/> <VarExp> <Var nom="a"/> </VarExp> </Affectation> <Boucle> <Comparaison op="&gt;="> <VarExp> <Var nom="r"/> </VarExp>

<VarExp> <Var nom="b"/> </VarExp> </Comparaison> <Sequence> <Affectation> <Var nom="q"/> <Bin op="+"> <VarExp> <Var nom="q"/> </VarExp> <Cte val="1"/> </Bin> </Affectation> <Affectation> <Var nom="r"/> <Bin op="-"> <VarExp><Var nom="r"/></VarExp> <VarExp><Var nom="b"/></VarExp> </Bin> </Affectation> </Sequence> </Boucle> <Ecriture> <VarExp> <Var nom="q"/> </VarExp> </Ecriture> <Espace/> <Ecriture> <VarExp> <Var nom="r"/> </VarExp> </Ecriture> <Ligne/></Sequence></Prog>

XML Constantine 2005 J-F. Perrot 15

DTDs, XML-Schémas, RELAX NG

• Il existe (au moins) trois techniques pour exprimer la structure d'un documentXML– celle des Document Type Definitions (DTD) héritée de SGML– celle des schémas XML (XML Schema) proposée par le W3G.– RELAX NG proposée par le "global consortium" OASIS

• Toutes sont utilisables avec des outils logiciels permettant de vérifier qu'undocument XML donné est effectivement conforme à sa spécification.

• Que choisir ?– Les DTDs restent le moyen d'expression des normes officielles (p.ex.

HTML 4) mais elles ne permettent pas de dire tout ce que l'on voudrait– La technique des schémas est plus puissante que celle des DTDs, mais plus

compliquée.– RELAX NG semble offrir un compromis raisonnable

• Nous nous bornerons ici à une introduction aux DTDs.

XML Constantine 2005 J-F. Perrot 16

Métagrammaire des DTDs• Une DTD permet essentiellement de spécifier le contenu et les attributs des

éléments qui composent le fichier XML visé.• Spécification de contenu : <!ELEMENT nom (contenu)>

le contenu pouvant être1. une séquence : suite de noms d'éléments séparés par des virgules2. un choix : suite de noms d'éléments séparés par des barres "|"3. un contenu textuel : #PCDATA4. un mélange de tout cela.

• Spécification d'attribut : <!ATTLIST nomElt nomAttr type défaut>– le type pouvant être CDATA, un choix de valeurs (nécessairement des noms),

bien d'autres encore...– le défaut pouvant être la valeur par défaut, ou l'un des indicateurs#REQUIRED, #IMPLIED (= optionnel), #FIXED valeur (valeur imposée, par

défaut et non modifiable).

XML Constantine 2005 J-F. Perrot 17

Exemple 1Noms & notes 3ème manière

<?xml version="1.0" encoding='ISO-8859-1'?><!-- Tableau Noms-Notes 3e`me manie`re --><!ELEMENT liste (eleve*)><!ELEMENT eleve (nom, note)><!ELEMENT nom (#PCDATA)><!ELEMENT note (#PCDATA)>

L'élément liste contient un nombre quelconque d'éléments eleve.

L'élément eleve contient un élément nom suivi d'un élément note.

Les éléments nom et note contiennent des chaînes de caractères quiseront analysées par le parseur (PCDATA = Parsed Character Data).

XML Constantine 2005 J-F. Perrot 18

Exemple 2Noms & notes 2ème manière

<?xml version="1.0" encoding='ISO-8859-1'?><!-- Tableau Noms-Notes 2e`me manie`re --><!ELEMENT liste (eleve*)><!ELEMENT eleve EMPTY><!ATTLIST eleve nom CDATA #REQUIRED><!ATTLIST eleve note CDATA #REQUIRED>

Les attributs de l'élément (vide) eleve sont nom et note, dontles valeurs sont des chaînes de caractères non analysées (typeCDATA), et dont la présence est obligatoire (indicateur#REQUIRED).

Et la représentation première manière ? Elle s'avèreimpossible à formaliser par une DTD !

XML Constantine 2005 J-F. Perrot 19

Exemple 3Expressions arithmétiques

<?xml version="1.0" encoding='ISO-8859-1'?><!-- Expressions arithme'tiques --><!ELEMENT ExpAr (Bin|Cte|VarExp)><!ELEMENT Cte EMPTY><!ELEMENT VarExp EMPTY><!ELEMENT Bin (og, od)><!ELEMENT og (Bin|Cte|VarExp)><!ELEMENT od (Bin|Cte|VarExp)>

<!ATTLIST Bin op (plus|mult|sub|div) #REQUIRED><!ATTLIST Cte val CDATA #REQUIRED><!ATTLIST VarExp nom CDATA #REQUIRED>

N.B. : Pour pouvoir spécifier que l'attribut op de l'élément Bin nepeut prendre que quatre valeurs, il a fallu les désigner par des noms...

XML Constantine 2005 J-F. Perrot 20

Déclaration de la DTD d'undocument

déclaration interne<?xml version="1.0" ?><!DOCTYPE liste [

<!ELEMENT liste (eleve*)><!ELEMENT eleve (nom, note)><!ELEMENT nom (#PCDATA)><!ELEMENT note (#PCDATA)>

]><liste> <eleve>

<nom>Pierre</nom> <note> 12 </note> </eleve> <eleve>

<nom>Paul</nom> <note> 13 </note> </eleve> <eleve>

<nom>Jacques</nom> <note> 17 </note> </eleve></liste>

L'énoncéDOCTYPE doitdésigner l'élément-racine du fichier(ici liste).

Cet élément doitêtre le premier dansla liste de la DTD.

XML Constantine 2005 J-F. Perrot 21

Déclaration de la DTD d'undocument

déclaration externe locale<?xml version="1.0" ?><!DOCTYPE liste SYSTEM "NomNote2.dtd"><liste> <eleve>

<nom>Pierre</nom> <note> 12 </note> </eleve> <eleve>

<nom>Paul</nom> <note> 13 </note> </eleve> <eleve>

<nom>Jacques</nom> <note> 17 </note> </eleve></liste>

Le contenu dufichierNomNote2.dtda été montré pl. 5.La mentionSYSTEM signaleque ce fichier setrouve localementsous le nomindiqué.L'alternativeserait PUBLIC voircours HTML-1.

XML Constantine 2005 J-F. Perrot 22

Problème de l'ambiguïté du vocabulaireEspaces de noms

• Les fichiers XML sont en général des documents importants destinés à deséchanges à travers le réseau, à l'échelle mondiale.– Les noms des éléments et des attributs jouent un rôle primordial dans

l'interprétation de ces documents.• Un grand nombre d'entre eux ont des significations standard

– p. ex. en HTML : le nom title a un sens et un usage bien définis– plus généralement dans un grand nombre de langages spécialisés basés sur

XML (p. ex. XHTML, MathML, VoiceML)– pour des applications qui interprètent du XML (voir XSLT ci-après)

• D'où la nécessité d'introduire des domaines nominaux, ou espaces de noms (XML Name Spaces)– qui permettent de lever l'ambiguïté entre les divers emplois d'une même

chaîne de caractères comme nom.

XML Constantine 2005 J-F. Perrot 23

Désigner un domaine nominal• La désignation d'un espace de noms se fait par un URL :

– par exemple, pour le domaine HTML : http://www.w3.org/HTML/1998/html4

• Un URL (Uniform Resource Locator) est une chaîne decaractères identifiant une ressource informatique de manièreunivoque sur le réseau. Il se compose de– une indication de protocole : http– un nom de domaine : www.w3.org– un chemin vers la ressource : HTML/1998/html4

• Un nom appartenant à ce domaine prend la forme URL:nom– par exemple, le nom complet de title en HTML est "http://www.w3.org/HTML/1998/html4:title"

XML Constantine 2005 J-F. Perrot 24

Nom local et nom complet

• Il est clair que l'emploi systématique des noms complets estbeaucoup trop lourd. On a donc recours à– un système de préfixes déclarés– la déclaration d'un domaine par défaut

• Ces déclarations peuvent avoir lieu dans n'importe quel élément– en général on les fait dans l'élément-racine du document

• Chaque préfixe est déclaré comme un attribut (standard)"xmlns:préfixe=URL"(xmlns = XML NameSpace)

• Le domaine par défaut seulement par "xmlns=URL".

XML Constantine 2005 J-F. Perrot 25

Exemple : l'idée

• Un document XML où il est question à la fois– d'une critique de livre (Book Review) suivant le vocabulaire

fixé par www.xml.com/books (où il y a un title)– et d'une mise en page HTML (où il y a un autre title).

• Le domaine par défaut sera HTML, déclaré parxmlns="http://www.w3.org/HTML/1998/html4"

• Le vocabulaire non-HTML sera préfixé par "xdc", ce préfixeétant déclaré par xmlns:xdc="http://www.xml.com/books"

• Résultat de l'interprétation par le navigateur :Le titre HTML

Le titre xdc

XML Constantine 2005 J-F. Perrot 26

Exemple : interprétation XML rudimentairehtml --> 0 attributshead --> 0 attributstitle --> 0 attributsBook Reviewtitle <--head <--body --> 0 attributsbookreview --> 0

attributsh1 --> 1 attributstitle --> 0 attributsXML: A Primertitle <--h1 <--table --> 1 attributstr --> 1 attributstd --> 0 attributsAuthortd <--td --> 0 attributsPricetd <--

td --> 0 attributspages --> 0 attributs352pages <--td <--td --> 0 attributsdate --> 0 attributs1998/01date <--td <--tr <--table <--bookreview <--body <--html <--Termine' !

td --> 0 attributsPagestd <--td --> 0 attributsDatetd <--tr <--tr --> 2 attributstd --> 0 attributsauthor --> 0attributsSimon St. Laurentauthor <--td <--td --> 0 attributsprice --> 0attributs31.98price <--td <--

XML Constantine 2005 J-F. Perrot 27

Exemplele fichier

XML

<?xml version="1.0"?><html xmlns="http://www.w3.org/HTML/1998/html4"

xmlns:xdc="http://www.xml.com/books"> <head><title>Book Review</title></head> <body> <xdc:bookreview> <h1 style="font-family: sans-serif;">

<xdc:title>XML: A Primer</xdc:title> </h1> <table border="3"> <tr align="center"> <td>Author</td><td>Price</td> <td>Pages</td><td>Date</td> </tr> <tr align="left" style="font-family: sans-serif;"> <td><xdc:author>Simon St.Laurent</xdc:author></td> <td><xdc:price>31.98</xdc:price></td> <td><xdc:pages>352</xdc:pages></td> <td><xdc:date>1998/01</xdc:date></td> </tr> </table> </xdc:bookreview> </body></html>

XML Constantine 2005 J-F. Perrot 28

Exemple de fichier XMLavec deux espaces de noms

<?xml version="1.0"?><rdf:RDF xmlns:rdf= "http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">

<rdf:Description about="http://www.w3.org/Home/Lassila"><dc:Creator>Ora Lassila</dc:Creator>

</rdf:Description></rdf:RDF>

correspondant à deux vocabulaires,celui de RDF (Resource Descrition Format) qui est le

formalisme de base du "Web sémantique"et celui du Dublin Core (Dublic Core Metadata Initiative),

spécialisé dans la description de documents