Les attributs des éléments XML doivent être définis dans le DTD (Definition de Type de Document).

L'instruction ATTLIST permet de déclarer les attributs.

<!ATTLIST NomElément NomAttribut TypeAttribut ValeurDefaut>

Le langage XML supporte la déclaration multiple d'attributs sur plusieurs lignes à partir d'une seule instruction ATTLIST.

<!ATTLIST Elément Nom_Attribut Type_Attribut Valeur_Defaut
                              Nom2_Attribut Type_Attribut Valeur_Defaut
                              Nom3_Attribut Type_Attribut Valeur_Defaut>

Le type de l'attribut renseigne sur le type de données de l'attribut.

Type Description
CDATA indique l'utilisation de données textuelles ne comprenant pas de balises XML.
(Valeur|...|ValeurN) déclare une liste de valeurs à utiliser.
ENTITY correspond à une entité déclarée dans la DTD.
ENTITIES correspond à la déclaration de plusieurs entités séparées par des espaces blancs dans la DTD.
ID identifie des éléments d'une manière unique.
IDREF correspond à la valeur d'un attribut ID.
IDREFS correspond aux valeurs de plusieurs attributs ID séparés par un espace blanc.
NMTOKEN invoque un token, un nom XML composé de lettres, de chiffres, soulignés, tirets, points et deux-points.
NMTOKENS invoque plusieurs tokens XML séparés par des espaces blancs.
NOTATION correspond à une notation déclarée dans la DTD.

La valeur par défaut permet d'initialiser l'attribut.

Valeur Description
#REQUIRED signifie que la valeur d'attribut est requise pour l'élément XML.
#IMPLIED indique que la valeur de l'attribut peut ne pas être spécifiée.
#FIXED "valeur" permet de fixer la valeur de l'attribut.
"valeur" initialise la valeur de l'attribut.
<!ATTLIST livre auteur CDATA "nom">
<!ATTLIST livre gencode ID #REQUIRED>
<!ATTLIST porte ouvert (true|false) "true">
<!ATTLIST rugby point (essai|pénalité|drop|transformation) #IMPLIED>
Exemple :
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE liste [
<!ELEMENT commentaire (#PCDATA)>
<!ELEMENT editeur (#PCDATA)>
<!ATTLIST editeur adresse CDATA #REQUIRED>
<!ELEMENT liste (logiciel+)>
<!ELEMENT logiciel (nom, commentaire, editeur, prix)>
<!ATTLIST logiciel id ID #REQUIRED>
<!ELEMENT nom (#PCDATA)>
<!ATTLIST nom 
      langue CDATA #REQUIRED 
      systeme_exploitation CDATA #REQUIRED>
<!ELEMENT prix (#PCDATA)>
<!ATTLIST prix monnaie CDATA #REQUIRED>
]>
<liste>
  <logiciel id="CTP0124555">
    <nom langue="US" systeme_exploitation="Win">
      Cooktop 2.200
    </nom>
    <commentaire>
      Un editeur XML, XSLT, XPath et DTD puissant et totalement gratuit.
    </commentaire>
    <editeur adresse="http://xmleverywhere.com/cooktop/">
      XML Everywhere
    </editeur>
    <prix monnaie="$US">00.00</prix>
  </logiciel>
  <logiciel id="XSY325684">
    <nom langue="US" systeme_exploitation="Win">
      XML Spy 4.1
    </nom>
    <commentaire>
      Un editeur XML desormais mature.
    </commentaire>
    <editeur adresse="http://www.xmlspy.com/default.html">
      Altova Inc.
    </editeur>
    <prix monnaie="$US">199,00</prix>
  </logiciel>
  <logiciel id="XWR387795">
    <nom langue="US" systeme_exploitation="Win">
      XMLwriter v1.21
    </nom>
    <commentaire>
      Permet de creer des documents XML.
    </commentaire>
    <editeur adresse="http://xmlwriter.net/">
      Wattle Software
    </editeur>
    <prix monnaie="$US">75,00</prix>
  </logiciel>
</liste>
Sommaire