Identifiants et références (ID et IDREF)
Définition : Élément identifié par un attribut identifiant (ID)
Les attributs de type ID permettent d'identifier de façon unique un élément. La valeur d'un attribut de type ID est unique parmi toutes les valeurs des attributs ID de tout le document (sinon le document n'est pas valide, principe d'unicité).
On notera également que :
la valeur d'un attribut ID est de type NMTOKEN
un élément ne peut avoir qu'un seul attribut de type ID
un attribut ID peut être optionnel (#IMPLIED) ou obligatoire (#REQUIRED)
Syntaxe :
<!ELEMENT e (...)>
<!ATTLIST e
a ID #REQUIRED>
Définition : Réference à des éléments identifiés (IDREF)
Les attributs de type IDREF permettent de faire référence à un élément identifié, par la valeur de l'attribut ID correspondant. La valeur d'un attribut IDREF doit correspondre à la valeur d'un attribut ID dans le document (sinon le document n'est pas valide, principe d'intégrité référentielle).
Syntaxe :
<!ELEMENT e (...)>
<!ATTLIST e
a IDREF #REQUIRED>
Remarque : IDREFS
Un attribut de type IDREFS permet de faire référence à plusieurs élément identifiés, le séparateur étant un espace (référence de cardinalité N:M).
Exemple : DTD avec ID, IDREF, IDREFS
<!-- dtdid.dtd -->
<!ELEMENT e1 (e2 | e3 | e4)*>
<!ELEMENT e2 (#PCDATA)>
<!ELEMENT e3 (#PCDATA)>
<!ELEMENT e4 (#PCDATA)>
<!ATTLIST e2
id ID #REQUIRED>
<!ATTLIST e3
ref IDREF #IMPLIED>
<!ATTLIST e4
refs IDREFS #IMPLIED>
Exemple : Extrait de document XML valide par rapport à dtdid.dtd
<e1>
<e2 id="id1">...</e2>
<e2 id="id2">...</e2>
...
<e3 ref="id1"/>
...
<e4 refs="id1 id2"/>
</e1>