5.7.3. L'attribut class

Chaque élément déclaré dans l'architecture DITA a un attribut class. Cet attribut fournit une relation entre le nom courant de l'élément et ses équivalents plus généraux. Plus le type d'élément est spécialisé, plus la valeur de son attribut class est longue.

Par exemple, l'attribut class de l'élément <step> du type de thème task est défini ainsi :

<!ATTLIST step         class  CDATA "- topic/li task/step ">

Cela nous dit que l'élément <step> équivaut à l'élément <li> dans un thème générique. Nous apprenons aussi que <step> correspond à une étape dans un thème de tâche, ce que nous savions déjà, mais il est intéressant de le noter dans l'attribut parce que cela permet un va-et-vient migratoire entre les types au niveau supérieur et au niveau inférieur sans perte d'information. Par exemple, si un utilisateur lance une transformation « généralisante » qui associe tous les éléments à leur première valeur de classe, mais conserve leur contenu et leurs valeurs d'attributs, l'utilisateur peut alors la faire suivre d'une transformation « spécialisante » qui associe tous les éléments à leur dernière valeur de classe (en préservant le contenu et les valeurs d'attributs) et fournir un aller-retour complet de tout le contenu entre les deux types de document, en n'utilisant rien que deux transformations génériques et l'information de l'attribut class.

L'attribut class indique au processeur à quelles classes générales d'éléments appartient l'élément courant. DITA encadre (scopes) les valeurs par type de module (par exemple, type de thème, type de domaine ou type de carte) au lieu de type de document, ce qui permet aux développeurs de combiner plusieurs types de thème en un seul document sans compliquer la logique de transformation.

La séquence des valeurs est importante parce qu'elle indique aux processeurs quelle valeur est la plus générale et laquelle est la plus spécifique. C'est particulièrement important pour les transformations « spécialisantes », où l'on peut appliquer une règle générale qui dit que « si l'élément n'a pas de relation (mapping) au type de thème cible, alors utiliser simplement la dernière valeur de l'attribut class (et supposer que le type de thème spécialisé réutilise des déclarations d'élément générales, qui n'ont de relations que pour le niveau où ils ont été déclarés) ».

La valeur de l'attribut class est fournie comme une valeur par défaut, qui est modifiable et qui n'est pas fixe. La possibilité de changer l'attribut class devient importante pour la persistence de la relation à travers la migration : lorsque l'on migre un contenu vers un élément plus abstrait, on peut préserver son histoire plus spécialisée dans l'attribut class, permettant un aller-retour du contenu entre les représentations plus spécialisées et celles plus générales, de sorte que celui-ci peut être traité par des applications différentes, quels que soient leurs niveaux de compréhension et de gestion.