XML - DTD

La déclaration de type de document XML, communément appelée DTD, est un moyen de décrire précisément le langage XML. Les DTD vérifient le vocabulaire et la validité de la structure des documents XML par rapport aux règles grammaticales du langage XML approprié.

Une DTD XML peut être soit spécifiée à l'intérieur du document, soit conservée dans un document séparé puis aimée séparément.

Syntaxe

La syntaxe de base d'une DTD est la suivante -

<!DOCTYPE element DTD identifier
[
   declaration1
   declaration2
   ........
]>

Dans la syntaxe ci-dessus,

  • le DTD commence par le délimiteur <! DOCTYPE.

  • Un element indique à l'analyseur d'analyser le document à partir de l'élément racine spécifié.

  • DTD identifierest un identifiant pour la définition du type de document, qui peut être le chemin vers un fichier sur le système ou l'URL d'un fichier sur Internet. Si la DTD pointe vers un chemin externe, elle est appeléeExternal Subset.

  • The square brackets [ ]inclure une liste facultative de déclarations d'entité appelée sous-ensemble interne .

DTD interne

Une DTD est appelée DTD interne si des éléments sont déclarés dans les fichiers XML. Pour le désigner comme DTD interne, l' attribut autonome dans la déclaration XML doit être défini suryes. Cela signifie que la déclaration fonctionne indépendamment d'une source externe.

Syntaxe

Voici la syntaxe de la DTD interne -

<!DOCTYPE root-element [element-declarations]>

où l' élément racine est le nom de l'élément racine et les déclarations d'élément est l'endroit où vous déclarez les éléments.

Exemple

Voici un exemple simple de DTD interne -

<?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>

Passons en revue le code ci-dessus -

Start Declaration - Commencez la déclaration XML par l'instruction suivante.

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

DTD- Immédiatement après l'en-tête XML, suit la déclaration du type de document , communément appelée DOCTYPE -

<!DOCTYPE address [

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

DTD Body - La déclaration DOCTYPE est suivie du corps de la DTD, où vous déclarez des éléments, des attributs, des entités et des notations.

<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone_no (#PCDATA)>

Plusieurs éléments sont déclarés ici qui composent le vocabulaire du document <nom>. <! ELEMENT name (#PCDATA)> définit le nom de l'élément comme étant de type "#PCDATA". Ici, #PCDATA signifie des données textuelles analysables.

End Declaration - Enfin, la section de déclaration de la DTD est fermée à l'aide d'une parenthèse de fermeture et d'une équerre de fermeture (]>). Cela met effectivement fin à la définition, et par la suite, le document XML suit immédiatement.

Règles

  • La déclaration du type de document doit apparaître au début du document (précédée uniquement de l'en-tête XML) - elle n'est autorisée nulle part ailleurs dans le document.

  • Comme pour la déclaration DOCTYPE, les déclarations d'éléments doivent commencer par un point d'exclamation.

  • Le nom dans la déclaration de type de document doit correspondre au type d'élément de l'élément racine.

DTD externe

Dans la DTD externe, les éléments sont déclarés en dehors du fichier XML. Ils sont accessibles en spécifiant les attributs système qui peuvent être le fichier .dtd légal ou une URL valide. Pour le faire référence comme DTD externe, l' attribut autonome dans la déclaration XML doit être défini commeno. Cela signifie que la déclaration comprend des informations provenant de la source externe.

Syntaxe

Voici la syntaxe pour DTD externe -

<!DOCTYPE root-element SYSTEM "file-name">

nom-fichier est le fichier avec l' extension .dtd .

Exemple

L'exemple suivant montre l'utilisation d'une DTD externe -

<?xml version = "1.0" encoding = "UTF-8" standalone = "no" ?>
<!DOCTYPE address SYSTEM "address.dtd">
<address>
   <name>Tanmay Patil</name>
   <company>TutorialsPoint</company>
   <phone>(011) 123-4567</phone>
</address>

Le contenu du fichier DTD address.dtd est comme indiqué -

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

Les types

Vous pouvez faire référence à une DTD externe en utilisant soit system identifiers ou public identifiers.

Identificateurs système

Un identifiant système vous permet de spécifier l'emplacement d'un fichier externe contenant les déclarations DTD. La syntaxe est la suivante -

<!DOCTYPE name SYSTEM "address.dtd" [...]>

Comme vous pouvez le voir, il contient le mot-clé SYSTEM et une référence URI pointant vers l'emplacement du document.

Identifiants publics

Les identificateurs publics fournissent un mécanisme pour localiser les ressources DTD et sont écrits comme suit -

<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">

Comme vous pouvez le voir, il commence par le mot-clé PUBLIC, suivi d'un identifiant spécialisé. Les identificateurs publics sont utilisés pour identifier une entrée dans un catalogue. Les identifiants publics peuvent suivre n'importe quel format, cependant, un format couramment utilisé est appeléFormal Public Identifiers, or FPIs.