Tutoriel : spécialiser un attribut
Spécialiser un attribut pour comprendre comment spécialiser la configuration du
filtrage
Durée : 45 mn
Une opération extrêmement simple
Spécialiser props pour ajouter une notion de "difficulté de recette"
L'objectif est de spécialiser l'attribut de filtrage @props pour
pouvoir ajouter une difficulté de recette (@difficulte) qui puisse prendre
les valeurs simple, modere et complexe.
Procédure :
Organisation des répertoires et du catalogue
-
Créez les répertoires difficultePropsDomain et dtd
-
Créez le fichier difficultePropsDomain.ent
-
Ajustez les catalogs
Création de la spécialisation
-
Dans le fichier difficultePropsDomain.ent :
-
ajoutez la déclaration du nouvel attribut : <!ENTITY %
difficulte-d-attribute "difficulte CDATA
#IMPLIED">
Ceci déclare l'attribut lui-même qui sera ensuite, dans le shell,
ajouté comme extension des propriétés de filtrage.
-
déclarez l'entité qui sera par la suite ajoutée aux
"@domains" manipulés par un topic : <!ENTITY
difficulte-d-att "a(props difficulte)">
Le mot clé a, devant la propriété parenthésée indique que
la spécialisation concerne les attributs. A nouveau, on notera que
ceci est défini sous forme d'entité générale et non
paramètre.
-
Dans le fichier concept.dtd :
-
Réalisez l'appel du fichier d'entités dans la partie "DOMAIN
ATTRIBUTE DECLARATIONS" : <!ENTITY % difficulte-d-dec PUBLIC
"nom déclaré dans le catalogue" "difficultePropsDomain.ent">
%difficulte-d-dec;
Ceci rend disponible les entités paramètres précédemment
déclarées.
-
Modifiez la déclaration de props-attribute-extensions pour
ajouter l'entité paramètre difficulte-d-attribute :
<!ENTITY % props-attribute-extensions
"%difficulte-d-attribute;" >
Cette entité est appelée par %select-atts;, qui est
associée à de nombreux éléments via %univ.atts;.
-
Ajoutez l'entité de déclaration de domaine
&difficulte-d-att; à l'entité générale
included-domains.
Une entité générale, donc pas de % mais un
&.
A ce stade, concept devrait être valide.
Test
-
Ouvrir "test.dita" et ajoutez une valeur "simple" au
nouvel attribut "difficulte".
-
Validez qu'il n'y a pas d'erreur.
Résultat :
La spécialisation fonctionne, il serait aussi possible de contraindre les
valeurs de
difficulte en utilisant un
subjectScheme (voir les
derniers transparents
de la session
métadonnées du module I).