
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.
La discussion sur le numéro de sécurité social a déjà eu lieu dans le point précédent.

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
|
Nƒ |
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
|
Nƒ |
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
|
Nƒ |
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).