Le rôle de la déclaration d'attributs est de donner pour un élément cible :
<!ATTLIST element_cible nom_attribut type_attribut valeur_par_défaut>
La valeur par défaut est la valeur prise par l'attribut si aucune valeur n'est précisée dans l'élément. Cette valeur doit être du même type que celui donné à l'attribut. S'il n'y a pas matière à définir une valeur par défaut on peut remplacer par un mot-clé :
Par exemple, dans la DTD XHML1.0 on a pour l'élément pre
l'attribut xml:space
qui est fixé à preserve
pour signifier que les espaces blancs à l'intérieur de pre
sont significatifs et ne doivent pas être modifiés par le processeur XML :
<!ATTLIST pre
%attrs;
xml:space (preserve) #FIXED 'preserve'
>
Dans cette même DTD, l'attribut method
de l'élément form
qui ne peut prendre comme valeur que get
ou post
prend par défaut la valeur get
, d'autre part, le type mime d'encodage prend par défaut la valeur application/x-www-form-urlencoded
:
<!ATTLIST form
%attrs;
action %URI; #REQUIRED
method (get|post) "get"
enctype %ContentType; "application/x-www-form-urlencoded"
onsubmit %Script; #IMPLIED
onreset %Script; #IMPLIED
accept %ContentTypes; #IMPLIED
accept-charset %Charsets; #IMPLIED
>
<!ATTLIST element_cible nom_attribut CDATA valeur_par_défaut>
Pour XHTML1.0 les attributs http-equiv, name, content, scheme
de l'élément meta
sont des chaînes de caractères :
<!ATTLIST meta
%i18n;
http-equiv CDATA #IMPLIED
name CDATA #IMPLIED
content CDATA #REQUIRED
scheme CDATA #IMPLIED
>
<!ATTLIST element_cible nom_attribut (val1 | val2 | ... | valN) "valdefaut">
L'attribut prend une valeur dans la liste des valeurs possibles définies dans la déclaration d'attribut (chaque valeur doit être un atome nominal ou NMTOKEN valide).
<!ATTLIST livre type (policier | fiction | aventure) "policier">
<!ATTLIST element_cible nom_attribut ID>
<!ATTLIST element_cible nom_attribut IDREF>
<!ATTLIST element_cible nom_attribut IDREFS>
Un attribut de type ID représente un identificateur unique d'élément, i.e. un attribut dont la valeur distingue l'élément de tous les autres dans le document XML courant (ex. l'attribut id en HTML). Notons que cet attribut prend généralement le nom id.
Les types IDREF et IDREFS sont des références/liste de références
séparées par des espaces, à un identifiant unique précédemment
déclaré (par exemple, l'attribut header
de
l'élément td
en XHML est de type IDREFS
pour
indiquer à quelles cellules de l'en-tête du tableau se rapporte la cellule courante).
Les types ENTITY et ENTITIES représentent un nom / une liste de noms d'entités séparées par des blancs, non-XML précédemment déclarées dans la DTD.
C'est utilisé par exemple pour établir un lien avec une image :
<!ATTLIST image source ENTITY #REQUIRED>
<!ENTITY vacances SYSTEM "plage.gif NDATA GIF89a">
qui sera utilisé dans le document XML :
<image source="vacances"/>
Les types NMTOKEN/NMTOKENS représentent des noms XML/listes de
noms XML séparés par des espaces. Ces noms peuvent être
composés de lettres, chiffres, soulignés, points, deux-points
et tirets (par exemple l'attribut name
de l'élément
map
est de type NMTOKEN en XHTML1.0).
Si une liste de valeurs est préfixée par le mot NOTATION
les notations listées comme des valeurs possibles doivent toutes avoir
déjà été déclarées :
<!ATTLIST image type NOTATION(GIF | JPEG | PNG) "GIF">