DTD - Attributs

Dans ce chapitre, nous discuterons des attributs DTD. Attribute donne plus d'informations sur un élément ou plus précisément il définit une propriété d'un élément. Un attribut XML se présente toujours sous la forme d'une paire nom-valeur. Un élément peut avoir n'importe quel nombre d'attributs uniques.

La déclaration d'attribut est très similaire aux déclarations d'éléments à bien des égards, sauf une; au lieu de déclarer le contenu autorisé pour les éléments, vous déclarez une liste d'attributs autorisés pour chaque élément. Ces listes sont appelées déclaration ATTLIST.

Syntaxe

La syntaxe de base de la déclaration des attributs DTD est la suivante -

<!ATTLIST element-name attribute-name attribute-type attribute-value>

Dans la syntaxe ci-dessus -

  • Les attributs DTD commencent par le mot clé <! ATTLIST si l'élément contient l'attribut.

  • element-name spécifie le nom de l'élément auquel l'attribut s'applique.

  • attribute-name spécifie le nom de l'attribut qui est inclus avec le nom d'élément.

  • attribute-typedéfinit le type d'attributs. Nous en discuterons plus à ce sujet dans les sections suivantes.

  • attribute-valueprend une valeur fixe que les attributs doivent définir. Nous en discuterons plus à ce sujet dans les sections suivantes.

Exemple

Voici un exemple simple de déclaration d'attribut dans DTD -

<?xml version = "1.0"?>

<!DOCTYPE address [
   <!ELEMENT address ( name )>
   <!ELEMENT name ( #PCDATA )>
   <!ATTLIST name id CDATA #REQUIRED>
]>

<address>
   <name id = "123">Tanmay Patil</name>
</address>

Passons en revue le code ci-dessus -

  • Commencez par la déclaration XML avec l'instruction suivante -

<?xml version = "1.0"?>
  • Immédiatement après l'en-tête XML se trouve la déclaration de type de document, communément appelée DOCTYPE comme indiqué ci-dessous -

    Le DOCTYPE informe l'analyseur qu'une DTD est associée à ce document XML. La déclaration DOCTYPE a un point d'exclamation (!) Au début du nom de l'élément.

<!DOCTYPE address [
  • Voici le corps de DTD. Ici, nous avons déclaré l'élément et l'attribut -

<!ELEMENT address ( name )>
<!ELEMENT name ( #PCDATA )>
  • L' identifiant d' attribut pour le nom de l'élément est défini comme indiqué ci-dessous -

    Ici, le type d'attribut est CDATA et sa valeur est #REQUIRED .

<!ATTLIST name id CDATA #REQUIRED>

Règles de déclaration d'attribut

  • Tous les attributs utilisés dans un document XML doivent être déclarés dans la définition de type de document (DTD) à l'aide d'une déclaration de liste d'attributs

  • Les attributs ne peuvent apparaître que dans les balises de début ou vides.

  • Le mot clé ATTLIST doit être en majuscules

  • Aucun nom d'attribut en double ne sera autorisé dans la liste d'attributs pour un élément donné.

Types d'attributs

Lors de la déclaration d'attributs, vous pouvez spécifier la manière dont le processeur doit gérer les données qui apparaissent dans la valeur. Nous pouvons classer les types d'attributs en trois catégories principales -

  • Type de chaîne

  • Types tokenisés

  • Types énumérés

Le tableau suivant résume les différents types d'attributs -

N ° Sr. Type et description
1

CDATA

CDATA est une donnée de caractère (texte et non balisage). Il s'agit d'un type d'attribut chaîne .

2

ID

C'est un identifiant unique de l'attribut. Il ne doit pas apparaître plus d'une fois. C'est un type d'attribut tokenisé .

3

IDREF

Il est utilisé pour référencer un ID d'un autre élément. Il est utilisé pour établir des connexions entre les éléments. C'est un type d'attribut tokenisé .

4

IDREFS

Il est utilisé pour référencer plusieurs ID. C'est un type d'attribut tokenisé .

5

ENTITY

Il représente une entité externe dans le document. C'est un type d'attribut tokenisé .

6

ENTITIES

Il représente une liste d'entités externes dans le document. C'est un type d'attribut tokenisé .

sept

NMTOKEN

Il est similaire à CDATA et la valeur d'attribut se compose d'un nom XML valide. C'est un type d'attribut tokenisé .

8

NMTOKENS

Il est similaire à CDATA et la valeur d'attribut consiste en une liste de noms XML valides. C'est un type d'attribut tokenisé .

9

NOTATION

Un élément sera référencé à une notation déclarée dans le document DTD. Il s'agit d'un type d'attribut énuméré .

dix

Enumeration

Il permet de définir une liste spécifique de valeurs où l'une des valeurs doit correspondre. Il s'agit d'un type d'attribut énuméré .

Déclaration de valeur d'attribut

Dans chaque déclaration d'attribut, vous devez spécifier comment la valeur apparaîtra dans le document. Vous pouvez spécifier si un attribut -

  • peut avoir une valeur par défaut

  • peut avoir une valeur fixe

  • est requis

  • est implicite

Les valeurs par défaut

Il contient la valeur par défaut. Les valeurs peuvent être placées entre guillemets simples (') ou doubles (").

Syntax

Voici la syntaxe de la valeur -

<!ATTLIST element-name attribute-name attribute-type "default-value">

valeur par défaut est la valeur d'attribut définie.

Example

Voici un exemple simple de déclaration d'attribut avec la valeur par défaut -

<?xml version = "1.0"?>

<!DOCTYPE address [
   <!ELEMENT address ( name )>
   <!ELEMENT name ( #PCDATA )>
   <!ATTLIST name id CDATA "0">
]>

<address>
   <name id = "123">
      Tanmay Patil
   </name>
</address>

Dans cet exemple, nous avons un élément de nom avec un identifiant d' attribut dont la valeur par défaut est 0 . La valeur par défaut est placée entre guillemets.

Valeurs FIXES

Le mot clé #FIXED suivi de la valeur fixe est utilisé lorsque vous souhaitez spécifier que la valeur d'attribut est constante et ne peut pas être modifiée. Une utilisation courante des attributs fixes est la spécification des numéros de version.

Syntax

Voici la syntaxe des valeurs fixes -

<!ATTLIST element-name attribute-name attribute-type #FIXED "value" >

où #FIXED est une valeur d'attribut définie.

Example

Voici un exemple simple de déclaration d'attribut avec la valeur FIXED -

<?xml version = "1.0"?>

<!DOCTYPE address [
  <!ELEMENT address (company)*>
  <!ELEMENT company (#PCDATA)>
  <!ATTLIST company name NMTOKEN #FIXED "tutorialspoint">
]>

<address>
  <company name = "tutorialspoint">we are a free online teaching faculty</company>
</address>

Dans cet exemple, nous avons utilisé le mot-clé #FIXED où il indique que la valeur "tutorialspoint" est la seule valeur pour le nom d' attribut de l'élément <company>. Si nous essayons de changer la valeur d'attribut, cela donne une erreur.

Voici une DTD invalide -

<?xml version = "1.0"?>

<!DOCTYPE address [
  <!ELEMENT address (company)*>
  <!ELEMENT company (#PCDATA)>
  <!ATTLIST company name NMTOKEN #FIXED "tutorialspoint">
]>

<address>
  <company name = "abc">we are a free online teaching faculty</company>
</address>

Valeurs REQUISES

Chaque fois que vous souhaitez spécifier qu'un attribut est requis, utilisez le mot clé #REQUIRED.

Syntax

Voici la syntaxe de #REQUIRED -

<!ATTLIST element-name attribute-name attribute-type #REQUIRED>

où #REQUIRED est un type d'attribut défini.

Example

Voici un exemple simple de déclaration d'attribut DTD avec le mot clé #REQUIRED -

<?xml version = "1.0"?>

<!DOCTYPE address [
   <!ELEMENT address ( name )>
   <!ELEMENT name ( #PCDATA )>
   <!ATTLIST name id CDATA #REQUIRED>
]>

<address>
   <name id = "123">
      Tanmay Patil
   </name>
</address>

Dans cet exemple , nous avons utilisé mot - clé #REQUIRED pour spécifier que l'attribut id doit être fourni pour le nom de l' élément nom

Valeurs IMPLICITES

Lors de la déclaration d'attributs, vous devez toujours spécifier une déclaration de valeur. Si l'attribut que vous déclarez n'a pas de valeur par défaut, n'a pas de valeur fixe et n'est pas obligatoire, vous devez déclarer que l'attribut est implicite . Le mot-clé #IMPLIED est utilisé pour spécifier un attribut comme implicite .

Syntax

Voici la syntaxe de #IMPLIED -

<!ATTLIST element-name attribute-name attribute-type #IMPLIED>

où #IMPLIED est un type d'attribut défini.

Example

Voici un exemple simple de #IMPLIED

<?xml version = "1.0"?>

<!DOCTYPE address [
   <!ELEMENT address ( name )>
   <!ELEMENT name ( #PCDATA )>
   <!ATTLIST name id CDATA #IMPLIED>
]>

<address>
   <name />
</address>

Dans cet exemple, nous avons utilisé le mot-clé #IMPLIED car nous ne voulons pas spécifier d'attributs à inclure dans le nom de l' élément . C'est facultatif.