DTD - Éléments

Les éléments XML peuvent être définis comme des blocs de construction d'un document XML. Les éléments peuvent se comporter comme un conteneur pour contenir du texte, des éléments, des attributs, des objets multimédias ou un mélange de tout.

Un élément DTD est déclaré avec une déclaration ELEMENT. Lorsqu'un fichier XML est validé par DTD, l'analyseur vérifie d'abord l'élément racine, puis les éléments enfants sont validés.

Syntaxe

Toutes les déclarations d'éléments DTD ont cette forme générale -

<!ELEMENT elementname (content)>
  • La déclaration ELEMENT est utilisée pour indiquer l'analyseur que vous êtes sur le point de définir un élément.

  • elementname est le nom de l'élément (également appelé identificateur générique ) que vous définissez.

  • content définit quel contenu (le cas échéant) peut entrer dans l'élément.

Types de contenu d'élément

Le contenu de la déclaration des éléments dans une DTD peut être classé comme suit -

  • Contenu vide

  • Contenu de l'élément

  • Contenu mixte

  • Tout contenu

Contenu vide

Il s'agit d'un cas particulier de déclaration d'élément. Cette déclaration d'élément ne contient aucun contenu. Ceux-ci sont déclarés avec le mot-cléEMPTY.

Syntax

Voici la syntaxe de la déclaration d'élément vide -

<!ELEMENT elementname EMPTY >

Dans la syntaxe ci-dessus -

  • ELEMENTest la déclaration d'élément de catégorie VIDE

  • elementname est le nom de l'élément vide.

Example

Voici un exemple simple démontrant la déclaration d'élément vide -

<?xml version = "1.0"?>

<!DOCTYPE hr[
   <!ELEMENT address EMPTY>    
]>
<address />

Dans cet exemple, l' adresse est déclarée comme un élément vide. Le balisage de l' élément d' adresse apparaîtrait sous la forme <adresse />.

Contenu de l'élément

Dans la déclaration d'élément avec le contenu de l'élément, le contenu serait des éléments autorisés entre parenthèses. Nous pouvons également inclure plus d'un élément.

Syntax

Voici une syntaxe de déclaration d'élément avec le contenu de l'élément -

<!ELEMENT elementname (child1, child2...)>
  • ELEMENT est la balise de déclaration d'élément

  • elementname est le nom de l'élément.

  • child1, child2 .. sont les éléments et chaque élément doit avoir sa propre définition dans la DTD.

Example

L'exemple ci-dessous montre un exemple simple de déclaration d'élément avec le contenu de l'élément -

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>

<!DOCTYPE address [
   <!ELEMENT address (name,company,phone)>
   <!ELEMENT name (#PCDATA)>
   <!ELEMENT company (#PCDATA)>
   <!ELEMENT phone (#PCDATA)>
]>

<address>
   <name>Tanmay Patil</name>
   <company>TutorialsPoint</company>
   <phone>(011) 123-4567</phone>
</address>

Dans l'exemple ci-dessus, address est l'élément parent et name , company et phone_no sont ses éléments enfants.

Liste des opérateurs et règles de syntaxe

Le tableau ci-dessous montre la liste des opérateurs et des règles de syntaxe qui peuvent être appliqués pour définir les éléments enfants -

Opérateur Syntaxe La description Exemple
+ <! ELEMENT nom-élément (enfant1 +)> Cela indique que l'élément enfant peut apparaître une ou plusieurs fois à l'intérieur de l'élément parent.

<! ELEMENT adresse (nom +)>

Le nom d' élément enfant peut apparaître une ou plusieurs fois dans l' adresse du nom d'élément .

* <! ELEMENT nom-élément (enfant1 *)> Cela indique que l'élément enfant peut apparaître zéro ou plusieurs fois à l'intérieur de l'élément parent.

<! ELEMENT adresse (nom *)>

Le nom d' élément enfant peut apparaître zéro ou plusieurs fois dans l' adresse du nom d'élément .

? <! ELEMENT nom-élément (enfant1?)> Cela indique que l'élément enfant peut se produire zéro ou une fois à l'intérieur de l'élément parent.

<! ELEMENT adresse (nom?)>

Le nom d' élément enfant peut apparaître zéro ou une fois dans l' adresse du nom d'élément .

, <! ELEMENT nom-élément (enfant1, enfant2)> Il donne une séquence d'éléments enfants séparés par des virgules qui doivent être inclus dans le nom de l'élément.

<! ELEMENT adresse (nom, société)>

Séquence du nom des éléments enfants , société , qui doit apparaître dans le même ordre à l'intérieur de l' adresse du nom de l'élément .

| <! ELEMENT nom-élément (enfant1 | enfant2)> Il permet de faire des choix dans l'élément enfant.

<! ELEMENT adresse (nom | société)>

Il vous permet de choisir l'un des éléments enfants, c'est-à-dire le nom ou la société , qui doit apparaître à l'intérieur de l' adresse du nom de l'élément .

Règles

Nous devons suivre certaines règles s'il y a plus d'un contenu d'élément -

  • Sequences - Souvent, les éléments des documents DTD doivent apparaître dans un ordre distinct. Si tel est le cas, vous définissez le contenu à l'aide d'une séquence.

    La déclaration indique que l'élément <address> doit avoir exactement trois enfants - <nom>, <company> et <phone> - et qu'ils doivent apparaître dans cet ordre. Par exemple -

<!ELEMENT address (name,company,phone)>
  • Choices- Supposons que vous deviez autoriser un élément ou un autre, mais pas les deux. Dans ce cas, vous devez utiliser le caractère pipe (|). Le tube fonctionne comme un OU exclusif. Par exemple -

<!ELEMENT address (mobile | landline)>

Contenu des éléments mixtes

Il s'agit de la combinaison d'éléments (#PCDATA) et enfants. PCDATA signifie des données de caractères analysées, c'est-à-dire du texte qui n'est pas du balisage. Dans les modèles de contenu mixte, le texte peut apparaître seul ou être intercalé entre les éléments. Les règles des modèles de contenu mixte sont similaires au contenu de l'élément, comme indiqué dans la section précédente.

Syntax

Voici une syntaxe générique pour le contenu d'éléments mixtes -

<!ELEMENT elementname (#PCDATA|child1|child2)*>
  • ELEMENT est la balise de déclaration d'élément.

  • elementname est le nom de l'élément.

  • PCDATAest le texte qui n'est pas un balisage. #PCDATA doit venir en premier dans la déclaration de contenu mixte.

  • child1, child2 .. sont les éléments et chaque élément doit avoir sa propre définition dans la DTD.

  • L'opérateur (*) doit suivre la déclaration de contenu mixte si des éléments enfants sont inclus

  • Les déclarations d'élément (#PCDATA) et enfants doivent être séparées par l'opérateur (|).

Example

Voici un exemple simple illustrant la déclaration d'élément de contenu mixte dans une DTD.

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>

<!DOCTYPE address [
   <!ELEMENT address (#PCDATA|name)*>
   <!ELEMENT name (#PCDATA)>
]>

<address>
   Here's a bit of text mixed up with the child element.
   <name>
      Tanmay Patil
   </name>
</address>

TOUT contenu d'élément

Vous pouvez déclarer un élément à l'aide du mot clé ANY dans le contenu. Il est le plus souvent appelé élément de catégorie mixte. ANY est utile lorsque vous n'avez pas encore décidé du contenu autorisé de l'élément.

Syntax

Voici la syntaxe pour déclarer des éléments avec N'IMPORTE QUEL contenu -

<!ELEMENT elementname ANY>

Ici, le mot clé ANY indique que le texte (PCDATA) et / ou tout élément déclaré dans la DTD peut être utilisé dans le contenu de l'élément <elementname>. Ils peuvent être utilisés dans n'importe quel ordre un nombre de fois illimité. Cependant, le mot clé ANY ne vous permet pas d'inclure des éléments qui ne sont pas déclarés dans la DTD.

Example

Voici un exemple simple démontrant la déclaration d'élément avec N'IMPORTE QUEL contenu -

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>

<!DOCTYPE address [
   <!ELEMENT address ANY>
]>

<address>
   Here's a bit of sample text
</address>