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