Sana FAKHFAKH KESSENTINI
2023-2024 [email protected]
Code du cours: yfunjpa
Technologie XML
Introduction
Besoin :Utilisation d’une structure de données 2
2023-2024 Sana Fakhfakh Kessentini
Technologie XML
Introduction
Structure:
Efficace,
Pertinente.
Structure
Application Application
Permet:
Traitement automatique rapide et simple,
Diminuer la complexité,
Diminuer le taux d'erreurs. 3
2023-2024 Sana Fakhfakh Kessentini
Technologie XML
Introduction
Le Langage XML: eXtensible Markup Language:
Une spécification du W3C, Février 1998.
Une succession d'un ensemble de technologies: SGML,
HTML.
1 SGML:Standard Generalized Markup Language:1986
•Diffusion électronique de documents
Syntaxe complexe
2 HTML:HyperText Markup Language:1991
•Présentation des documents sur le web
Non flexible, figé
XML:eXtensible Markup Language: 1996
3
•Structuration, échange des documents
Plus simple que SGML
Plus souple que HTML
Document XML: description, organisation, archivage et échange des données.
2023-2024 Sana Fakhfakh Kessentini
Technologie XML
Introduction
XML
eXtensible Markup Language
.XML
5
2023-2024 Sana Fakhfakh Kessentini
XML Pourquoi XML?
Séparation entre le contenu et la forme
Structure hiérarchique: l’arborescence,
Un méta langage: la définition de langages adaptés à des besoins
spécifiques.
Lisible : texte balisé avec marquage.
Extensible : supporte les évolutions applicatives.
2023-2024 Sana Fakhfakh Kessentini
XML Pourquoi XML?
Pour structurer l'information dans des fichiers textes.
Pour enregistrer des résultats
XML peut être un fichier de configuration
Pour garantir l’interopérabilité, l’échange et réutilisation.
7
2023-2024 Sana Fakhfakh Kessentini
XML Arborescence XML
CV
CV
Informations Expériences
Compétences
Résumé
coordonnées Loisir
stages
Etudes
2023-2024 Sana Fakhfakh Kessentini
XML Arborescence XML
Nœud
racine
Nœud 1
Nœud
Nœud n
2
Nœud
1.1
Nœud Nœud
1.2 1;n
Document XML: composé de plusieurs nœuds
9
2023-2024 Sana Fakhfakh Kessentini
XML Structure d’un document XML
Un prologue
Le corps: l'arbre des éléments
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Catalog>
<Book id="bk101">
<Author>Garghentini, Davide</Author>
<Title>XML Developer's Guide</Title>
<Genre>Computer</Genre>
<Price>44.95</Price>
</Book>
</Catalog>
XML
2023-2024 Sana Fakhfakh Kessentini
Structure
XML d'un document
Structure XML
d’un document XML
•Le prologue
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
La dépendance
le codage
la version à des documents
du langage XML des caractères
extérieurs
11
2023-2024 Sana Fakhfakh Kessentini
Structure
XML d'un document
Structure XML
d’un document XML
• Le corps d’un document XML
Il existe 4 éléments syntaxiques XML:
1 Les éléments
2 Les attributs
3 Les commentaires
4 Les entités
12
2023-2024 Sana Fakhfakh Kessentini
Structure
XML d'un document
Structure XML
d’un document XML
1 Les éléments
Un élément s’ouvre et se ferme par une balise
Le nom de l’élément est repris dans la balise ouvrante et dans la
balise fermante.
<Author>Garghentini, Davide</Author>
Balise ouvrante Balise fermante
13
2023-2024 Sana Fakhfakh Kessentini
Structure
XML d'un document
Structure XML
d’un document XML
1 Les éléments
Un élément peut être :
Vide:
<vide><\vide> ou <vide/>
Contenir une chaîne de caractères
<Author>Garghentini, Davide</Author>
Contenir des éléments fils
• <Book id="bk101">
• <Author>Garghentini, Davide</Author>
•<Title>XML Developer's Guide</Title>
• <Genre>Computer</Genre>
•<Price>44.95</Price>
•</Book>
2023-2024 Sana Fakhfakh Kessentini
Structure
XML d'un document
Structure XML
d’un document XML
2 Les attributs
L’attribut se trouve dans la balise ouvrante d’un élément
L’attribut n’est pas repris dans la balise fermante
Un élément peut contenir plusieurs attributs
Un même attribut ne peut être présent qu’une seule fois dans un
élément
L’ordre des attributs n’a pas d’importance au sein d’un élément
La valeur de l’attribut est indiquée entre guillemets
<Book id="bk101">
15
2023-2024 Sana Fakhfakh Kessentini
Structure
XML d'un document
Structure XML
d’un document XML
3 Les commentaires
<!-- rédiger un commentaire -->
Le commentaire:
Non analysé
Ignoré lors de l’interprétation du document XML.
16
2023-2024 Sana Fakhfakh Kessentini
XML Règles syntaxiques
Chaque document XML a un seul élément racine
Le nom d’élément contient:
• des lettres
• des chiffres
• des soulignés
• des tirets
• des points
Le nom d’élément commence par une lettre ou un – ,
Le séparateur d’éléments possible sont: retour à la ligne,
espace, tabulation, =, ", ’
Document XML bien formé.
17
2023-2024 Sana Fakhfakh Kessentini
XML Exemple d’un document XML
Prologue <?xml version="1.0" encoding=" UTF-8 " standalone="yes"?>
id ="bk101"
<Catalog> Catalog
<!-- Votre premier document XML-->
<Book id="bk101">
<Author>Garghentini, Davide</Author> Book
<Title>XML Developer's Guide</Title>
<Price>44.95</Price>
<PublishDate>2000-10-01</PublishDate>
Corps <Description>Applications with XML. Author Price Title
</Description>
</Book>
PublishDate Description
</Catalog>
Catalog.xml
2023-2024 Sana Fakhfakh Kessentini
XML Editeurs XML
Jaxe: éditeur XML
XML SPY
XML Editor
Free Online XML Validator:
https://www.liquid-technologies.com/online-xml-validator
19
2023-2024 Sana Fakhfakh Kessentini
XML Atelier n°1
Exercice1:
Soit le document ci-dessous.
Il présente des erreurs de syntaxe .
Pour chaque erreur indiquer la ligne où elle se trouve, sa nature et la
correction à apporter pour que le document soit bien formé.
20
2023-2024 Sana Fakhfakh Kessentini
XML xml en minuscules
"encodage" "encoding"
perso-1
travail-2
téléphone="0245664442"
</contact>
21
2023-2024 Sana Fakhfakh Kessentini
Technologie XML
Introduction
DTD
Document Type Definition
.DTD
22
2023-2024 Sana Fakhfakh Kessentini
DTD Qu’est-ce qu’une DTD?
Une DTD :Document Type Definition
Définir une structure type de document XML.
Une grammaire qui décrit la façon de construire les documents XML
valide.
RéUtilisable
2023-2024 Sana Fakhfakh Kessentini
DTD Contenu d’une DTD
Une DTD peut contenir des déclarations:
Des éléments
De listes d'attributs
Des des entités
Des commentaires
2023-2024 Sana Fakhfakh Kessentini
DTD Déclaration d’une DTD
Syntaxe
<!DOCTYPE nom_element racine ……..
.
.
.
.
>
DTD
2023-2024 Sana Fakhfakh Kessentini
DTD Déclaration d’une DTD
DTD interne: dans le fichier xml
<!DOCTYPE nom_element racine [………………….]>
<?xml version="1.0" encoding=« UTF-8 "standalone="yes" ?>
<!DOCTYPE Catalog [………………….]>
<Catalog>
.
.
.
</Catalog>
Catalog.xml
2023-2024 Sana Fakhfakh Kessentini
Déclaration
DTD Déclaration d’une
d'une DTD DTD
DTD externe: DTD dans un fichier séparé
<!DOCTYPE nom_element racine SYSTEM " URI " >
URI : identifie l'emplacement de la DTD.
<?xml version="1.0" encoding= " UTF-8 " "standalone="no"?>
<!DOCTYPE Catalog SYSTEM " cat.dtd " >
<Catalog>
.
.
Cat.dtd
.
</Catalog>
Catalog.xml
27
2023-2024 Sana Fakhfakh Kessentini
Déclaration
DTD Déclaration d’une
d'une DTD DTD
DTD mixte
<?xml version="1.0" encoding= " UTF-8 " "standalone="no" ?>
<!DOCTYPE Catalog SYSTEM " cat.dtd " [
.
.
. > ]
Cat.dtd
<Catalog>
.
.
.
Catalog.xml
</Catalog>
2023-2024 Sana Fakhfakh Kessentini
DTD Déclaration d’une DTD
Les éléments
<!ELEMENT nom modèle>
Nom Le contenu que doit avoir la balise soit:
de la balise * Avec sous éléments
* Sans élément enfant
2023-2024 Sana Fakhfakh Kessentini
DTD Déclaration d’une DTD
Modèle d'un élément
Sans élément enfant
• L’ élément doit contenir un flot de caractère
<!ELEMENT nom (#PCDATA)>
NB: <!ELEMENT article (#PCDATA, titre, corps)>
• Obligatoirement être vide
<!ELEMENT nom EMPTY>
• Peut contenir n'importe quel type d'arbre
<!ELEMENT nom ANY>
2023-2024 Sana Fakhfakh Kessentini
DTD Déclaration d’une DTD
Modèle d'un élément
Avec sous éléments
• Une séquence de fils ordonnés :
<!ELEMENT nom-element(fils_1, fils_2, ..., fils_n) >
<?xml version="1.0" encoding= " UTF-8 " "standalone="no" ?>
<!DOCTYPE chapitre SYSTEM " chap.dtd " >
<chapitre>
<titre>...</titre>
<intro>...</intro> <!ELEMENT chapitre (titre, intro, section)>
<section>...</section>
chap.dtd
</chapitre>
chap.xml
2023-2024 Sana Fakhfakh Kessentini
DTD Déclaration d’une DTD
Modèle d'un élément
Avec sous éléments
• Choix d'éléments:
<!ELEMENT nom-element(fils_1| fils_2| ...| fils_n) >
<?xml version="1.0" encoding= " UTF-8 " "standalone="no" ?>
<!DOCTYPE date SYSTEM " d.dtd " >
<date> <date>
<mois>...</mois> <annee>...</annee>
<!ELEMENT date (annee | mois)>
</date> </date> d.dtd
d.xml
2023-2024 Sana Fakhfakh Kessentini
DTD Déclaration d’une DTD
Modèle d'un élément
Quantificateur: autoriseation des répétitions :
? : zéro ou un élément.
* : zéro ou plusieurs éléments.
+ : un ou plusieurs éléments.
<?xml version="1.0" encoding= " UTF-8 " "standalone="no" ?>
<!DOCTYPE chap SYSTEM " chap.dtd " >
<chap>
<titre>...</titre> <chap>
<intro>...</intro> <titre>...</titre>
<!ELEMENT chap (titre,
</chap> <intro>...</intro>
intro+)>
<intro>...</intro>
chap.dtd
</chap>
chap.xml
2023-2024 Sana Fakhfakh Kessentini
DTD Déclaration d’une DTD
Modèle d'un élément
Imbriquer les déclarations :
<?xml version="1.0" encoding= " UTF-8 " "standalone="no" ?>
<!DOCTYPE chap SYSTEM " chap.dtd " >
<chap> <chap>
<titre>...</titre> <titre>...</titre>
<intro>...</intro> <intro>...</intro>
<section>...</section> <section>...</section>
<devel>….<\devel> <devel>….<\devel>
<section>...</section> </chap>
chap.dtd
<devel>….<\devel>
<!ELEMENT chap (titre,
</chap> intro, (section, devel)+)>
chap.xml
2023-2024 Sana Fakhfakh Kessentini
DTD Déclaration d’une DTD
Les attributs
<!ATTLIST nom-élément
nom-attribut_1 type-attribut_1 valeur-par-défaut_1
.
nom-attribut_n type-attribut_n valeur-par-défaut_n >
2023-2024 Sana Fakhfakh Kessentini
DTD Déclaration d’une DTD
Les types des attributs
CDATA : Une chaîne quelconque de caractères sans contraintes
ID :unique pour cette instance de l'élément.
IDREF référence à l'élément avec un attribut ID ayant même valeur que
IDREF
IDREFS Liste de plusieurs IDREF séparés par des espaces.
NMTOKEN ou NMTOKENS permettra à l'attribut de prendre comme
valeur le nom d'un token, ou de plusieurs, c'est-à-dire un ou des noms.
ENTITY nom d'une entité prédéfinie
ENTITIES listes d'entités prédéfinies séparées par des espaces
2023-2024 Sana Fakhfakh Kessentini
DTD Déclaration d’une DTD
Les valeurs par défaut
• “value” ou ‘value’
Valeur
<tag meta="Hello World!"> Hello World!
<tag> Valeur par défaut default
<tag meta=""> Chaîne vide
.dtd
<!ATTLIST tag meta CDATA "default">
.xml type-attribut_tag
2023-2024 Sana Fakhfakh Kessentini
DTD Déclaration d’une DTD
Les valeurs par défaut
• #REQUIRED: L'attribut est obligatoire et il n'a pas de valeur par
défaut.
Valeur
<person number="5677" />
Valide
<person />
Invalide
Chaîne vide .dtd
<!ATTLIST person number CDATA #REQUIRED>
.xml
2023-2024 Sana Fakhfakh Kessentini
DTD Déclaration d’une DTD
Les valeurs par défaut
• #IMPLIED: L'attribut est optionnel et il n'a pas de valeur par
défaut. Si l'attribut est absent, il n'a pas de valeur
Valeur
<person number="5677" />
Valide
<person />
valide
Chaîne vide .dtd
<!ATTLIST person number CDATA # IMPLIED >
.xml
2023-2024 Sana Fakhfakh Kessentini
DTD Déclaration d’une DTD
Les valeurs par défaut
• #FIXED: La valeur de l'attribut est fixe et non modifiable
Valeur
<person number="5677" />
Valide
<person number="5679" /> Invalide
.dtd
<!ATTLIST person number CDATA # FIXED
“5677 " >
.xml
<book lang="fr">
book.dtd
<!ELEMENT book (#PCDATA)>
<book lang="en">
<!ATTLIST book lang CDATA #FIXED “fr">
book.xml
2023-2024 Sana Fakhfakh Kessentini
DTD
DTD Déclaration
Déclarationd’une
d’uneDTD?
DTD
Exemple:
<?xml version="1.0" encoding= " UTF-8 " "standalone="no" ?>
<!DOCTYPE address SYSTEM " adr.dtd " >
< address Ville=“sfax” CP=“3002”</ address >
<!ELEMENT address ( #PCDATA )>
<!ATTLIST address adr.dtd
CP CDATA #IMPLIED
adr.xml
Ville CDATA #REQUIRED>
41
2023-2024 Sana Fakhfakh Kessentini
DTD Déclaration d’une DTD
Exemple:
<?xml version="1.0" encoding=" UTF-8 " ?>
<!DOCTYPE book [
<!ELEMENT book (section)*>
<!ELEMENT section (#PCDATA | ref | refs)*>
<!ATTLIST section id ID #IMPLIED>
<!ELEMENT ref EMPTY>
<!ATTLIST ref idref IDREF #REQUIRED>
<!ELEMENT refs EMPTY>
<!ATTLIST refs idrefs IDREFS #REQUIRED> ] >
<book>
<section id="sec0">Une référence <ref idref="sec1"/> </section>
<section id="sec1">Des références <refs idrefs="sec0 sec2"/></section>
<section id="sec2">Section sans référence</section>
<section id="sec3">Une auto-référence <refs idrefs="sec3"/></section>
</book>
book.xml
42
2023-2024 Sana Fakhfakh Kessentini
DTD Déclaration d’une DTD
Les types des attributs
Enumérations: Liste de valeurs
<!ATTLIST nom-élément
nom-attribut_1 (valeur_1 | valeur_2 | ... | valeur_n) valeur-par-défaut_1 >
<book lang="fr">
bib.dtd
<!ELEMENT bib (book)*
<book lang="en"> <!ELEMENT book (#PCDATA)>
<!ATTLIST book lang (fr|ar|en) #REQUIRED>
bib.xml
2023-2024 Sana Fakhfakh Kessentini
XML-DTD Atelier n°2 n°2
Atelier
Atelier n°2
Exercie1:
Solution 1: DTD interne Solution 2: DTD externe
note.xml note.xml
<?xml version="1.0"?> <?xml version="1.0"?>
<!DOCTYPE note [ <!DOCTYPE note SYSTEM "note.dtd">
<!ELEMENT note (to,from,heading,body)> <note>
<!ELEMENT to (#PCDATA)> <to>Tove</to>
<!ELEMENT from (#PCDATA)> <from>Jani</from>
<!ELEMENT heading (#PCDATA)> <heading>Reminder</heading>
<!ELEMENT body (#PCDATA)> <body>Don't forget me this
]> weekend!</body>
</note>
<note>
<to>Tove</to> note.dtd
<from>Jani</from> <!ELEMENT note (to,from,heading,body)>
<heading>Reminder</heading> <!ELEMENT to (#PCDATA)>
<body>Don't forget me this <!ELEMENT from (#PCDATA)>
weekend</body> <!ELEMENT heading (#PCDATA)>
</note> <!ELEMENT body (#PCDATA)>
44
2023-2024 Sana Fakhfakh Kessentini
XML-DTD Atelier n°2 n°2
Atelier
Atelier n°2
Exercie3:
Adr.XML
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
Solution 1: Elément Solution 2:Attribut
<!DOCTYPE address [ <!DOCTYPE address [
<!ELEMENT address(Ville,CP)> <!ELEMENT address ( #PCDATA )>
<!ELEMENT Ville (#PCDATA > <!ATTLIST address
<!ELEMENT CP (#PCDATA > Ville CDATA #IMPLIED
]> CP CDATA #REQUIRED>
<address> ]>
<Ville>sfax</Ville>
<CP>3002</CP> <address Ville=“sfax”
</address> CP=“3002”</address>
45
2023-2024 Sana Fakhfakh Kessentini
XML-DTD Atelier n°2 n°2
Atelier
Atelier n°2
Exercice 4
Soit la DTD suivante
Écrire un document XML valide (conforme à la DTD ci-dessus)
2023-2024 Sana Fakhfakh Kessentini
47
XML-DTD Atelier n°2 n°2
Atelier
Exercice 5:
Ecrire une DTD biblio.dtd pour une bibliographie d'articles. Les
informations associées à un article sont :
son titre;
les noms des auteurs ;
ses références de publication: nom du journal, numéro des pages, année
de publication et numéro du journal
On réserve aussi un champ optionnel pour un avis personnel.
biblio.dtd
48
2023-2024 Sana Fakhfakh Kessentini
XML-DTD Atelier n°2 n°2
Atelier
biblio.xml
49
2023-2024 Sana Fakhfakh Kessentini
XML-DTD Atelier n°2 n°2
Atelier
Exercice 6:
Modifier la DTD biblio.dtd précédente:
en faisant de l'élément nom_journal un attribut de l'élément journal et
en lui donnant comme valeur par défaut ACM ;
en faisant de l'élément annee un attribut de type énuméré, prenant
comme valeurs possibles 2012, 2013, 2014, "avant_2012" et
proposant comme valeur par défaut "avant_2012".
Utiliser cette DTD pour créer un fichier XML valide
50
2023-2024 Sana Fakhfakh Kessentini
XML-DTD Atelier n°2 n°2
Atelier
biblio.dtd
51
2023-2024 Sana Fakhfakh Kessentini
XML-DTD Atelier n°2 n°2
Atelier
Exercice 7:
•Un carnet d’adresses:
• la personne possède un identifiant unique (obligatoire), un nom, un
prénom
• on veut connaître le sexe de la personne (attribut optionnel) • on veut
connaître son email (optionnel)
52
2023-2024 Sana Fakhfakh Kessentini