Sur les Types

CDATA

C'est le type le plus courant pour spécifier la valeur d'un attribut.

Exemple :

1
<!ATTLIST achat lieu CDATA #IMPLIED >

Enumération de valeurs

Ce type permet de lister les valeurs possibles d'un attribut sous forme de liste de valeur séparées par | .

Exemple :

1
<!ATTLIST titre genre (SF|Historique|Enfants|Fantastique) #IMPLIED>

NMTOKEN et NMTOKENS

Pour la valeur d'un attribut de type NMTOKEN, Il s'agit ici d'un nom XML mais sans restriction sur le premier caractère (qui peut donc être un chiffre). Une contrainte essentielle est donc qu'un attribut de ce type ne contiendra pas d'espace.

Par exemple, un code postal pourra être déclaré de ce type :

1
<!ATTLIST ville nom CDATA #REQUIRED
2
                code NMTOKEN #REQUIRED>

Pour le type NMTOKENS, la valeur d'un attribut de ce type est une suite de valeurs de type NMTOKEN séparées par des espaces.

Identificateurs et Références : ID , IDREF et IDREFS

1
<!ATTLIST element_cible nom_attribut ID>
2
<!ATTLIST element_cible nom_attribut IDREF>
3
<!ATTLIST element_cible nom_attribut IDREFS>

ID : ce type spécifie un identificateur unique d'élément. La valeur de ID est un nom XML qui identifie de manière unique l'élément XML. La valeur de l'attribut de type ID doit être évidemment unique. Dans le cas contraire, le processeur XML renverra une erreur d'analyse lorsqu'il rencontrera un second identificateur identique.

IDREF : L'attribut de type IDREF doit contenir une valeur utilisée comme ID ailleurs dans le document.

IDREFS : il spécifie une suite de IDREF, séparés par des espaces. Il permet à une valeur d'attribut de faire référence à un ou plusieurs identificateurs (ID) d'un autre élément.

Exemple :

1
<?xml version="1.0" encoding="ISO-8859-1"?>
2
<!DOCTYPE magasin[
3
<!ATTLIST magasin codes_services IDREFS #IMPLIED>
4
<!ELEMENT magasin (service+)>
5
<!ELEMENT service (produit+)>
6
<!ATTLIST service code ID #REQUIRED>
7
<!ELEMENT produit (#PCDATA)>
8
<!ATTLIST produit code ID #REQUIRED code_service IDREF #REQUIRED> ]>
9
<magasin codes_services="A001 A003">
10
<service code="A001">
11
<produit code="E205" code_service="A001"> Savon </produit >
12
<produit code="E206" code_service="A001"> Essuie-tout </produit >
13
<produit code="E207" code_service="A001"> Serviettes </produit >
14
<produit code="H107" code_service="A003"> Balai</produit >
15
</service>
16
<service code="A003">
17
<produit code="A115" code_service="A003"> Chiffon </produit>
18
</service>
19
</magasin>