Vous êtes sur la page 1sur 50

Cours Programmation Web

Les technologies XML


DTD et XSL

Enseignant : Yassine MBAREK


ISET Jendouba
yassine.mbarek@gmail.com
Rappel

 Un document peut se définir par le


fond et par la forme
 Forme = structure + présentation
 Fond = structure + sémantique

2
PROBLEMATIQUE 1/3
 Informations et documents dans
l’entreprise
 Constat :
 Inflation du volume d’informations
 Coût et difficulté :
 Difficultés à retrouver un document
 Coût induit par la gestion de documents

3
PROBLEMATIQUE 2/3
1986 : SGML 1991 : HTML 1998 : XML

adaptabilité, simple, puissance


Objectifs intelligence, portable, de SGML,

gestion des gestion de simplicité


liens liens du HTML

complexe, non
Inconvénients difficilement adaptable,
portable non
intelligent

4
PROBLEMATIQUE 3/3
 SGML (Standard Generalized Markup Language)
 Langage à balises pour représenter des documents

structurés
 Complexe, difficile à apprendre

 Réservé aux professionnels de la documentation

 Difficilement extensible au Web

 HTML ! (dérive de SGML)


 Conçu dans l’optique d’afficher des « pages Web »

 C’est ce qui a fait son succès

 Problème de ces langages


 Forme = structure + présentation
 Fond = structure + sémantique
5
W3C
 Le WORLD WIDE WEB Consortium crée des
standards pour le Web.
 Le W3C en 7 points…
 Accès universel (internationalisation, web mobile…)
 Web sémantique (RDF, XML…)

 Confiance (signatures électroniques, collaboratif…)

 Interopérabilité (consensus industriel)

 Evolutivité (simplicité, modularité, compatibilité…)

 Décentralisation (systèmes répartis, tolérance aux erreurs)

 Multimédia (SVG, SMIL…)

6
CARACTERISTIQUES
 Richesse sémantique de SGML
 Compatible SGML
 Dédié au traitement des données
 Soutenant une grande variété d’applications
 Assurant un entretien aisé
 Intelligent
 Facilité de mise en œuvre de HTML
 Simple et lisible
 Portable et facilement utilisable sur Internet
 Assurant un développement aisé

7
DEFINITION 1/2
 eXtensible Markup Language
 Recommandation (norme) du W3C
 Spécifiant un langage
 Constitué d’un ensemble d’éléments appelés
balises
 Utilisable pour créer d’autres langages
 2 concepts fondamentaux
 Structure, contenu et présentation sont séparés
 Les balises ne sont pas figées

8
DEFINITION 2/2
 Conséquences :
 XML est un format de document
 XML est un format de données

 XML est un mode de structuration

de l’information
 XML est un méta-langage

9
APPLICATIONS DE XML 1/2

 GED et Gestion de Contenu :


 GED traditionnelle : statique, redondante, lourde
 Apports d’XML : dynamique, cohérence,
intelligence
 EDI :
 Exploitation des données : complexe, rigide
 Apports d’XML : simplicité, flexibilité, intelligence

10
APPLICATIONS DE XML 2/2
 Interopérabilité de SI hétérogènes :
 Architectures existantes : complexité,
dépendances
 Apports d’XML : simplicité, flexibilité,
indépendance
 Commerce électronique :
 Exploitation de l’information : complexe,
statique
 Apports d’XML : relation client personnalisée

11
Exemple (1)
<dd> Ma chanson (identification de la définition d'un terme)
<ul>
<li> par l'auteur</li>
<li> Producteur : Dupond</li>
<li> Editeur : Maison edition</li>
<li> Duree : 6:20</li>
<li> Date : 1978</li>
<li> Artiste : Toto</li>
</ul>

</body>
</html>
12
Exemple (2)
XML

<SONG>
<TITLE> Ma chanson </TITLE>
<COMPOSER> par l’auteur</COMPOSER>
<PRODUCER> Dupond</PRODUCER>
<EDITOR> Maison edition</EDITOR>
<DURATION> 6:20</DURATION>
<DATE> 1978</DATE>
<ARTIST> Toto</ARTIST>
</SONG>

 Balises “propriétaires” compréhensibles à la profession,


dérivation des langages proprétaires.
 XML sépare le contenu de son aspect ( à la différence de HTML
ou tout peut être mélangé)

13
STRUCTURE D’UN DOCUMENT XML

14
SPECIFICATIONS DU LANGAGE XML
 Résumé des spécifications :
 Un document doit commencer par une déclaration XML

 Toutes les balises avec un contenu doivent être fermées

 Toutes les balises sans contenu doivent se terminer par

les caractères />


 Le document doit contenir un et un seul élément racine

 Les balises ne doivent pas se chevaucher

 Les valeurs d’attributs doivent être entre guillemets

 La casse doit être respectée pour toutes les occurrences


de noms de balise (MAJUSCULES ou minuscules).

 Un document respectant ces critères est dit “bien


bien formé
formé”

15
DEFINITIONS DE TYPES DE DOCUMENT 1/5

 DTD = Document Type Definition

 La DTD fournit :
 la liste des éléments,
 la liste des attributs,
 des notations et
 des entités du document XML associé ainsi que
 les règles des relations qui les régissent.

16
DEFINITIONS DE TYPES DE DOCUMENT 2/5

 La DTD est déclarée dans le document XML


par la balise !DOCTYPE
 Elle peut être :
 incluse dans le code source du fichier XML, ou
DTD interne :
<!DOCTYPE élément-racine [déclaration des éléments]>
 décrite dans un fichier externe, ou DTD externe :
<!DOCTYPE élément-racine SYSTEM "nom_fichier.dtd">

17
DEFINITIONS DE TYPES DE DOCUMENT 3/5

 Exemple de DTD interne


<?xml
<? xml version="1.0" standalone
standalone="
="yes
yes"?>
"?> Comme vous définissez une DTD interne,
votre fichier est indépendant (standalone
(standalone).
).

<!DOCTYPE parent [ Début de la DTD interne avec parent comme


élément de racine.

<!ELEMENT parent (garcon,fille


(garcon,fille)>
)> L’élément racine parent contiendra
les sous-
sous-éléments garcon et fille.

<!ELEMENT garcon (#PCDATA)> #PCDATA indique au Parser XML que


l'élément garcon contient des données
exprimées en chiffres ou en lettres.
<!ELEMENT fille (#PCDATA)> Idem pour l'élément fille.

]> Fin de la DTD

<parent> Racine du document XML.


<garcon
garcon>François</
>François</garcon
garcon>
>
<fille>Elisabeth</fille>
</parent> Fin du document XML.
DEFINITIONS DE TYPES DE DOCUMENT 4/5
 Exemple de DTD externe : reprise de
l’exemple précédent, en version DTD externe
<?xml
<? xml version="1.0" standalone
standalone="no"?>
="no"?> Fichier XML. Comme vous définissez une
DTD externe, votre fichier n’est plus
indépendant (standalone).

<!DOCTYPE parent SYSTEM "parent.dtd"> Déclaration de la DTD externe dans le


Fichier parent.dtd.

<parent> Racine du document XML.


<garcon
garcon>François</
>François</garcon
garcon>
>
<fille>Elisabeth</fille>
</parent> Fin du document XML.
Fichier parent.dtd
<!ELEMENT parent (garcon,fille)> L’élément racine parent contiendra
les sous-
sous-éléments garcon et fille.
<!ELEMENT garcon (#PCDATA)> #PCDATA indique au Parser XML que
l'élément garcon contient des données
exprimées en chiffres ou en lettres.
<!ELEMENT fille (#PCDATA)> Idem pour l'élément fille.
DEFINITIONS DE TYPES DE DOCUMENT 5/5
 La DTD contient :
 Une ou plusieurs définitions d’éléments introduites
par la balise !ELEMENT :
<!ELEMENT nom-élément valeur>
 Une ou plusieurs listes d’attributs introduites par la
balise !ATTLIST :
<!ATTLIST nom-élément attribut type défaut>
 Une ou plusieurs définitions d’entité introduites par la

balise !ENTITY :
<!ENTITY nom-entité "valeur">
ou
<!ENTITY nom-entité SYSTEM "nom_fichier">

20
DTD : ELEMENTS 1/5
 Chaque balise d’un document XML valide doit être déclarée à l’aide
d’un élément dans la DTD associée.
 Un élément est défini par la balise !ELEMENT :
<!ELEMENT nom-élément valeur-élément>
 Où :
 nom-élément est une balise du document XML

 valeur-élément prend l’une des trois formes:

 (contenu)
Déclaration d’un élément à contenu explicite.
Exemple : <!ELEMENT sujet (#PCDATA)>
 EMPTY
Déclaration d’un élément vide. Utilisé en HTML pour les sauts
de ligne (BR), image, filet horizontal (HR) etc.
Exemple : <!ELEMENT br EMPTY>
 ANY
Déclaration d’un élément pouvant contenir tout type de donnée.
Exemple : <!ELEMENT note ANY>

21
DTD : ELEMENTS 2/5
Contenu explicite :

 Combinaison d’un ou plusieurs items :


 Mot-clé #PCDATA (Parsed Character Data) : le contenu est une
chaîne de caractères
 Nom d’un autre élément de la DTD

 Chaque item peut être suivi par un caractère facultatif d’occurrence :


 ? : l’item apparaît zéro ou au plus une fois

 + : l’item apparaît au moins 1 fois


 * : l’item apparaît zéro fois ou plus

 Les items sont séparés par :


 Le caractère virgule « , » si les 2 items sont tous deux inclus dans
le contenu
 Le caractère pipe « | » si le contenu est un choix entre les 2 items

 Les items peuvent être regroupés à l’aide de parenthèses pour définir


des ordres de priorité ou d’occurrence

22
DTD : ELEMENTS 3/5
 Exemples
<!ELEMENT agenda (contact*)> Définition d’un élément agenda
composé de zéro ou plus éléments
contact.

<!ELEMENT contact (nom, prenom


prenom?,
?, telephone
telephone+)>
+)> Définition d’un élément contact,
composé de trois éléments : nom,
prenom (facultatif), telephone (au
moins 1 fois)

<!ELEMENT nom (#PCDATA)> Définition d’un élément nom


contenant une chaîne de
caractères
<!ELEMENT prenom (#PCDATA)> Idem pour élément prenom
<!ELEMENT telephone (#PCDATA)> Idem pour élément telephone

<!ELEMENT image EMPTY> Définition d’un élément image de


contenu vide
DTD : ELEMENTS 4/5(Application)

24
DTD : ELEMENTS 5/5(Application)
 Exemples

25
DTD : ATTRIBUTS 1/3
 Les balises ouvrantes et les balises vides
peuvent contenir des couples nom-valeur des
attributs
 XML :

<GREETING LANGUAGE = “English”>


Hello everybody
</GREETING> nom
valeur
 Les attributs possibles d’un élément du
document XML sont déclarés dans la DTD
associée.
26
DTD : ATTRIBUTS 2/3
 Déclaration dans la DTD par la balise !ATTLIST :
<!ATTLIST nom-élément nom-attribut type valeur-défaut>
 Où :
 nom-élément est le nom d’un élément défini dans la DTD par la
balise !ELEMENT
 attribut est le nom de l’attribut présentement défini pour l’élément
nom-élément
 type peut prendre l’une des valeurs:

 CDATA : la valeur correspond au contenu de l’élément


 (choix1|choix2|…) : la valeur doit être l’une des choix énumérés
 ID : la valeur est un identifiant unique
 ENTITY : la valeur est une entité
 valeur-défaut prend l’une des valeurs :

 valeur : valeur par défaut donnée à l’attribut


 #REQUIRED : attribut obligatoire, sans valeur par défaut
 #IMPLIED : attribut optionnel, sans valeur par défaut
 #FIXED valeur : valeur fixe

27
DTD : ATTRIBUTS 3/3
 Exemples :
<!ELEMENT GREETING (#PCDATA)>
<!ATTLIST GREETING LANGUAGE CDATA “English”>
 Définition d’un carré et de son attribut largeur :
 DTD :
<!ELEMENT carre EMPTY>
<!ATTLIST carre largeur CDATA “0”>
 XML :
<carre largeur=“100”>
 Liste de moyens de paiement:
 DTD
<!ATTLIST paiement moyen (especes|cheque|CB) “CB”>
 XML
<paiement moyen=“cheque”>
<!-- ... -->
<paiement moyen=“CB”>

28
DTD : ENTITES 1/3
 Définition et rappel d’une entité XML
 Une entité est une variable utilisée pour définir du texte.

 L'intérêt d'une entité consiste à pouvoir remplacer


autant de fois que nécessaire dans le document XML
l'entité par le texte qui lui est associé.
 Dans le document XML, la référence à une entité est
introduite par le caractère "&" suivi du nom de l’entité, et
terminée par le caractère ";". Il existe 5 entités
prédéfinies en XML : lt, gt, amp, apos et
quot (caractères < > & ' ")
 Une entité est définie avec la balise !ENTITY, et dite:
 Interne si sa valeur est donnée dans la DTD
<!ENTITY nom-entité "valeur">
 Externe si sa valeur est fournie dans un fichier externe à
la DTD
<!ENTITY nom-entité SYSTEM "nom_fichier">
29
DTD : ENTITES 2/3
 Exemple de document XML avec DTD interne et entité
interne "titre" :

<?xml version="1.0"?>

<!DOCTYPE introduction [
<!ENTITY titre "Introduction au language XML" >
<!-- . . . -->
]>

<introduction >
&titre;
<!-- . . . -->
</introduction >
30
DTD : ENTITES 3/3
 Exemple de document XML avec DTD interne et entité externe "chapitre1" :
<?xml version="1.0" ?>

<!DOCTYPE livre [
<!ENTITY chapitre1 SYSTEM "chapitre1.xml">
]>

<livre>
<titre>Titre du livre</titre>
&chapitre1;
</livre>

 Contenu du fichier "chapitre1.xml" :


<?xml version="1.0" ?>
<chapitre>
<titre>titre du chapitre 1</titre>
<section>1ère section</section>
<section>2ème section</section>
</chapitre>

31
DEFINITIONS DE TYPES DE DOCUMENT 1/2

 Résumé des spécifications :


 Une DTD (grammaire) permet de déclarer :
 un type d’élément,
 une liste d’attribut d’un élément,
 une entité
 Chaque balise du langage doit faire l’objet
d’une et d’une seule déclaration
 Un document XML est dit “valide” s’il possède une DTD
et si sa syntaxe est conforme aux règles de la DTD
 Un document “valide” est obligatoirement “bien formé”

32
DEFINITIONS DE TYPES DE DOCUMENT 2/2
 Espaces de nom
 XML Namespaces est une recommandation
permettant d’utiliser le vocabulaire (les balises) de
2 DTD distinctes sans risque d’ambigüité.
 Inconvénients des DTD :
 Une DTD est difficile à lire
 Une DTD est non extensible (ce n’est pas un
document XML).
 Une DTD ne permet pas de typer les données
 Une DTD ne peut prendre en compte qu’un seul
espace de nom (Namespace).

33
XML-SCHEMA 1/4
 En réponse aux lacunes des DTD, une
alternative a été proposée comme
recommandation : il s’agit de XML-Data dont
XML-Schema est un sous-ensemble.
 Cette nouvelle norme achève de faire d’XML
un format pivot…
 La version 1.1 de XML Schema (datée de
mai 2001) se compose de 3 normes :
 XML Schema tome 0 : Introduction
 XML Schema tome 1 : Structures
 XML Schema tome 2 : Types de données

34
XML-SCHEMA 2/4
 Les documents XML-Schema sont des documents :
 respectant la syntaxe XML,

 permettant de décrire la structure d’un document XML


d’une façon beaucoup plus complète que les DTD.
 XML-Schema permet en effet de :
 spécifier la typologie des données que va contenir le
document XML décrit par le XML-Schema,
 gérer une quarantaine de types de données simples,

 gérer des types complexes,

 gérer les occurrences des données.

35
XML-SCHEMA 3/4
 Exemple de document XML-Schema :

36
XML-SCHEMA 4/4
 Référence à un XML-Shema dans un document XML :

L’espace de nommage xsi correspond aux instances de


documents XML respectant les contraintes définies dans un
document XML-Schema. Le W3C a défini une librairie de balises
et attributs pouvant être utilisés par ces documents.

37
Constituants d’un XML-SCHEMA 1/8
 Déclaration de l’entête :
 L’élément <xsd:schema> permet de déclarer un document XML-
Xchema.

<?xml version="1.0" encoding="ISO-8859-1" ?>


<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!--balise schema obligatoire -->

L’attribut targetNamespace permet de préciser l’espace de nommage de


ce type de documents.
L’attribut elementFormDefault précise si les documents XML respectant
cette grammaire doivent référer à cet espace de nommage.

38
Constituants d’un XML-SCHEMA 2/8

 Déclaration des types de données :


 Il est possible de déclarer un type de données
 soit dans la déclaration d’un élément (local)
 soit hors de la déclaration de l’élément (global)
 XML-Schema permet d’utiliser des données :
 de type prédéfini (string, int…)
 de type complexe
 dont le type est une restriction de type
 dont le type est une extension de type

39
Constituants d’un XML-SCHEMA 3/8

 Déclaration des types de données :


 Types prédéfinis :
 byte, unsignedByte, hexBinary, integer, positiveInteger,
negativeInteger, int, unsignedInt, long, unsignedLong, short,
unsignedShort, decimal, float, double…
 string, NormalizedString, token
 boolean, anyURI, language
 time, dateTime, duration, date, gMonth, gYear,
gYearMonth, gDay, gMonthDay
 ID, IDREF, IDREFS, ENTITY, ENTITIES, NOTATIN,
NMTOKEN, NMTOKENS
Exemple : <xsd:element name="comment" type="xsd:string"/>

40
Constituants d’un XML-SCHEMA 4/8

 Déclaration des types de données :


 Types complexes :
Exemple : le type de données TypeAdresse se compose de
6 éléments Numero, Rue1, Rue2, Ville, CP et Pays :

41
Constituants d’un XML-SCHEMA 5/8

 Déclaration des types de données :


 Restriction de type existant :
Exemple : le type de données string comprend 6 attributs
optionnels : pattern, enumeration, length, minlength,
maxlength, whitespace. Si on désire représenter un choix
Oui/Non (restriction sur l’attribut enumeration) :

42
Constituants d’un XML-SCHEMA 6/8

 Déclaration des types de données :


 Extension / dérivation de type existant :
Exemple : si l’on souhaite créer un type Personne contenant
en plus du nom et du prénom, un élément de type Adresse
(extension du type Adresse vu précédemment) :

43
Constituants d’un XML-SCHEMA 7/8

 Déclaration des éléments :

44
Constituants d’un XML-SCHEMA 8/8

 Déclaration des attributs :

45
Conclusion :DTD versus XML-SCHEMA
 La DTD permet de définir facilement et
rapidement des grammaires simples.
 XML-Schema permet de définir de manière
plus formelle et complète une grammaire mais
c’est au prix d’une complexité accrue.
 Un document XML-Schema respecte la
syntaxe XML.
 Un document XML-Schema est généralement
plus volumineux et plus difficile à lire qu’une
DTD (pour un opérateur humain).

46
Exemple de XML-XSD
<?xml version="1.0" encoding="ISO-8859-1" standalone="no" ?>
<cave xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation='td2.xsd'>
<appellation id="01" nom="Saint Estèphe">
<chateau id="0101">
<nom> Chateau Bellevue</nom>
<adresse> 12 Rue du Pont</adresse>
<téléphone> 0556124321</téléphone>
</chateau>
<chateau id="0102">
<nom> Chateau Le Bernadot</nom>
<adresse> 21 Avenue du Cygne</adresse>
<téléphone> 0556324231</téléphone>
</chateau>
</appellation>
</cave>

47
XSD
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
<xsd:element name="cave">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="appellation" minOccurs='1' maxOccurs='unbounded'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

<xsd:element name="appellation">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="chateau" minOccurs='0' maxOccurs='unbounded'/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:integer" use='required'/>
<xsd:attribute name="nom" type="xsd:string"/>
</xsd:complexType>
</xsd:element>

48
XSD
<xsd:element name="chateau">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="nom" minOccurs='1' maxOccurs='1'/>
<xsd:element ref="adresse"/>
<xsd:element ref="téléphone"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:integer" use='required'/>
</xsd:complexType>
</xsd:element>
<xsd:element name="nom" type="xsd:string"/>
<xsd:element name="adresse" type="xsd:string"/>
<xsd:element name="téléphone" type="xsd:decimal"/>
</xsd:schema>
49

Au revoir
et au prochain
cours
50