XML:Déclarations d'attributs
Un article de WikiTuto.
Sommaire |
Introduction
Comme on peut trouver dans un document XML des éléments possédant des attributs, il est normal que la DTD permette de définir des contraintes sur ces derniers. On peut déclarer et attacher à un élément donné chaque attribut séparément, mais il est préférable de les assembler sous la forme d'une liste. Chaque attribut défini dans la liste possède un nom et un type. On peut lui donner une valeur par défaut, ou bien le spécifier obligatoire. Le mot-clef de cette déclaration est ATTLIST.
Valeurs par défaut
Chaque attribut peut être requis, optionnel ou fixe et avoir une valeur par défaut. Les exemples suivants montrent la déclaration d'un attribut appelé attr attaché à un élément nommé elt.
1.Déclaration d'un attribut avec une valeur par défaut :
<!ELEMENT elt (...)> <!ATTLIST elt attr CDATA "valeur">
Un tel attribut n'est pas obligatoire. S'il est omis dans le fichier XML lors de l'utilisation de l'élément elt, il est considéré comme valant valeur. Dans cet exemple, si on écrit <elt>(...)</elt>, cela est équivalent à écrire <elt attr="valeur">(...)>/elt>.
2.Déclaration d'un attribut requis :
<!ELEMENT elt (...)> <!ATTLIST elt attr CDATA #REQUIRED>
Un tel attribut est obligatoire. Son absence déclenche une erreur du vérificateur syntaxique sur le fichier XML.
3.Déclaration d'un attribut optionnel :
<!ELEMENT elt (...)> <!ATTLIST elt attr CDATA #IMPLIED>
4.Déclaration d'un attribut avec une valeur fixe :
<!ELEMENT elt (...)> <!ATTLIST elt attr CDATA #FIXED "valeur">
L'utilité d'un tel attribut peut sembler bizarre à première vue, puisqu'il ne peut prendre qu'une seule valeur. Cette fonctionnalité est cependant utile lors d'une mise à jour d'une DTD, pour préserver la compatibilité avec des versions ultérieures.
Type chaîne de caractères
Il s'agit là du type d'attribut le plus courant. Une chaîne de caractères peut être composée de caractères ainsi que d'entités analysables. Le mot-clef utilisé pour la déclaration de chaîne de caractère est CDATA.
Exemple de déclaration de CDATA :
<!ELEMENT elt (...)> <!ATTLIST elt attr CDATA #IMPLIED>
Exemples d'utilisations :
<elt attr="Chaîne de caractères"></elt>
<!ENTITY car "caractères"> <elt attr="Chaîne de &car;">(...)</elt>
Type ID
Ce type sert à indiquer que l'attribut en question peut servir d'identifiant dans le fichier XML. Deux éléments ne pourront pas posséder le même atribut possédant la même valeur.
Exemple de déclaration de type ID optionnel :
<!ELEMENT elt (...)> <!ATTLIST elt attr ID #IMPLIED> <!ELEMENT elt1 (...)> <!ATTLIST elt1 attr ID #IMPLIED> <!ELEMENT elt2 (...)> <!ATTLIST elt2 attr ID #IMPLIED>
La déclaration précédente interdit par exemple...
<elt1 attr="machin"></elt1> <elt2 attr="truc"></elt2> <elt1 attr="machin"></elt1>
... ainsi que
<elt1 attr="machin"></elt1> <elt2 attr="machin"></elt2> <elt1 attr="truc"></elt1>
Type énuméré
On peut parfois désirer limiter la liste de valeurs possibles pour un attribut. On le définit alors comme étant de type énuméré. Donner une autre valeur dans le fichier XML provoque une erreur.
Exemple de déclaration d'une liste de choix d'attributs :
<!ELEMENT img EMPTY> <!ATTLIST img format (BMP | GIF | JPEG) "JPEG">
Cet exemple déclare un attribut format d'un élément img. La valeur de cet attribut peut être BMP, GIF ou JPEG. Si aucune valeur n'est affectée à cet attribut, c'est la valeur par défaut qui le sera, ici JPEG. On notera l'absence de guillemets dans la liste des valeurs possibles. C'est une source courante d'erreur dans la rédaction d'une DTD.
Exercice 1. Écriture d'une DTD avec attributs
Sources
Voir aussi
- Introduction
- Types de DTD
- Déclarations d'éléments
- Déclarations d'attributs
- Déclarations d'entités



