38
XML Nicolas Singer Maître de conférence, université Champollion

XML Nicolas Singer Maître de conférence, université Champollion

Embed Size (px)

Citation preview

Page 1: XML Nicolas Singer Maître de conférence, université Champollion

XML

Nicolas SingerMaître de conférence, université Champollion

Page 2: XML Nicolas Singer Maî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

Page 3: XML Nicolas Singer Maître de conférence, université Champollion

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.

Page 4: XML Nicolas Singer Maître de conférence, université Champollion

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)

Page 5: XML Nicolas Singer Maître de conférence, université Champollion

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>

Page 6: XML Nicolas Singer Maître de conférence, université Champollion

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.

Page 7: XML Nicolas Singer Maître de conférence, université Champollion

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>

Page 8: XML Nicolas Singer Maître de conférence, université Champollion

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)

Page 9: XML Nicolas Singer Maître de conférence, université Champollion

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.

Page 10: XML Nicolas Singer Maître de conférence, université Champollion

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

Page 11: XML Nicolas Singer Maître de conférence, université Champollion

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>

Page 12: XML Nicolas Singer Maître de conférence, université Champollion

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.

Page 13: XML Nicolas Singer Maître de conférence, université Champollion

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 />

Page 14: XML Nicolas Singer Maître de conférence, université Champollion

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"  />

Page 15: XML Nicolas Singer Maître de conférence, université Champollion

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: &lt; correspond à < &quot; correspond à " &aquot; correspond à ' &#233; correspond à é

Page 16: XML Nicolas Singer Maître de conférence, université Champollion

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 &lt; 2x (équation &amp;1)</equation>

Page 17: XML Nicolas Singer Maître de conférence, université Champollion

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

Page 18: XML Nicolas Singer Maître de conférence, université Champollion

Structure XML (suite)

Un document XML peut contenir des commentaires

Ils suivent la même syntaxe qu'en HTML

<!-- Commentaire -->

Page 19: XML Nicolas Singer Maître de conférence, université Champollion

É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…

Page 20: XML Nicolas Singer Maître de conférence, université Champollion

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.

Page 21: XML Nicolas Singer Maître de conférence, université Champollion

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

Page 22: XML Nicolas Singer Maître de conférence, université Champollion

Les DTDs

DTD externe locale :<!DOCTYPE element

SYSTEM "bibliographie.dtd">

DTD externe publique :<!DOCTYPE element PUBLIC 

"-//singer//maDTD//FR" 

"http://monsite/biblio.dtd">

Page 23: XML Nicolas Singer Maître de conférence, université Champollion

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

]>

Page 24: XML Nicolas Singer Maître de conférence, université Champollion

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

Page 25: XML Nicolas Singer Maître de conférence, université Champollion

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

Page 26: XML Nicolas Singer Maître de conférence, université Champollion

Les DTDs : éléments

Les éléments texte :

<!ELEMENT exemple (#PCDATA)>

Utilisation :

<exemple>

n'importe quel texte peut venir ici

</exemple>

Page 27: XML Nicolas Singer Maître de conférence, université Champollion

Les DTDs : éléments

Les éléments vides :

<!ELEMENT exemple EMPTY>

Utilisation :

<exemple />

ou

<exemple> </exemple>

Page 28: XML Nicolas Singer Maître de conférence, université Champollion

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>

Page 29: XML Nicolas Singer Maître de conférence, université Champollion

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>

Page 30: XML Nicolas Singer Maître de conférence, université Champollion

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

Page 31: XML Nicolas Singer Maître de conférence, université Champollion

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

Page 32: XML Nicolas Singer Maître de conférence, université Champollion

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>

Page 33: XML Nicolas Singer Maître de conférence, université Champollion

Les DTDs : éléments

Les éléments quelconques :

<!ELEMENT exemple ANY >

Utilisation :

<exemple>

…. <!-- tout et n'importe quoi, y compris rien -->

</exemple>

Page 34: XML Nicolas Singer Maître de conférence, université Champollion

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

Page 35: XML Nicolas Singer Maître de conférence, université Champollion

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">

Page 36: XML Nicolas Singer Maître de conférence, université Champollion

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">

Page 37: XML Nicolas Singer Maître de conférence, université Champollion

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".

Page 38: XML Nicolas Singer Maître de conférence, université Champollion

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;