IX.1 Problématique

 

Le service de líétat civil díune grande ville désire réaliser un document permettant de suivre un individu de sa naissance à sa mort.

A partir de ce document, des recherches peuvent être réalisées. De plus, des transformations en HTML doivent être possible afin de proposer la visualisation de ces fiches dans líintranet de la mairie.

Ce système doit pouvoir síétendre aux autres villes de France, voir plus.

 

IX.2 Analyse

 

La première étape est de déterminer quels sont les éléments qui caractérisent la vie civile díun individu et líimbrication de ces éléments les uns dans les autres et les uns par rapport aux autres.

En vrac de quoi à priori a-t-on besoin ?

ß      naissance (parents, date, lieu)

ß      Nom

ß      Prénom(s)

ß      Date du décès

ß      Sexe

ß      Enfant(s)

ß      Adresse

ß      Numéro de sécurité social

ß      Etat civil (marié, veuf, célibataire, pacsé)

 

Un  individu possède un seul nom cíest son nom patronymique. Si cíest une femme mariée, elle possède un nom marital.

Par contre, il peut posséder plusieurs prénoms, líun est principal, les autres sont secondaires.

Un individu, síil est toujours vivant, ne possède pas de date de décès ou alors celle-ci est vide. Dans ce cas, líadresse la aussi níest pas à indiquer ou alors elle est vide.

Un individu possède ou non un ou des enfants.

Líindividu possède un père et une mère, il est nécessaire díen connaître les noms et prénoms principaux ainsi que la date de naissance.

On peut prendre le numéro de sécurité sociale comme identifiant unique. Il sera insérer comme attribut de líélément individu.

 

On peut découper les informations díun individu en quatre zones :

ÿ    Son identité (sexe, nom patronymique, nom marital, prénoms, date de naissance, date de décès)

ÿ    Ses parents (nom du père, prénom principal du père, date de naissance du père, nom de la mère, prénom principal de la mère, date de naissance de la mère)

ÿ    Sa situation familiale (état civil, enfants)

ÿ    Son adresse

 

Il est nécessaire, comme je líai signalé précédemment, de réaliser un schéma de líarborescence de ce document xml.

 

IX.3 Le DIT

 

La discussion sur le numéro de sécurité social a déjà eu lieu dans le point précédent.

 

Le DIT (Document Information Tree) est représenté ci-dessous.

 

AppleMark

 

 

IX.4 Réalisation

 

 

a. Le document XML

 

Cet exemple est plus complet et plus complexe que les précédents. Pour cette raison, pour une meilleure lisibilité ainsi que pour montrer une autre méthode, la DTD níest pas directement incluse dans le fichier XML mais est externe.

Nous allons créer un document XML contenant 2 individus.

 

ÿ    La partie entête et DTD

 

q   Le code source

 

1

2

3

4

<?xml version="1.0" encoding="ISO8859-1" standalone="no"?>

<!DOCTYPE ens_individu PUBLIC "Jacquenod/etatcivil/DTD"

 "http://www.jacquenod.fr/XML/individu.dtd">

 

 

q   Explications

 

Explications

1

Entête du document xml indiquant le type de codage utilisé (encoding="ISO8859-1") ainsi que la déclaration díune DTD externe (standalone="no")

2-3

Déclaration de la DTD externe (<!DOCTYPE) avec líindication de líélément racine de ce document xml (ens_individu).

Cette DTD est déclarée en PUBLIC. On suppose quíelle est mise à disposition díautres utilisateurs sur internet. Il est donc nécessaire díy ajouter un texte explicatif Jacquenod/etatcivil/DTD qui rend líensemble unique. La DTD est utilisable à líadresse web http://www.jacquenod.fr/XML/individu.dtd. Líintérêt de donner ce type díadresse est aussi de pouvoir utiliser le validateur du W3C en ligne. La DTD est ainsi consultable et le validateur peut fonctionner car il a besoin de pouvoir ´ télécharger ª la DTD.

 

ÿ    Description díun individu

 

q   Le code source

 

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

<ens_individu ville="Nantes">

<individu numero_secu="1640444100345">

 

<identite sexe="M">

<nom_patronymique>Jonnav</nom_patronymique>

<prenoms>

<prenom_principal>Laurent</prenom_principal>

<prenom_secondaire>François</prenom_secondaire>

<prenom_secondaire>Martin</prenom_secondaire>

</prenoms>

<date_naissance>19/04/1964</date_naissance>

</identite>

 

<parents>

<pere>

<nom_patronymique_pere>Jonnav</nom_patronymique_pere>

<prenom_principal_pere>Philippe</prenom_principal_pere>

<date_naissance_pere>31/02/1943</date_naissance_pere>

</pere>

<mere>

<nom_jeune_fille_mere>Turbault</nom_jeune_fille_mere>

<prenom_principal_mere>Annie</prenom_principal_mere>

<date_naissance_mere>10/06/1944</date_naissance_mere>

</mere>

</parents>

 

<situation_familiale etatcivil="marie">

<enfants>

<fils>Jonnav André</fils>

<fils>Jonnav Charles</fils>

<fille>Jonnav France</fille>

</enfants>

</situation_familiale>

<adresse>Saint Brevin</adresse>

</individu>

 

 

q   Explications

 

Explications

5

Insertion de líélément racine. Cet élément ne peut être présent quíune seule fois. Il doit être fermé à la fin du document XML (ligne 76).

Cet élément racine possède un attribut ville qui permet de définir la ville díapplication de ce document (ici Nantes).

6

Insertion díun élément individu. Cet élément possède un attribut numero_secu. Cet attribut a la valeur 1640444100345.

Cet élément níest pas vide, il contient díautres éléments. Il se termine ligne 39.

8-16

Insertion de líélément identite est de ses sous-éléments.

8

Description de líélément identité. Cet élément est composé díautres éléments comme líindique la DTD (voir DTD).

Cet élément possède un attribut sexe qui peut prendre les valeurs M ou F (Voir DTD)

9

Description de líélément texte nom_patronymique.

10-14

Insertion des prénoms de líindividu via líélément prenoms.

11

Líindividu possède un prénom principal décrit par líélément prenom_principal.

12-13

Líindividu possède deux prénoms secondaires décrit par líélément prenom_secondaire.

14

Fin de description de líélément prenoms.

15

Insertion de líélément texte date_naissance.

16

Fin de la description de líidentité de líindividu

18-29

Insertion de líélément parents qui contient les informations du père et de la mère de líindividu.

19-23

Informations en rapport avec le père insérées via les éléments suivants : nom_patronymique_pere, prenom_principal_pere et date_naissance_pere.

24-28

Informations en rapport avec la mère insérées via les éléments suivants : nom_patronymique_mere, prenom_principal_mere et date_naissance_mere.

29

Fin de description de líélément parents.

31-37

Insertion de líélément situation_familiale qui contient les informations sur les enfants de líindividu insérées via les éléments fils et/ou fille.

Líélément situation_familiale contient en plus un attribut etatcivil qui permet de déterminer si líindividu est marié, célibataire, veuf ou pacsé (Voir DTD).

32-36

Description des enfants. Ici líindividu possède deux fils et une fille.

37

Fin de description de la situation familiale de líindividu via la fermeture de líélément situation_familiale.

38

Insertion de líélément adresse qui contient le lieu díhabitation de líindividu.

39

Fin de description de cet individu.

 

A partir de la ligne 42 est décrit le deuxième individu.

Cette description se termine ligne 74 par la fermeture de líélément individu.

Le document XML se termine par la fermeture de líélément racine ens_individu ligne 76.

 

ÿ    Le document XML complet

 

Ce document décrit 2 individus.

Cela permet de tester et díeffectuer le tri.

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

<?xml version="1.0" encoding="ISO8859-1" standalone="no"?>

<!DOCTYPE ens_individu PUBLIC "Jacquenod/etatcivil/DTD"

 "http://www.jacquenod.fr/XML/individu.dtd">

 

<ens_individu ville="Nantes">

<individu numero_secu="1640444100345">

 

<identite sexe="M">

<nom_patronymique>Jonnav</nom_patronymique>

<prenoms>

<prenom_principal>Laurent</prenom_principal>

<prenom_secondaire>François</prenom_secondaire>

<prenom_secondaire>Martin</prenom_secondaire>

</prenoms>

<date_naissance>19/04/1964</date_naissance>

</identite>

 

<parents>

<pere>

<nom_patronymique_pere>Jonnav</nom_patronymique_pere>

<prenom_principal_pere>Philippe</prenom_principal_pere>

<date_naissance_pere>31/02/1943</date_naissance_pere>

</pere>

<mere>

<nom_jeune_fille_mere>Turbault</nom_jeune_fille_mere>

<prenom_principal_mere>Annie</prenom_principal_mere>

<date_naissance_mere>10/06/1944</date_naissance_mere>

</mere>

</parents>

 

<situation_familiale etatcivil="marie">

<enfants>

<fils>Jonnav André</fils>

<fils>Jonnav Charles</fils>

<fille>Jonnav France</fille>

</enfants>

</situation_familiale>

<adresse>Saint Brevin</adresse>

</individu>

 

<!-- Deuxieme individu -->

<individu numero_secu="2341144100345">

 

<identite sexe="F">

<nom_patronymique>Darte</nom_patronymique>

<nom_marital>Paruton</nom_marital>

<prenoms>

<prenom_principal>Aline</prenom_principal>

<prenom_secondaire>Gisele</prenom_secondaire>

</prenoms>

<date_naissance>23/11/1934</date_naissance>

<date_deces>01/04/1989</date_deces>

</identite>

 

<parents>

<pere>

<nom_patronymique_pere>Darte</nom_patronymique_pere>

<prenom_principal_pere>Jean</prenom_principal_pere>

<date_naissance_pere>09/02/1839</date_naissance_pere>

</pere>

<mere>

<nom_jeune_fille_mere>Fraise</nom_jeune_fille_mere>

<prenom_principal_mere>Anemone</prenom_principal_mere>

<date_naissance_mere>04/03/1845</date_naissance_mere>

</mere>

</parents>

 

<situation_familiale etatcivil="veuf">

<enfants>

<fille>Darte Fanny</fille>

</enfants>

</situation_familiale>

<adresse></adresse>

</individu>

 

</ens_individu>

 

 

b. La DTD (Definition Type of Document)

 

La DTD est la grammaire du document XML auquel elle est attachée. Elle indique dans quel ordre, de quel contenu sont constitués les éléments et attributs décrits dans le document XML. Pour mieux la comprendre, reportez vous au DIT décrit section IX.3.

 

ÿ    Le code source de la DTD

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

<!ELEMENT ens_individu (individu*)>

<!ATTLIST ens_individu ville CDATA #REQUIRED>

<!ELEMENT individu (identite,parents,situation_familiale,adresse)>

<!ATTLIST individu numero_secu CDATA #REQUIRED>

<!ELEMENT identite (nom_patronymique,nom_marital?,prenoms,date_naissance,date_deces?)>

<!ATTLIST identite sexe (M|F) #REQUIRED>

<!ELEMENT nom_patronymique (#PCDATA)>

<!ELEMENT nom_marital (#PCDATA)>

<!ELEMENT prenoms (prenom_principal,prenom_secondaire*)>

<!ELEMENT prenom_principal (#PCDATA)>

<!ELEMENT prenom_secondaire (#PCDATA)>

<!ELEMENT date_naissance (#PCDATA)>

<!ELEMENT date_deces (#PCDATA)>

<!ELEMENT parents (pere,mere)>

<!ELEMENT pere (nom_patronymique_pere,prenom_principal_pere,date_naissance_pere)>

<!ELEMENT nom_patronymique_pere (#PCDATA)>

<!ELEMENT prenom_principal_pere (#PCDATA)>

<!ELEMENT date_naissance_pere (#PCDATA)>

<!ELEMENT mere (nom_jeune_fille_mere,prenom_principal_mere,date_naissance_mere)>

<!ELEMENT nom_jeune_fille_mere (#PCDATA)>

<!ELEMENT prenom_principal_mere (#PCDATA)>

<!ELEMENT date_naissance_mere (#PCDATA)>

<!ELEMENT situation_familiale (enfants*)>

<!ATTLIST situation_familiale etatcivil (marie|celibataire|pacse|veuf) #REQUIRED>

<!ELEMENT enfants (fils*,fille*)>

<!ELEMENT fils (#PCDATA)>

<!ELEMENT fille (#PCDATA)>

<!ELEMENT adresse (#PCDATA)>

 

q   Explications

 

Explications

1

Le premier élément a être décrit est évidemment la racine du document XML. Cet élément est ens_individu. Cet élément peut contenir de 0 à n éléments individu (*).

2

Líélément racine ens_individu possède aussi un attribut ville qui représente le nom de la ville auquel le document síapplique. Cet attribut est obligatoire (#REQUIRED).

3

Líélément individu sous élément de líélément racine ens_individu possède lui-même un certain nombre díélément. Ces éléments doivent apparaître dans líordre suivant : identite, parents, situation_familiale et enfin adresse. Ces sous-éléments sont obligatoires.

4

Cet élément individu possède un attribut obligatoire (#REQUIRED) : numero_secu.

5-6

Parmi les sous-éléments de líélément individu il y a identite. Son utilisation est définie à cette ligne. Il possède à son tour des sous-éléments qui doivent apparaître dans líordre suivant : nom_patronymique, nom_marital?, prenoms, date_naissance et enfin date_deces?.

Les éléments nom_marital et date_deces sont facultatifs (?).

7

Líélément identite possède un attribut obligatoire (#REQUIRED) sexe qui peut prendre les valeurs M ou F (M|F). Cet attribut est obligatoire (#REQUIRED).

8

Líélément nom_patronymique sous-élément de líélément identite ne contient que du texte (#PCDATA).

9

Líélément nom_marital sous-élément de líélément identite ne contient que du texte (#PCDATA). Rappelons que cet élément est facultatif.

10

Líélément prenoms, sous-élément de líélément identite, est constitué de deux éléments prenom_principal et prenom_secondaire*. Ces deux éléments doivent apparaître dans cet ordre. Le premier (prenom_principal) est obligatoire et ne peut apparaître quíune fois. Le second (prenom_secondaire*) peut être présent de 0 à n fois (*).

11-14

Définition des éléments prenom_principal, prenom_secondaire*, date_naissance et date_deces. Ces quatres éléments sont des éléments qui ne contiennent que du texte (#PCDATA).

Rappelons que date_deces?, est facultatif et que prenom_secondaire* peut être présent de 0 à n fois dans la définition díun individu.

15

Définition de líélément parents qui contient les informations concernant les parents de líindividu. Cet élément contient les éléments pere et mere. Ces deux éléments doivent être présent de manière obligatoire et dans cet ordre.

16-20

Définition de líélément pere qui contient trois éléments qui sont déclarés en ligne 18, 19 et 20 et qui contiennent uniquement du texte. Ces 3 éléments doivent être obligatoirement présent dans cet ordre.

21-25

Définition de líélément mere qui contient trois éléments qui sont déclarés en ligne 23, 24 et 25 et qui contiennent uniquement du texte. Ces 3 éléments doivent être obligatoirement présent dans cet ordre.

26

Définition de líélément situation_familiale qui contient 1 élément (enfants*). Cet dernier peut être présent de 0 à n fois.  Líélément contient aussi un attribut etatcivil déclaré ligne 27-28.

27-28

Líattribut etatcivil possède obligatoirement un contenu qui doit être líun de ceux présents dans la liste définie ligne 27 (marie|celibataire|pacse|veuf). Cet attribut doit obligatoirement être présent (#REQUIRED).

29-31

Définition de líélément enfants obligatoirement présent. Cet élément peut contenir de 0 à n éléments textes fils et/ou de 0 à n éléments filles. Ces deux éléments textes optionnels sont définis lignes 30 et 31.

32

Définition du dernier élément adresse. Cet élément ne contient que du texte. Il se trouve au niveau 1 du DIT.

 

 

 

c. La Validation

 

 

La validité de ce document xml est testée en utilisant le validateur du W3C.

Vous avez deux possibilités :

 

ÿ    Address : ce choix vous oblige à mettre votre document xml sur internet pour que le validateur puisse y accéder. Si vous possédez une DTD externe vous devez aussi la mettre sur internet et modifier líentête de votre document XML en indiquant líadresse web de cette DTD (Voir exemples suivants).

ÿ    Local File : en cliquant sur Browse, vous accédez à votre disque local. Il suffit díaller y chercher votre document XML. Attention, vous ne pouvez avoir de DTD externe dans ce cas.

 

La validation est faite en utilisant la première via le Web. Cette partie va être détaillée en utilisant des copies écran.

 

Remarque

Lorsque vous transformez votre document via Xalan, par exemple, la phase 1 est automatiquement réalisée. Une analyse du fichier XML est faite et si il y a des erreurs celles-ci seront indiquées.

 

ÿ    Phase 1

 

Chargement de líURL et indication de líadresse du fichier XML. Ce fichier ainsi que la DTD doit être accessible via internet pour que la validation puisse se faire.

 

ÿ    Phase 2

 

Si la page XML et la DTD ne contiennent pas díerreur de syntaxe, et si le fichier XML respecte cette DTD, vous obtenez la page suivante.

 

 

ÿ    Vous pouvez aussi obtenir plus díinformations en cliquant sur ces liens ou en les activant en phase1.

 

 

Vous devez cliquer sur les boutons pour effectuer vos choix. Vous pouvez aussi forcer le codage et le Doctype (html1.0, XHTML1.0 Ö).

 

 

Si je choisis les options suivantes, jíobtiens des résultats en plus à líécran comme líarborescence (voir ci-après).