Vous êtes sur la page 1sur 13

Université Tunis El Manar-Institut Supérieur d’Informatique

Module SOA-Web Services - A.U 2017/2018

TP2 : Introduction à XML


Un document XML peut être découpé en 2 parties : le prologue et le corps.

Le prologue correspond à la première ligne de votre document XML. Il donne des


informations de traitement.

<?xml version="1.0" encoding="UTF-8"?>

Règles de nommage des balises:

Les noms des balises sont libres avec certaines règles :

- Pas d’espaces, pas d’apostrophe, pas de /

- Premier caractère alphabétique ou _

- Noms sensibles aux majuscules-minuscules

- Noms composés avec le caractère - autorisés: exemple: ordre-achat

Exercice N°1 :

1- Vrai

2- Faux (‘)

3- Vrai

4- Faux (espace)

5- Vrai

6- Faux (sensible à
la case)

7- Faux (/)

8- Vrai

9- Faux (noms de
balises non
identiques)

10- Faux (commence


par un chiffre)

3 ème SIL p. 1
Exercice N°2 :

Le but de cet exercice est de vous initier à la création d’un document XML. Pour arriver à
cette fin, vous allez procéder en étapes.

1. Créer un document XML.


2. Représenter le document selon une structure en arbre illustrée par la figure ci-dessous.

Les données du document sont :

a. 3 Livres : (auteur1 ; titre1 ; 56), (auteur2 ; titre2 ; 100), (auteur3 ; titre3 ; 300).

b. 3 étudiants : (bensassi ; tasnim ; 1234567) ; (mhafdhi ; neila ; 1478523) ; (bensassi


; ayoub ; 1258963).

c. 1 emprunt : (1258963 ; titre3).

3. Vérifiez que le document est bien formé.

Remarque : Un document XML bien formé (well formed) est un document XML
syntaxiquement correct, c'est-à-dire :

 S'il s'agit d'un document utilisant la version 1.1 du XML, le prologue est bien
renseigné.
 Le document XML ne possède qu'une seule balise racine.
 Le nom des balises et des attributs est conforme aux règles de nommage.
 Toutes les balises en paires sont correctement fermées.
 Toutes les valeurs des attributs sont entre guillemets simples ou doubles.
 Les balises de votre document XML ne se chevauchent pas, il existe une arborescence
dans votre document.

3 ème SIL p. 2
Correction
<?xml version="1.1" encoding="UTF-8" standalone="yes"?>
<bib>
<livres>
<livre>
<auteur>auteur1</auteur>
<titre>titre1</titre>
<nbr_page>56</nbr_page>
</livre>
<livre>
<auteur>auteur2</auteur>
<titre>titre2</titre>
<nbr_page>100</nbr_page>
</livre>
<livre>
<auteur>auteur3</auteur>
<titre>titre3</titre>
<nbr_page>300</nbr_page>
</livre>
</livres>
<etudiants>
<etudiant>
<nom>bensassi</nom>
<prenom>tasnim</prenom>
<ncin>1234567</ncin>
</etudiant>
<etudiant>
<nom>mhafdhi</nom>
<prenom>neila</prenom>

3 ème SIL p. 3
<ncin>1478523</ncin>
</etudiant>
<etudiant>
<nom>bensassi</nom>
<prenom>ayoub</prenom>
<ncin>1258963</ncin>
</etudiant>
</etudiants>
<emprunts>
<emprunt>
<ncin_etud>1258963</ncin_etud>
<titre_livre>titre3</titre_livre>
</emprunt>
</emprunts>
</bib>
Exercice N°3 :

Soit le carnet d’adresses suivant :

1- Représenter sous forme d’un texte balisé le carnet d’adresse ci-dessus.

2- Vérifier que le document est bien formé en utilisant le logiciel EditiX.

3 ème SIL p. 4
Correction

<?xml version="1.0" encoding="UTF-8"?>


<!-- New XML document created with EditiX XML Editor (http://www.editix.com) at Fri Oct
20 11:35:01 GMT+01:00 2017 -->
<carnet-adresse>
<entree>
<nom>DUPONT Michelle</nom>
<adresse>
<rue>55, rue de l’église</rue>
<code-postal>31000</code-postal>
<localite>Toulouse</localite>
</adresse>
<tel>0450505050</tel>
<tel>0451515151</tel>
<email>dupmich@yahoo.fr</email>
</entree>
<entree>
<nom>ERNEST François</nom>
<adresse>
<rue>12, Avenue Jean Jaurès</rue>
<code-postal>31000</code-postal>
<localite>Toulouse</localite>
</adresse>
<tel>0199999999</tel>
</entree>
<entree>
<nom>GILBERT Jean</nom>
<adresse>
<rue>1, rue du château d'eau</rue>

3 ème SIL p. 5
<code-postal>31000</code-postal>
<localite>Toulouse</localite>
</adresse>
<tel>0567345693</tel>
<email>gibjeab@wanadoo.fr</email>
</entree>
</carnet-adresse>

Exercice N°4 :

Une entreprise de vente de matériel informatique désire garder les informations de son
stock dans un document XML. Vous disposez des informations suivantes :

- Le stock contient plusieurs produits.

- Chaque produit identifié par un identifiant unique (idprod) est reconnu par sa marque,
son modèle et son fournisseur.

- Chaque produit appartient à une catégorie donnée.

- Chaque catégorie identifiée par « idcat » est reconnue par son libellé. Le idcat doit
nécessairement commencer par la lettre C suivie de 5 chiffres.

- Chaque fournisseur identifié par « idfour » est reconnu par sa raison sociale, son
adresse et son téléphone fixe. L’adresse du fournisseur ne doit pas dépasser les 40
caractères.

1- Ecrire un exemple de document XML répondant aux besoins de cette agence.

Correction

<?xml version="1.0" encoding="UTF-8"?>


<stock>
<categorie idcat="C00001">
<libelle/>
<produits>
<produit idprod="1">

3 ème SIL p. 6
<marque>Peugeot</marque>
<modele>206</modele>
<fournisseur_id>1</fournisseur_id>
</produit>
</produits>
</categorie>
<fournisseur idfour="1">
<raison_sociale>raison sociale</raison_sociale>
<adresse>France</adresse>
<tel>12345678</tel>
</fournisseur>
</stock>
Exercice N°5 :

Rédiger une DTD pour une bibliographie.

Cette bibliographie :

• contient des livres et des articles ;


• les informations nécessaires pour un livre sont :
- son titre général ;
- les noms des auteurs ;
- ses tomes et pour chaque tome, leur nombre de pages ;
- des informations générales sur son édition comme par exemple le nom de l'éditeur, le
lieu d'édition, le lieu d'impression, son numéro ISBN ;
• les informations nécessaires pour 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éservera aussi un champ optionnel pour un avis personnel.

3 ème SIL p. 7
Correction
<!ELEMENT biblio (livre | article)*>
<!ELEMENT livre (titre, auteur+, tome*, edition, avis?)>
<!ELEMENT titre (#PCDATA)>
<!ELEMENT auteur (#PCDATA)>
<!ELEMENT tome (nb_pages)>
<!ELEMENT nb_pages (#PCDATA)>
<!ELEMENT edition (editeur, lieu_edition, lieu_impression, isbn)>
<!ELEMENT editeur (#PCDATA)>
<!ELEMENT lieu_edition (#PCDATA)>
<!ELEMENT lieu_impression (#PCDATA)>
<!ELEMENT isbn (#PCDATA)>
<!ELEMENT avis (#PCDATA)>
<!ELEMENT article (titre, auteur+, journal)>
<!ELEMENT journal (nom_journal, page, num_journal, annee)>
<!ELEMENT nom_journal (#PCDATA)>
<!ELEMENT page (#PCDATA)>
<!ELEMENT num_journal (#PCDATA)>
<!ELEMENT annee (#PCDATA)>

Exercice N°6 :

Un site d'actualités veut présenter des nouvelles brèves, regroupées par thème. Quatre
thèmes sont possibles : actualités, sport, bourse et média. Chaque brève correspond à un
unique thème.

Les brèves peuvent être rédigées en français ou anglais, chacune est datée et possède un
titre. Il est également possible d'illustrer une brève par une photo et de fournir une ou
plusieurs urls vers des sites détaillant l'information : chaque url sera agrémentée d'une courte
phrase résumant le contenu de la page pointée.

1- Écrire une DTD et un document XML respectant cette DTD contenant au moins deux
brèves.

3 ème SIL p. 8
Correction

<?xml version="1.0"?>
<!DOCTYPE actu [
<!--Toutes les déclarations pour la DTD de racine se trouve dans cette section -->
<!ELEMENT actu (breve*)>
<!ELEMENT breve (titre,texte,photo?,url*)>
<!ELEMENT titre (#PCDATA)>
<!ELEMENT texte (#PCDATA)>
<!ELEMENT photo EMPTY>
<!ELEMENT url (#PCDATA)>
<!ATTLIST breve langue (fr|en) #REQUIRED
theme (actu|sport|bourse|media) #REQUIRED
date CDATA #REQUIRED>
<!ATTLIST photo src CDATA #REQUIRED>
<!ATTLIST url href CDATA #REQUIRED>
]>
<actu >
<breve theme="actu" langue="fr" date="7 décembre 2014">
<titre>Les députés renoncent au CV anonyme</titre>
<texte>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum tempus euismod
lacus condimentum sodales. Vestibulum viverra massa a felis luctus lacinia. Sed massa dui,
posuere et sagittis sed, posuere ac sem.</texte>
<url href="http://www.xxx.html">URL1</url>
<url href="http://news/xxx,00.html">TF1</url>
</breve>
<breve theme="sport" langue="fr" date="7 décembre 2016">
<titre>Décès de Raymond Goethals</titre>
<texte> Proin vel ex vitae tortor dapibus dignissim. Donec feugiat elit a sollicitudin fringilla.
Morbi ac suscipit massa, nec pulvinar risus. </texte>
<photo src="http://images/xyz.jpg" />

3 ème SIL p. 9
<url href="http://www.aaa.fr/storyID=7007386">Reuters</url>
</breve>
<breve theme="actu" langue="fr" date="7 février 2006">
<titre>Mobilisation contre le CPE</titre>
<texte> Sed placerat faucibus gravida. Proin sodales varius velit, gravida ornare metus
pretium at. </texte>
</breve>
</actu>

Annexe

Une DTD définit une classe de documents. Elle définit les noms des éléments, attributs et
entités et leur type.

- Un document est valide s’il est bien formé et est valide par rapport à la DTD c’est à
dire le document est un arbre qui peut être produit par la DTD.

- Une DTD peut-être spécifiée à l’intérieur du document ou par un lien :

o Déclarations internes :

<?xml version="1.0"?>
<!DOCTYPE racine [
<!--Toutes les déclarations pour la DTD de racine se trouve dans cette section -->
...<!ELEMENT racine ... >...
]>
<racine>
<!-- Ceci est une instance d’un document de type racine -->
</racine>

o Déclarations externes :

<?xml version="1.0"?>
<!DOCTYPE racine SYSTEM "racine.dtd">
<racine>
<!-- instance d’un document de type racine -->

3 ème SIL p. 10
</racine>
- La syntaxe d’un fichier DTD est la suivante :
o Pour un élément : <!ELEMENT name (model) >
 ELEMENT est un mot-clé
 model est le content model de l’élément et qui est spécifié en utilisant une
expression régulière sur les noms d’éléments (exemple : (livre | article)* est un
modèle qui signifie qu’on aura dans une bibliographie un livre ou bien un article.
La signification de * est que zéro ou plusieurs occurrences peuvent avoir lieu)
- Les types prédéfinis utilisables sont les suivants :

Type prédéfini Description

ANY L'élément peut contenir tout type de données

EMPTY L'élément ne contient pas de données spécifiques

#PCDATA L'élément doit contenir une chaîne de caractères

- Ainsi un élément nommé Nom contenant un type #PCDATA sera déclaré de la façon
suivante dans la DTD :
<! ELEMENT Nom (#PCDATA) >
- D'autre part il est possible de définir des règles d'utilisation, c'est-à-dire les éléments
XML qu'un élément peut ou doit contenir. Cette syntaxe se fait à l'aide de notations
spécifiques dont voici un récapitulatif :

Opérateur Signification Exemple

+ L'élément doit être présent au minimum une fois A+

* L'élément peut être présent plusieurs fois (ou aucune) A*

? L'élément peut être optionnellement présent A?

| L'élément A ou l'élément B peuvent être présents A|B

, L'élément A doit être présent et suivi de l'élément B A,B

() Les parenthèses permettent de regrouper des éléments (A,B)+

3 ème SIL p. 11
afin de leur appliquer les autres opérateurs

- Ainsi on peut créer la déclaration suivante dans la DTD :


<!ELEMENT personne (nom, prenom, telephone, email?) >
o Pour un attribut, on définit le nom, le type, la valeur par défaut. Par
exemple,
<!ATTLIST rss version CDATA #FIXED "2.0" > : rss est l’élément auquel l’attribut est
associé, version est le nom de l’attribut, CDATA est type de l’attribut, "2.0" est la
valeur par défaut, #FIXED "x" si présent sinon sa valeur doit être x.

Il est possible d'ajouter des propriétés à un élément particulier en lui affectant un attribut,
c'est-à-dire une paire clé/valeur. Ainsi avec XML la syntaxe pour définir un attribut est la
suivante :

<! ATTLIST Elément Attribut Type >

Type représente le type de donnée de l'attribut, il en existe trois :

o littéral: il permet d'affecter une chaîne de caractères à un attribut. Pour déclarer un


tel type il faut utiliser le mot clé CDATA

o l'énumération: cela permet de définir une liste de valeurs possibles pour un attribut
donné, afin de limiter le choix de l'utilisateur. La syntaxe de ce type d'attribut est :

<! ATTLIST Elément Attribut (Valeur1 | Valeur2 | ...) >

Pour définir une valeur par défaut il suffit de faire suivre l'énumération par la valeur
désirée entre guillemets :

<! ATTLIST Elément Attribut (Valeur1 | Valeur2) "valeur par défaut" >

o atomique: il permet de définir un identifiant unique pour chaque élément grâce au


mot clé ID.

Enfin chacun de ces types d'attributs peut être suivi d'un mot clé particulier permettant de
spécifier le niveau de nécessité de l'attribut :

o #IMPLIED signifie que l'attribut est optionnel, c'est-à-dire non obligatoire

o #REQUIRED signifie que l'attribut est obligatoire

3 ème SIL p. 12
o #FIXED signifie que l'attribut sera affecté d'une valeur par défaut s'il n'est pas
défini. Il doit être immédiatement suivi de la valeur entre guillemets

Ainsi on pourra avoir une déclaration d'attribut du type :

<! ATTLIST disque


IDdisk ID #REQUIRED
Type (K7|MiniDisc|Vinyl|CD)"CD"
>
Ce qui signifie que l'on affecte à l'élément disque deux attributs IDdisk et type. Le premier
attribut est de type atomique, il s'agit d'un identifiant unique obligatoire. L'élément type peut
être soit K7, MiniDisc, Vinyl ou CD, sachant que ce dernier sera affecté par défaut...

3 ème SIL p. 13

Vous aimerez peut-être aussi