Upload
olympe-thuillier
View
107
Download
0
Embed Size (px)
Citation preview
XML
Nicolas SingerMaître de conférence, université Champollion
XML ?
Langage de description de documents électroniques :
Pour représenter et structurer de l'information
Afin d'échanger cette information
Et donc écrire des applications informatiques
D’où vient XML ?
Du SGML Standard Generalized Markup Language
langage de balisage standard généralisé Standard de 1986 pour les documents électroniques
quelconques
complexe à apprendre et à utiliser quotidiennement.
D’où vient XML ?
Du HTML (1991)
Hypertext Markup Language langage de balisage hypertexte
Dérivé du SGML pour la publication de documents Web Retour vers SGML avec le XHTML
Champ d’action limité car dédié au Web. Surtout basé sur la présentation (peu de
description du contenu)
Pourquoi XML ?
exemple HTML
<H1> Slogan </H1>
<H3> François Jacques </H3>
<IMG SRC= "photoJacques.jpg">
<P> Vers un avenir meilleur porteur
d’espoir </P>
<P align="center"> Votez pour moi </P>
Naissance d’XML
XML (1998)
Dérivé du SGML qui tente de se servir des principes
de simplicité du HTML et de la souplesse SGML.
Se focalise sur la structuration des données et pas sur leur mise en forme.
tout document XML peut être basé sur une DTD ou un schéma afin de figer cette structuration.
Exemple XML
<?xml version="1.0" encoding="ISO-8859-1"?>
<slogan> <auteur> François Jacques </auteur>
<photo> photoJacques.jpg </photo>
<message>
Vers un avenir meilleur porteur d’espoir
</message>
<intention> Votez pour moi </intention>
</slogan>
Principe de XML
Séparation forme et fond. Pour afficher un document XML, il faut donc
Un fichier contenant les données à mettre en forme (XML).
Un fichier informant sur la mise en forme souhaitée (XSL).
Optionnel : un fichier peut définir les balises auxquelles le document XML pourra avoir recours.
C’est la DTD (Document Type Definition)
Principe de XML
Un document XML est bien formé s'il respecte les règles syntaxiques du XML
Un document XML est valide s'il est bien formé et respecte la structure définie dans sa DTD
Un document XML sans DTD est dit "standalone" On ne précise donc pas quels sont les balises qui peuvent
y figurer et leur imbrication Il n'y a donc pas de notion de validité pour un tel
document.
Structure XML
Dans un document XML on trouve : Un prologue
Déclaration XML Des éléments optionnels
Déclaration de type de document (DTD) Déclaration de traitement (feuilles de style, etc.)
Un élément racine
Un arbre d’éléments
Structure XML
<?xml version="1.0" encoding="ISO-8859-1"?>
<biblio><livre> <titre> Les Misérables </titre> <auteur> Victor Hugo </auteur> <nb_tomes> 3 </nb_tomes></livre><livre> <titre> L'Assomoir </titre> <auteur> Émile Zola </auteur></livre><livre lang="en"> <titre> David Copperfield </titre> <auteur> Charles Dickens </auteur> <nb_tomes> 3 </nb_tomes></livre>
</biblio>
Décodage de l’exemple <?xml version="1.0" encoding="ISO-8859-1"?>Cette déclaration nous indique la version du XML, et
l’encodage des caractères <biblio> …. </biblio> Constitue l’élément racine du document
<titre> Les Misérables </titre> Ici l’élément titre contient du texte
<livre> <titre> L'Assomoir </titre> <auteur> Émile Zola </auteur></livre>
Ici l’élément livre contient d’autres éléments.
Décodage de l’exemple
Un élément est constitué d'une balise ouvrante et fermante
<livre> …. </livre>
Si le contenu de l'élément est vide, on peut
écrire :<livre> </livre> ou <livre />
Décodage de l’exemple <livre lang="en">
L’élément livre contient un attribut lang dont la valeur est "en".
Les attributs ne peuvent être présents que dans la balise ouvrante d'un élément.
La valeur des attributs est toujours entre guillemets.
On ne peux pas avoir deux fois le même attribut mais on peut avoir plusieurs attributs différents.
<img src="ours.gif" alt="Gros ours" width="56" />
Structure XML (suite)
Un document XML peut contenir des entités
Il s'agit de notations qui sont remplacées par leur valeur lors de l'analyse du document Elle peuvent être prédéfinie par le standard XML Elles peuvent être définies dans la DTD Elles s'utilisent encadrées par les caractères & et ;
Par exemple voici quelques entités: < correspond à < " correspond à " &aquot; correspond à ' é correspond à é
Structure XML (suite)
Cet élément n'est pas bien formé en XML
<equation>2x + 3 < 2x (équation &1)
</equation>
Il doit être remplacé par :<equation>
2x + 3 < 2x (équation &1)</equation>
Structure XML (suite)
Un document XML peut contenir des sections littérales Il s'agit d'une section qui débute par la notation
<![CDATA[
et qui se termine par
]]> Par exemple :
<![CDATA[Une balise commence par un < et se termine par un >.]]>
Le contenu d'une section CDATA n'est pas analysé par le parseur XML
Structure XML (suite)
Un document XML peut contenir des commentaires
Ils suivent la même syntaxe qu'en HTML
<!-- Commentaire -->
Écrire du XML
Comment utiliser éléments et attributs ?
Exemple : Un document listant les étudiants de licence avec leur groupe, sous-groupe, nom, et prénom…
Les DTDs
Elles permettent de spécifier (et d'imposer) la structure d'un document XML
Elles peuvent définir des entités
Un document XML qui est bien formé et respecte sa DTD est dit valide.
Les DTDs
Elle se déclare en utilisant :
<!DOCTYPE element …. "…" "…">
où element désigne la racine du document auquel cette DTD s'applique.
Une DTD peut être stockée dans le document lui-même ou dans un fichier externe
Les DTDs
DTD externe locale :<!DOCTYPE element
SYSTEM "bibliographie.dtd">
DTD externe publique :<!DOCTYPE element PUBLIC
"-//singer//maDTD//FR"
"http://monsite/biblio.dtd">
Les DTDs
DTD interne :<!DOCTYPE biblio[
<!ELEMENT biblio (livre)*>
<!ELEMENT livre (titre, auteur, nb_pages)>
<!ATTLIST livretype (roman | nouvelles | théâtre) #IMPLIEDlang CDATA "fr"
>
<!ELEMENT titre (#PCDATA)>
<!ELEMENT auteur (#PCDATA)>
<!ELEMENT nb_pages (#PCDATA)>
]>
Les DTDs
Dans une DTD on trouve :
Des déclarations d'éléments Des déclarations d'attributs (d'éléments) Des déclarations d'entités
Les DTDs : éléments
Une déclaration d'éléments est de la forme :
<!ELEMENT nom type_element>
où nom est le nom de l'élément et type_element son type :
Texte : (#PCDATA) Vide : EMPTY Séquence : (elt1,elt2,elt3,…) Choix : (elt1 | elt2 | elt3 | …) Quelconque : ANY
Les DTDs : éléments
Les éléments texte :
<!ELEMENT exemple (#PCDATA)>
Utilisation :
<exemple>
n'importe quel texte peut venir ici
</exemple>
Les DTDs : éléments
Les éléments vides :
<!ELEMENT exemple EMPTY>
Utilisation :
<exemple />
ou
<exemple> </exemple>
Les DTDs : éléments
Les éléments séquence :
<!ELEMENT exemple (ex1,ex2,ex3) >
Utilisation : <exemple>
<ex1> … </ex1><ex2> … </ex2><ex3> … </ex3>
</exemple>
Mais pas : <exemple>
<ex1> … </ex1><ex3> … </ex3>
</exemple>
Les DTDs : éléments
Les éléments choix :
<!ELEMENT exemple (ex1 | ex2 | ex3) >
Utilisation :
<exemple>
<ex1> … </ex1>
</exemple>
Ou encore : <exemple>
<ex1> … </ex1><ex3> … </ex3>
</exemple>
Les DTDs : éléments
Les modificateurs d'occurrence : Lors de la déclaration de séquence ou de
choix d'éléments, à chaque élément enfant peut être attribuée une indication d'occurrence (?, + ou *).
? Signifie au maximum une fois + signifie au moins une fois * signifie zéro fois ou plus
Les DTDs : éléments
Les modificateurs d'occurrence : exemple:
<!ELEMENT exemple (ex1, ex2?, ex3+, ex4*)>
ex1 doit apparaître une fois et une seule
ex2 peut apparaître une seule fois
ex3 doit apparaître au moins une fois
ex4 peut apparaître zéro ou plusieurs fois
Les DTDs : éléments
Les modificateurs d'occurrence : En choisissant bien ses modificateurs, on peut créer des
éléments à contenu mixte. Par exemple :
<!ELEMENT exemple (#PCDATA | auteur)* >
Utilisation : <exemple>
Un peu de texte<auteur> Nicolas </auteur>
</exemple>
Les DTDs : éléments
Les éléments quelconques :
<!ELEMENT exemple ANY >
Utilisation :
<exemple>
…. <!-- tout et n'importe quoi, y compris rien -->
</exemple>
Les DTDs : attributs Les attributs se déclarent avec la syntaxe :
<!ATTLIST nom_element nom_attribut1 type_attribut1 déclaration_défaut1 nom_attribut2 type_attribut2 déclaration_défaut2
… > Où
nom_element désigne l'élément auquel s'applique l'attribut nom_attribut défini le nom de l'attribut type_attribut défini quelles valeurs peut prendre l'attribut déclaration_défaut défini la valeur par défaut de l'attribut
On peut préciser autant d'attribut que l'on veut dans une ATTLIST
Les DTDs : attributs
Chaque attribut peut être requis, optionnel ou fixe et avoir une valeur par défaut.
Déclaration d'un attribut avec une valeur par défaut :<!ELEMENT elt (...)>
<!ATTLIST elt attr CDATA "valeur">
Déclaration d'un attribut requis :<!ELEMENT elt (...)>
<!ATTLIST elt attr CDATA #REQUIRED>
Déclaration d'un attribut optionnel :<!ELEMENT elt ...)>
<!ATTLIST elt attr CDATA #IMPLIED>
Déclaration d'un attribut avec une valeur fixe :<!ELEMENT elt (...)>
<!ATTLIST elt attr CDATA #FIXED "valeur">
Les DTDs : attributs
Les types possibles pour un attribut
Type chaîne de caractères (CDATA)<!ELEMENT elt (...)>
<!ATTLIST elt attr CDATA #IMPLIED> Type Identifiant Unique (ID)<!ELEMENT elt (...)>
<!ATTLIST elt attr ID #IMPLIED> Type énuméré (|)
<!ATTLIST img format (BMP | GIF | JPEG) "JPEG">
Les DTDs : entités
Les entités internes. Symboles définis dans une DTD et utilisés dans
un document XML comme raccourcis d'écritur
<!ENTITY ADN "Acide désoxyribonucléique">
Dans le fichier XML, l'appel à &ADN; sera remplacé par "Acide désoxyribonucléique".
Les DTDs : entités
Les entités externes
Il s'agit de symboles définis dans un autre fichier, mais pouvant être utilisés dans un document XML.
<!ENTITY Inclusion SYSTEM "toto.xml">
Dans le fichier XML, le contenu du fichier toto.xml sera inséré à l'appel de l'entité &Inclusion;