5.7.7.1. Généralisation des attributs

Les attributs spécialisés depuis props ou base peuvent être généralisés en utilisant une syntaxe de généralisation d'attribut spéciale. Les processus compatibles avec la spécialisation devraient être capables de reconnaître et de traiter à la fois les formes spécialisées et généralisées d'un attribut comme étant équivalentes dans leurs valeurs.

Lorsqu'elles sont généralisées, les valeurs d'attribut spécialisées s'ajoutent à la fin de leur attribut ancêtre cible, entre des parenthèses précédées du nom de l'attribut spécialisé. Pour chaque attribut qui a été généralisé, un label séparé et un ensemble de valeurs entre parenthèses est ajouté à l'attribut ancêtre.

Par exemple, soit jobrole un attribut spécialisé de person, lui-même spécialisé de props :

La généralisation et la respécialisation peuvent utiliser l'attribut domains pour déterminer l'ascendance de jobrole et donc la validité de person comme cible intermédiaire de la généralisation.

Les attributs généralisés ne sont normalement pas créés ou édités directement, mais sont censés préserver les valeurs des attributs spécialisés pendant que le document se trouve temporairement dans une forme généralisée.

Si un seul élément contient les valeurs d'un attribut en plusieurs syntaxes, c'est une condition d'erreur. Par exemple, dans <p person="role(programmer)" role="admin">...</p>, les attributs fournissent tous deux des valeurs pour l'attribut role, mais l'un a une syntaxe généralisée et l'autre une syntaxe spécialisée. C'est une condition d'erreur puisque cela signifie que le document n'a été que partiellement généralisé, ou a été généralisé puis édité en utilisant un type de document spécialisé.