Directive de modèle de membre
La directive *Member
est également une construction. La valeur de cette construction est un nom de modèle. Ce nom de modèle doit apparaître dans la liste *Membres du modèle hôte (c’est-à-dire le modèle dans lequel réside la production) ou dans la liste *Membres dont le modèle hôte hérite (directement ou indirectement). La construction *Member
peut contenir un attribut enfant facultatif appelé *Occurs.
*Se produit spécifie le nombre d’instances liées au modèle spécifié par la production *Members, qui peut apparaître dans une instance du modèle hôte. Les instances qui se lient à des modèles dérivent du modèle nommé par la production *Members seront comptabilisées comme une occurrence d’une instance de ce modèle. Si le nombre de telles occurrences se situe dans la plage définie par la directive *Occurs , la directive *Member
prend la valeur TRUE ; sinon, la directive est FALSE. Les modèles d’attribut ou de construction (*Type : CONSTRUCT ou *Type : ATTRIBUTE) peuvent être référencés dans une construction *Member
. La construction *Member
qui apparaît dans une directive de production *n’est pas identique à la directive *Members qui apparaît en tant qu’enfant d’une directive *Template. *Member
est une construction et est au singulier, et *Members est un attribut et est pluriel (se termine par la lettre « s »).
*Se produit spécifie le nombre d’instances liées au modèle spécifié par la production *Members. Une valeur spécifique peut être spécifiée ou une plage de valeurs peut être spécifiée à l’aide d’une paire de nombres séparés par un trait d’union (-). Si une plage est spécifiée, le premier nombre doit être inférieur au second. Les nombres négatifs ne sont pas autorisés. La plage autorisée inclut les points de terminaison spécifiés. La valeur 0 est autorisée. Le caractère générique GPD (*) est autorisé et correspond à toute valeur comprise entre 0 et l’infini. Si le caractère générique (*) apparaît comme point de terminaison supérieur d’une plage, il n’existe aucune limite supérieure. Si le caractère générique apparaît comme la limite inférieure d’une plage, la limite supérieure est ignorée. Le nombre ou la paire de nombres peut être placé entre crochets ([]) pour l’accent visuel.
Si l’attribut *Occurs est omis dans la construction *Member
, une plage comprise entre 0 et l’infini (autrement dit, [0-*]) est supposée et la production *Member
est toujours évaluée à TRUE.
Lorsqu’une production *Member
nomme un modèle de construction, le nombre de occurrences *ne fait pas la distinction entre les différentes instances de la construction. Ainsi, trois instances différentes d’une construction qui sont liées au même modèle auront le même nombre d’occurrences que trois instances identiques de la même construction.
Par exemple, si PaperSize et InputSlot sont tous deux liés au même modèle et si *Feature : PaperSize est défini deux fois, le nombre d’occurrences est de deux. Si *Feature: PaperSize est défini une fois et *Feature: InputSlot est défini deux fois, le nombre d’occurrences est de trois.
Aucun autre attribut ou construction n’est autorisé dans la directive *Member
.
Lorsque la directive *Members est associée au processus de liaison de modèle, la directive *Members tente d’associer un modèle à chaque élément enfant qui apparaît dans une construction. Toutefois, il ne spécifie pas le nombre de fois où un élément enfant peut apparaître ou spécifier des dépendances entre ou entre des éléments enfants. La directive *Production est chargée de spécifier ces exigences. Notez que la directive *Members est toujours requise même lorsque vous utilisez la directive *Production.