Title: XML
 1XML
- DTD 
 - Déclarations de Type de Document
 
  2Objectif
- Définir ce qui est autorisé, correct et 
compréhensible dans le contexte du document  - Il y a 2 solutions pour préciser les balises et 
attributs auxquels on a droit pour rédiger un 
document XML   - Les DTD (Document Type Definition) 
 - Les schémas XML
 
  3Construction d'une DTD
- Les DTD fournissent les règles que le parseur 
(outil logiciel qui interprète le document) doit 
suivre pour la validation et l'interprétation 
correcte du document.  - Une DTD suit des règles strictes pour assurer que 
les résultats désirés sont obtenus et les données 
restituées correctement.  - Une DTD est requise pour qu'un document XML soit 
valide 
  4Types de DTD
- Une DTD a 2 représentations physiques  
 - elle peut faire partie du document XML  interne 
 - elle peut être un fichier à elle seule  externe 
 - avantage  utilisable par d'autres documents XML 
 - Les DTD externes se séparent en 2 catégories  
 - privée  accessible en local 
 - publique  disponible pour tous via un URI 
(Uniform Resource Identifier) 
  5Déclaration d'une DTD
- DTD interne  
 -  lt!DOCTYPE racine 
 -  déclarations des éléments, attributs, 
 - gt 
 - DTD externe privée  
 -  lt!DOCTYPE racine SYSTEM "fichier.dtd" gt 
 - DTD externe publique  
 -  lt!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 
Strict//EN" "http//www.w3c.org/TR/xhtml1/DTD/xhtm
l1-strict.dtd" gt  
  6Déclaration d'éléments
- La déclaration d'élément de base est structurée 
ainsi   - lt!ELEMENT nom_element (type de données)gt 
 - Exemple  lt!ELEMENT nom_de_famille (PCDATA)gt 
 - Cette déclaration indique que l'élément 
nom_de_famille doit contenir PCDATA (Parsed 
Character Data), c'est-à-dire du texte brut ne 
contenant aucune balise ou sous-élément. 
  7Déclaration d'éléments
- Un élément peut être constitué de plusieurs 
sous-éléments. Lors de la déclaration de séquence 
ou de choix d'éléments, à chaque élément enfant 
peut être attribuée une indication d'occurrence.  - Ex  lt!ELEMENT elt (elt1, elt2?, elt3, elt4)gt 
 - Signification  
 - pas d'indication  exactement une occurrence 
 - ?  0 ou 1 occurrence 
 -   1 occurrence ou plus 
 -   0 occurrence ou plus 
 
  8Séquence d'éléments
- Une séquence d'éléments est la liste des éléments 
devant apparaître dans l'élément défini.  - Tous les éléments enfants doivent être déclarés 
dans la DTD. Ils doivent apparaître dans le 
fichier XML dans l'ordre de déclaration.  - Exemple  lt!ELEMENT elt (elt1, elt2, elt3)gt 
 - Utilisation  
 -  
 
lteltgt ltelt1gtlt/elt1gt ltelt3gtlt/elt3gt 
ltelt2gtlt/elt2gt lt/eltgt
lteltgt ltelt1gtlt/elt1gt ltelt2gtlt/elt2gt 
ltelt3gtlt/elt3gt lt/eltgt
lteltgt ltelt1gtlt/elt1gt ltelt3gtlt/elt3gt lt/eltgt 
 9Choix d'éléments
- lt!ELEMENT elt (elt1  elt2  elt3)gt 
 - Sans indication d'occurrence, on ne peut en 
utiliser qu'un seul.  - Avec indication d'occurrence  lt!ELEMENT elt 
(elt1elt2elt3)gt  - Indication d'occurrence globale lt!ELEMENT elt 
(elt1elt2elt3)gt  - Pas de contrainte sur l'ordre d'apparition des 
éléments  
lteltgt ltelt2gtlt/elt2gt lt/eltgt 
lteltgt ltelt2gtlt/elt2gt ltelt2gtlt/elt2gt lt/eltgt
lteltgt ltelt3gtlt/elt3gt ltelt2gtlt/elt2gt lt/eltgt
lteltgt ltelt2gtlt/elt2gt ltelt3gtlt/elt3gt lt/eltgt 
 10Cas particuliers
- Elément vide 
 - lt!ELEMENT elt EMPTYgt 
 - Utilisation  ltelt/gt 
 - Elément quelconque 
 - Vague, permet de dire qu'un élément existe sans 
savoir ce qu'il va contenir. Ne permet pas 
d'utiliser des éléments non déclarés. Besoin 
quand on utilise des applications associant un 
contenu d'applications XML inconnu de manière 
arbitraire.  - lt!ELEMENT elt ANYgt 
 - Elément mixte 
 - lt!ELEMENT definition (PCDATA  terme)gt 
 - ne spécifie ni l'ordre ni le nombre 
 - PCDATA doit toujours être le premier de la liste
 
  11Déclaration d'attributs
- Les éléments peuvent contenir des attributs. Ils 
sont définis dans la DTD comme ceci   - lt!ATTLIST nom_element nom_attribut type 
valeur_defautgt  - Exemple  
 -  lt!ELEMENT produit (PCDATA)gt 
 - lt!ATTLIST produit prix CDATA REQUIREDgt 
 - Types possibles  CDATA, ID, IDREF, IDREFS, 
ENTITY, ENTITIES, NMTOKEN, NMTOKENS, NOTATION, 
ENUMERATED  - Au lieu de la valeur par défaut, on peut mettre 
la mention REQUIRED ou IMPLIED qui indique si 
l'attribut est requis ou facultatif, ainsi que le 
nombre d'occurrences permises ou requises. 
  12Types d'attributs
- CDATA  n'importe quelle chaîne de caractères 
possible. C'est le type d'attribut le plus 
général.  - NMTOKEN  unité lexicale nominale (tous les 
caractères peuvent être lus en premier, 
contrairement aux noms xml)  - lt!ATTLIST journal annee NMTOKEN REQUIREDgt 
 - autorise 2006, 99, mars, mais interdit "1990 02" 
ou "coucou toto"  - "30-01-2006" autorisé mais pas "30/01/2006" 
 - NMTOKENS  une ou plusieurs unités lexicales 
nominales séparées par des blancs 
  13Types d'attributs
- Enumération  liste de toutes les valeurs 
possibles séparées par des   - lt!ATTLIST date mois (Janvier  Février  Mars) 
REQUIREDgt  - ID  nom XML unique dans le document 
 - lt!ATTLIST employe numero_secu ID REQUIREDgt 
 - ltemploye numero_secu"ss123-45-6789"/gt 
 - IDREF  attribut faisant référence à un attribut 
de type ID.  - lt!ATTLIST membre_equipe personne IDREF REQUIREDgt 
 - IDREFS  liste d'IDREF séparés par des blancs 
 - ENTITY, ENTITIES, NOTATION
 
  14Entités
- Permettent d'insérer du texte ou d'autres données 
de manière dynamique dans un document  - déclaration lt!ENTITY MH "McGraw-Hill"gt 
 -  utilisation MH 
 - Le  étant utilisé pour référencer les entités, 
on utilise amp (entité prédéfinie) pour écrire 
le symbole . 
  15Notations
- Permet de spécifier une application ou un plug-in 
pour traiter un type de données spécifié  - Ex  visualiseur d'image particulier 
 -  lt!ELEMENT carte EMPTYgt 
 -  lt!ATTLIST carte image ENTITY REQUIREDgt 
 -  lt!ENTITY carte1.png SYSTEM http//www.site.net/ca
rte1.png NDATA pnggt  -  lt!NOTATION png SYSTEM file///c/Program 
Files/visualiseur.exe gt  - En pratique pas très utilisé
 
  16IGNORE et INCLUDE
- Mots clés pour activer ou désactiver les éléments 
selon les besoins  - Permet de tester ou de déboguer, utile pour 
combiner plusieurs DTD en une seule unité.  - Issus du SGML, peu utilisés en XML
 
  17Exercices
- On souhaite définir un annuaire. Une fiche pourra 
contenir le nom et le prénom d'une personne, son 
numéro de téléphone, éventuellement son email 
s'il existe. Ecrire un fichier xml contenant 
quelques fiches et la dtd associée (version 
interne et externe).  - Ecrire la dtd correspondant au fichier biblio.xml 
donné au chapitre 1 (version interne et externe). 
  18fiche.dtd
lt!ELEMENT personne (nom,prenom,telephone,email?) 
gt lt!ELEMENT nom (PCDATA) gt lt!ELEMENT prenom 
(PCDATA) gt lt!ELEMENT telephone (PCDATA) gt 
lt!ELEMENT email (PCDATA) gt 
fiche.xml
ltpersonnegt ltnomgtLevélt/nomgt 
ltprenomgtFlorencelt/prenomgt lttelephonegt555-123456
lt/telephonegt ltemailgtFlorence.Leve_at_u-picardie.frlt
/emailgt lt/personnegt