Link Search Menu Expand Document

TP - Structuration d’un répertoire

Voici donc le premier TP de ce tutoriel ! L’objectif de ces chapitres TP, un peu particuliers, est de vous inviter à vous lancer dans la pratique à l’aide de tous les éléments théoriques que vous avez lu au cours des chapitres précédents. Cela me semble indispensable pour s’assurer que vous avez bien compris toutes les notions abordées jusqu’à maintenant.

Dans ce premier TP, l’objectif est de vous montrer une utilisation concrète de structuration de données via XML.

L’énoncé

Le but de ce TP est de créer un document XML structurant les données d’un répertoire.

Votre répertoire doit comprendre au moins 2 personnes. Pour chaque personne, on souhaite connaître les informations suivantes :

  • Son sexe (homme ou femme).
  • Son nom.
  • Son prénom.
  • Son adresse.
  • Un ou plusieurs numéros de téléphone (téléphone portable, fixe, bureau, etc.).
  • Une ou plusieurs adresses e-mail (adresse personnelle, professionnelle, etc.).

Je ne vous donne aucune indication concernant le choix des balises, des attributs et de l’arborescence à choisir pour une raison très simple : lorsque l’on débute en XML, le choix des attributs, des balises et de l’arborescence est assez difficile.

L’objectif est vraiment de vous laisser chercher et vous pousser à vous poser les bonnes questions sur l’utilité d’une balise, d’un attribut, etc.

Exemple de solution

Je vous fais part de ma solution. Notez bien que ce n’est qu’une solution parmi les multiples solutions possibles !

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

<repertoire>
  <!-- John DOE -->
  <personne sexe="masculin">
    <nom>DOE</nom>
    <prenom>John</prenom>
    <adresse>
      <numero>7</numero>
      <voie type="impasse">impasse du chemin</voie>
      <codePostal>75015</codePostal>
      <ville>PARIS</ville>
      <pays>FRANCE</pays>
    </adresse>
    <telephones>
      <telephone type="fixe">01 02 03 04 05</telephone>
      <telephone type="portable">06 07 08 09 10</telephone>
    </telephones>
    <emails>
      <email type="personnel">john.doe@wanadoo.fr</email>
      <email type="professionnel">john.doe@societe.com</email>
    </emails>
  </personne>
    
  <!-- Marie POPPINS -->
  <personne sexe="feminin">
    <nom>POPPINS</nom>
    <prenom>Marie</prenom>
    <adresse>
      <numero>28</numero>
      <voie type="avenue">avenue de la république</voie>
      <codePostal>13005</codePostal>
      <ville>MARSEILLE</ville>
      <pays>FRANCE</pays>
    </adresse>
    <telephones>
      <telephone type="professionnel">04 05 06 07 08</telephone>
    </telephones>
    <emails>
      <email type="professionnel">contact@poppins.fr</email>
    </emails>
  </personne>
</repertoire>

Quelques explications

Le sexe

Comme vous pouvez le constater, j’ai fait le choix de renseigner le sexe dans un attribut de la balise <personne/> et non d’en faire une balise à part entière.

En effet, cette information est, je pense, plus utile à l’ordinateur qui lira le document qu’à toute personne qui prendrait connaissance de ce fichier. En effet, contrairement à une machine, nous avons la capacité de déduire que John est un prénom masculin et Marie, un prénom féminin. Cette information n’est donc pas cruciale pour les personnes qui lisent le fichier.

L’adresse

Il est important que vos documents XML aient une arborescence logique. C’est pourquoi j’ai décidé de représenter l’adresse postale par une balise <adresse /> qui contient les informations détaillées de l’adresse de la personne comme le numéro de l’immeuble, la voie, le pays, etc.

J’ai également fait le choix d’ajouter un attribut type dans la balise <voie />. Une nouvelle fois, cet attribut est destiné à être utilisé par une machine.

En effet, une machine qui traitera ce fichier, pourra facilement accéder au type de la voie sans avoir à récupérer le contenu de la balise <voie/> et tenter d’analyser s’il s’agit d’une impasse, d’une rue, d’une avenue, etc. C’est donc un gain de temps dans le traitement des données.

Numéros de téléphone et adresses e-mails

Encore une fois, dans un soucis d’arborescence logique, j’ai décidé de créer les blocs <telephones /> et <emails /> qui contiennent respectivement l’ensemble des numéros de téléphone et des adresses e-mail.

Pour chacune des balises <telephone/> et <email/> , j’ai décidé d’y mettre un attribut type. Cet attribut permet de renseigner si l’adresse e-mail ou le numéro de téléphone est par exemple professionnel ou personnel.

Bien qu’indispensable aussi bien aux êtres humains qu’aux machines, cette information est placée dans un attribut car ce n’est pas l’information principale que l’on souhaite transmettre. Ici, l’information principale reste le numéro de téléphone ou l’adresse e-mail et non son type.

Ce cours vous plait ?

Retrouvez ce cours en livre physique sur Amazon !