4.1. Identificateurs et références

L'attribut identity DITA fournit un mécanisme pour identifier le contenu à récupérer ou à relier. La syntaxe d'appel des identificateurs est cohérente indépendamment du mécanisme d'appel.

L'attribut id affecte un identificateur unique à un élément, ce qui permet de le référencer. Le caractère unique (scope of unicity) de l'attribut id dépend du rôle de l'élément dans l'architecture DITA :

Identificateurs de thème
Comme les thèmes sont les unités d'information de base dans DITA, l'attribut id du thème doit être unique au sein de l'instance de document.

Une architecture thématique assemble les thèmes en un produit livrable par référence. Pour assurer la référence des thèmes, l'attribut id est obligatoire sur l'élément <topic>.

L'identificateur complet d'un thème se compose de l'adresse URI de l'instance de document, d'un caractère de séparation CROISILLON « # » et de l'identificateur du thème (tel que http://some.org/some/directory/topicfile.xml#topicid). Les adresses URI sont décrites dans le document RFC 2396. Comme à l'accoutumé avec les adresses URI, on peut utiliser une adresse URI relative comme identificateur de l'instance de document tant que celle-ci est résolvable dans le contexte d'appel. Par exemple, dans un répertoire de système de fichiers, le nom de fichier de l'instance de docuemnt suffit (tel que some/directory/topicfile.xml#topicid). Au sein du même document, le seul identificateur du thème suffit (tel que #topicid). Si l'élément <topic< est l'élément racine de l'instance de document, les contextes hors de l'instance de document peuvent omettre l'identificateur du thème pour référencer l'élément <topic> (tel que topicfile.xml). Si la cible contient plusieurs thèmes frères sous l'égide d'un élément <dita> (tel que le type de document ditabase), alors la référence se résoud au premier <topic> dans la cible, sauf pour les éléments <topicref> résolus comme des directives d'inclusion (par exemple pour une sortie PDF), auquel cas le fichier cible entier est inclus, sans qu'un thème spécifique ne soit visé.

L'identificateur du thème peut être référencé par d'autres éléments, dont les éléments <topicref>, <link>, <xref>, ou des attributs conref pointant vers le thème, ainsi qu'être utilisé comme partie de références vers le contenu du thème.

L'attribut id des thèmes DITA est de type ID dans XML, et doit donc être unique au sein de l'instance de document.

Identificateurs d'élément au sein d'un thème
Comme le contenu du thème est toujours circonscrit à un élément <topic>, l'attribut id d'un élément contenu dans le thème doit seulement être unique au sein de l'élément <topic> qui le contient immédiatement. Cette approche assure des références pérennes (maintainable) au contenu parce que l'identificateur reste valide tant que l'instance de document, le thème et le contenu existent. Les positions du contenu dans le thème, et du thème dans l'instance de document, peuvent changer sans invalider l'identificateur du contenu. En outre, cette approche évite de récrire les identificateurs de contenu de thème pour empêcher les conflits de noms lors de l'agrégation des thèmes.

L'attribut id est optionnel et ne doit être ajouté que pour rendre le contenu référençable.

L'identificateur complet du contenu de thème se compose de l'identificateur complet du thème, d'un caractère de séparation BARRE OBLIQUE « / » et de l'identificateur de contenu de thème (tel que http://some.org/some/directory/topicfile.xml#topicid/contentid). Comme noté auparavant, la portion identificateur de thème peut utiliser une adresse URI relative pour l'instance de document dans les contextes où l'adresse URI est résolvable (tel que some/directory/topicfile.xml#topicid/contentid).

On doit toujours inclure l'identificateur du thème conteneur lors de l'appel de l'identificateur d'un élément. On ne pourrait pas sinon distinguer l'appel d'un autre thème de celui d'un élément dans le même thème. Pour les références dans la même instance de document, on peut tout aussi bien omettre l'identificateur de l'instance de document (tel que #topicid/contentid).

L'attribut id des éléments dans les thèmes DITA n'est pas de type ID et n'est pas tenu d'être unique au sein du document, quoiqu'il doive l'être au sein du thème.

Identificateurs de carte et identificateurs d'élément au sein d'une carte
Pour une carte, l'identificateur d'un élément devrait être unique au sein de l'instance de document. Cette approche assure que l'on puisse référencer les éléments hors de la carte sans qualification par l'identificateur de la carte.

Pour l'élément <anchor>, qui n'existe que pour identifier une position dans une carte comme cible des références, l'attribut id est obligatoire. Pour les autres éléments, l'attribut id est optionnel.

L'identificateur complet d'un élément de carte se compose de l'adresse URI absolue de l'instance de document de carte et de l'identificateur de l'élément (tel que http://some.org/some/directory/mapfile.xml#topicrefid).

Les attributs id des éléments <map> et <anchor> sont de type ID et doivent obligatoirement être uniques au sein de l'instance de document. Les attributs id des autres éléments dans la carte ne sont pas de type ID et ne sont pas obligatoirement uniques.