Déclarations de listes d'attributs
Syntaxe : Déclaration d'attribut
Les déclarations d'attributs correspondent à la forme générale :
<!ATTLIST nom-élément nom-attribut type-attribut déclaration-de-contrainte>
où :
nom-élément :
Nom de l'élément XML[1] pour lequel les attributs déclarés seront applicables.
nom-attribut :
Nom de l'attribut, des éléments différents peuvent avoir des attributs de même nom sans qu'il y ait de confusion possible car un attribut est toujours déclaré en même temps que l'élément auquel il est attaché.
type-attribut :
Les deux types principaux sont :
CDATA
L'attribut aura pour valeur une chaîne de caractères.
Liste de choix
Une liste de noms symboliques correspondant aux valeurs possibles pour l'attribut et se présentant sous la forme :
(choix1 | choix2 | ... | choixN)
.
déclaration-de-contrainte :
Les deux formes principales de contrainte sont :
#REQUIRED
L'attribut est obligatoire.
#IMPLIED
L'attribut est facultatif.
Remarque : Déclaration de liste d'attributs
La syntaxe ATTLIST
permet de déclarer des listes d'attributs, car il est possible de répéter le pattern : nom-attribut type-attribut déclaration-de-contrainte
.
Exemple : Déclaration de liste d'attributs
<!ELEMENT x EMPTY>
<!ATTLIST x
att1 CDATA #REQUIRED
att2 (a | b | c) #IMPLIED
>
Complément : Autres types d'attributs
En plus des types CDATA
et "liste de choix", les attributs peuvent avoir les types suivants :
ID ou IDREF
Sont utilisés pour définir des liens à l'intérieur d'un document, ID identifiant de manière unique tous les éléments pouvant être référencés et IDREF indiquant la référence à cet identifiant.
NMTOKEN ou NMTOKENS
Permet à l'attribut de prendre pour valeur un ou des noms symboliques quelconques, formés de caractères alphanumériques.
ENTITY ou ENTITIES
L'attribut prendra pour valeur le nom d'une ou plusieurs entités externes non XML (images...).
NOTATION
Est utilisé pour des éléments ayant un contenu non XML, l'attribut aura alors pour valeur le nom de l'application qui a été associée à l'application externe traitant le type de contenu concerné lors d'une déclaration de type NOTATION.
Complément : Autres déclarations de contraintes
En plus des déclarations #IMPLIED et #REQUIRED, les attributs peuvent avoir les déclaration de contrainte :
Valeur par défaut
Indique la valeur par défaut prise par l'attribut (en accord avec son type) s'il n'est pas renseigné. L'attribut peut donc être renseigné ou non (comme un #IMPLIED), mais s'il ne l'est pas il prend la valeur par défaut spécifiée. Se note 'valeur'.
#FIXED 'valeur'
L'attribut prend toujours la valeur indiquée, il est "constant". Il doit donc toujours être renseigné (comme un #REQUIRED), mais toujours avec la même valeur.