« DTD » : différence entre les versions

De EduTech Wiki
Aller à la navigation Aller à la recherche
mAucun résumé des modifications
 
(32 versions intermédiaires par 10 utilisateurs non affichées)
Ligne 3 : Ligne 3 :
== Définition ==
== Définition ==


'''Document Type Definition (DTD)''' est un langage de schéma pour SGML et [[XML]]. Une DTD représente une structure/grammaire. Elle définit les entités, les éléments et leurs contenus et les attributs des éléments.
'''Document Type Definition (DTD)''' est un langage de schéma pour SGML (Standard Generalized Markup Langage) et [[XML]]. Il s'agit de la définition de la structure d'un document, éléments, attributs qui sont autorisés ainsi que le type de contenu ou attributs permis. On peut dire que c'est la grammaire du document. Elle a été introduite dans la norme SGML de 1986. La DTD détermine le vocabulaire et la structure d'un document. Elle est caractérisée par un certain nombre de règles et contraintes à respecter pour permettre à un document d'être valide.
Elle définit l'ordre des éléments, leurs imbrications mais également si un élément ou attribut est obligatoire ou à choix.  
Ces contraintes définissent les éléments, les attributs et les entités pouvant apparaître dans le document, ainsi que la relation entre éléments et attributs, leurs ordres et la fréquence à laquelle ils pourront apparaître. La déclaration d’élément stipule son contenu, la déclaration d'attribut spécifie les attributs qui s'appliquent à un élément (par exemple, s'il est obligatoire ou facultatif).
Il est fortement conseillé de commenter les DTD pour qu'elles puissent être comprises et qu'elles soient reproductibles.


Une DTD peut être inclue dans un document XML de cette manière <!DOCTYPE name SYSTEM "travaux.dtd" [déclaration]>  
Une DTD peut être incluse dans un document XML :
* name = nom du type de document
  <!DOCTYPE name SYSTEM "travaux.dtd" [déclaration]>  
* name         = nom du type de document
* SYSTEM ".dtd" = référence vers un fichier DTD qui contient tout ou une partie de la DTD.
* SYSTEM ".dtd" = référence vers un fichier DTD qui contient tout ou une partie de la DTD.
* [déclaration] = DTD interne au xml. Cette partie peut contenir la totalité de la DTD ou seuleument une partie.
* [déclaration] = DTD interne au xml. Cette partie peut contenir la totalité de la DTD ou seulement une partie.


La DTD peut également être externe au document XML et être référencée à l'aide de : <!DOCTYPE nom_du_type_de_docmuent SYSTEM "fichierDTD.dtd">
La DTD peut également être externe au document XML et être référencée :  
<!DOCTYPE nom_du_type_de_docmuent SYSTEM "fichierDTD.dtd">


La validité d’un document xml est être vérifiée par rapport à la DTD qu’il référence ou qu’il inclut. On parlera alors de document XML valide.
La validité d’un document XML est au regard de la DTD qu’il référence ou qu’il inclut. On parlera alors de document XML valide.
Un document doit être conforme aux spécifications définies dans la DTD qui lui est associée avant qu'il puisse être traité pour l'affichage.
Un document doit être conforme aux spécifications définies dans la DTD qui lui est associée afin qu'il puisse être traité pour l'affichage.


Voir aussi: [[Tutoriel_DTD]]
Voir aussi: [[Tutoriel_DTD]]


== Structure ==
== Ingrédients d'une DTD ==
Les DTD sont composées d'entités, d'éléments et de leur contenu, des attributs des éléments et des commentaires.


===Les entités===
===Les entités===
* Il s'agit d'un couple : nom,valeur
 
* Il existe des entités internes. Elles ont des valeurs de chaînes de caractères et sont utilisées comme moyen d’abréviation. ex: &amp ; (amp, &) (&amp est le caratère HTML pour représenter '&'
* Il s'agit d'un couple : nom, valeur
* Il existe des entités internes. Elles ont des valeurs de chaînes de caractères et sont utilisées comme moyen d’abréviation. ex: &amp ; (amp, &) (&amp est le caractère HTML pour représenter '&'
* Les entités externes de type XML sont utilisées pour segmenter un document.
* Les entités externes de type XML sont utilisées pour segmenter un document.
* Déclaration : < !ENTITY nom « valeur »>
* Déclaration : < !ENTITY nom « valeur »>
* Exemple entité externe :  
* Exemple entité externe :  
                        <!DOCTYPE livre [
<source lang="XML">
                        <!ENTITY chapitre-1 SYSTEM "./chap1.xml">  les 2 entités séparent le livre
  <!DOCTYPE livre [
                        <!ENTITY chapitre-2 SYSTEM "./chap2.xml">
  <!ENTITY chapitre-1 SYSTEM "./chap1.xml">  les 2 entités séparent le livre
                        ]>
  <!ENTITY chapitre-2 SYSTEM "./chap2.xml">
  ]>
  <livre>
    &chapitre-1;                            code XML utilisant les entités
    &chapitre-2;
  </livre>
</source>
 
=== Les éléments ===


                        <livre>
* Déclaration des éléments :
                            &chapitre-1;                            code XML utilisant les entités
                            &chapitre-2;
                        </livre>


< !ELEMENT nom modèle>
            nom = nom de l'élément
            modèle = définit le type du contenu de l'élément


=== Les éléments ===
'''Contenu d'un élément''':
*Les '''éléments''' définissent quel type de données, comment et si elles peuvent être présentes à l'intérieur d'autres éléments définis.
 
*Les '''listes d'attributs''' définissent les attributs permis pour chaque élément ainsi que leur type.
Chaque élément doit être défini par un contenu pour qu'il soit utilisable. Différents contenus sont possibles:
* Un ou plusieurs éléments "enfants": pour le décrire, il suffit de donner leur nom entre parenthèse. Ex :<!ELEMENT livre (titre)>
* Des données libres (chaîne de caractères) : définit avec #PCDATA. Ex : <!ELEMENT nom (#PCDATA)>
* Un mélange d'éléments "enfants" et de données est également possible : Ex : <!ELEMENT commentaire ( ul | #PCDATA)>
* Éléments vides
 
Si l'ordre dans lequel il faut insérer les éléments est important, il faut les séparer avec des virgules ',' sinon il faut les séparer avec des barres verticales '|'.
 
'''Multiplicité des fils''' :
Pour définir les spécificités propres aux éléments, il convient d'ajouter les signes suivants:
* fils = l'élément ne doit être inséré qu'une et une seule fois
* fils? = l'élément est facultatif mais s'il est présent il ne doit l'être qu'une seule fois (0 ou 1 fois)
* fils* = l'élément est une option et peut être utilisé 0, 1 ou plusieurs fois
* fils+ = l'élément doit être inséré au moins 1 fois sans limite maximale
* (fils, fille)* = les éléments peuvent être regroupés dans des parenthèses pour éviter la répétition.
 
===Les attributs===
 
La déclaration : < !ATTLIST element (attribut type default)>
* element : correspond au nom de l'élément qui contient l'attribut
* attribut : correspond au nom de l'attribut
* type : type de l'attribut soit CDATA (chaîne de caractère) soit une entité
* default: contient des indications sur la valeur par défaut de l'attribut. Cette valeur peut être : #required (valeur obligatoire), #implied (optionnel) ou #fixed (l'attribut est une constante)
 
==Exemple de document valide==
 
Vous pouvez trouver des validateurs de DTD sur le web, par exemple [http://www.validome.org/grammar/validate/].


Par exemple, le document XML suivant est valide selon la DTD définie plus bas.
Par exemple, le document XML suivant est valide selon la DTD définie plus bas.
<code>
 
<?xml version="1.0" encoding="UTF-8"?>
<source lang="XML">
<!DOCTYPE liste_personnes SYSTEM "exemple.dtd">
      <?xml version="1.0" encoding="UTF-8"?>
<personnes>
      <!DOCTYPE liste_personnes SYSTEM "exemple.dtd">
  <individu sexe="femme">
      <personnes>
      <nom>
      <individu sexe="femme">
        <nom>
         <prenom>Jane</prenom>
         <prenom>Jane</prenom>
         <deuxieme_n>Jean</deuxieme_n>
         <deuxieme_n>Jean</deuxieme_n>
Ligne 54 : Ligne 92 :
         <n_jeunefille></n_jeunefille>
         <n_jeunefille></n_jeunefille>
       </nom>
       </nom>
  </individu>
    </individu>
<personnes>
    </personnes>
</code>
</source>


DTD correspondante:
DTD correspondante:
<code>  
<source lang="XML">  
<!ELEMENT personnes (individu*)> //* une ou plusieurs personnes doivent apparaître dans cette liste
    <!ELEMENT personnes (individu*)> // une ou plusieurs personnes doivent apparaître dans cette liste
<!ELEMENT individu (nom)> // l'élément individu doit avoir exactement un élément nom
    <!ELEMENT individu (nom)> // l'élément individu doit avoir un seul élément nom
<!ATTLIST individu  sexe CDATA #REQUIRED> //l'élément personne doit avoir un attribut sexe
    <!ATTLIST individu  sexe CDATA #REQUIRED> //l'élément personne doit avoir un attribut sexe
<!ELEMENT nom (prenom, deuxieme_n?, n_famille, n_jeunefille?)> //le deuxième nom et le nom de jeune fille sont optionnels
    <!ELEMENT nom (prenom, deuxieme_n?, n_famille, n_jeunefille?)> //le deuxième nom et le nom de jeune fille  
<!ELEMENT prenom (#PCDATA)>
                                                                    sont optionnels
<!ELEMENT deuxieme_n (#PCDATA)>
    <!ELEMENT prenom (#PCDATA)>
<!ELEMENT n_famille (#PCDATA)>
    <!ELEMENT deuxieme_n (#PCDATA)>
<!ELEMENT n_jeunefille (#PCDATA)>
    <!ELEMENT n_famille (#PCDATA)>code
</code>
    <!ELEMENT n_jeunefille (#PCDATA)>
</source>
 
==Différence entre DTD, HTML et CSS==
La DTD et le code XML décrivent le contenu et ses expressions syntaxiques. Il s'agit d'un langage descriptif. Ils ne permettent pas de décrire la forme ou le style contrairement au code [[HTML]] ou [[XHTML]] qui fournissent des options de formatage.


Ni le code XML ni la DTD définissent le style des documents. Ils décrivent le contenu et leurs expressions syntactique (langage descriptif), et non pas leur forme ou style (contrairement à l'[[HTML | HTML]] ou à l'[[XHTML]] qui fournissent des options de formatage base. Le style et la format du document est défini lors du traitement (par exemple grâce à [[CSS]] ou [[XSLT]]).
Le style et le format du document sont définis lors du traitement grâce au [[CSS]] ou [[Tutoriel XSLT débutant|XSLT]].


Des logiciels d'interprétation peuvent être utilisés pour transformer le document "structuré" en différents formats y compris des pages web en HTML (hypertext markup language) ou directement en [[XML]] (extensible markup language).
Des logiciels d'interprétation peuvent être utilisés pour transformer le document "structuré" en différents formats y compris des pages web en HTML (hypertext markup language) ou directement en [[XML]] (extensible markup language).
Ligne 83 : Ligne 125 :
== Utilisation des DTD dans l'éducation ==
== Utilisation des DTD dans l'éducation ==


{{commentaire| cette section nécessite une vérification du jargon employé par rapport à la version anglaise}}[[User:turri0|turri0]]
{{commentaire| cette section nécessite une vérification du jargon employé par rapport à la version anglaise}}


Les DTD et les autres langages de schéma se prêtent en particulier à certaines activités d'enseignement et à des scénarios pédagogiques où l'on construit individuellement ou en collaboration des [[représentation de la connaissance|représentations de la connaissance]] et des besoins, de la création d'[[ontologie|ontologies]] ou la définition de rubriques.
Les DTD et les autres langages de schéma se prêtent particulièrement bien à certaines activités d'enseignement et à des scénarios pédagogiques qui impliquent la construction individuelle ou en collaboration des [[représentation de la connaissance|représentations de la connaissance]] et des besoins, de la création d'[[ontologie|ontologies]] ou la définition de rubriques.


;Exemple:
Par exemple, le département d'Anglais de l'University of Georgia a demandé à ses étudiants en rédaction de créer, en collaborant entre eux, leurs propres DTD à partir de patrons décrivant les composants et les critères d'évaluation pour différents genres littéraires comme l'écriture argumentative, narrative ou encore l'exposé.
Le département d'Anglais de la University of Georgia a demandé à ses étudiants en rédaction de créer, en collaborant entre eux, leurs propres DTD à partir de patrons décrivant les composants et les critères d'évaluation pour différents genre littéraires comme l'écriture argumentative, narrative ou l'exposé.


Les langages pour la modélisation dans le cadre de l'éducation sont plutôt définies avec Relax NG ou XML Schema.
Les langages pour la modélisation dans le cadre de l'éducation sont plutôt définis avec Relax NG ou XML Schema.


==References==
==References==
* [http://en.wikipedia.org/wiki/Document_Type_Definition Wikipedia: Document Type Definition]
* [http://en.wikipedia.org/wiki/Document_Type_Definition Wikipedia: Document Type Definition]
* Lavignasse, S. (2005). La DTD et son langage XML: Une application pour la lexicographie contemporaine. Éla. Études de linguistique appliquée, 1(1), 73-94. https://doi.org/10.3917/ela.137.0073
* Paille, G. Open School (A Division of the Open Learning Agency)British Columbia, Canada [http://netcamp.prn.bc.ca/sgml/naweb2.html]
* Paille, G. Open School (A Division of the Open Learning Agency)British Columbia, Canada [http://netcamp.prn.bc.ca/sgml/naweb2.html]


[[Category: XML]]
[[Category: XML]]
[[Category: Standards]]
[[Category: Standards]]

Dernière version du 6 juin 2021 à 14:50

Définition

Document Type Definition (DTD) est un langage de schéma pour SGML (Standard Generalized Markup Langage) et XML. Il s'agit de la définition de la structure d'un document, éléments, attributs qui sont autorisés ainsi que le type de contenu ou attributs permis. On peut dire que c'est la grammaire du document. Elle a été introduite dans la norme SGML de 1986. La DTD détermine le vocabulaire et la structure d'un document. Elle est caractérisée par un certain nombre de règles et contraintes à respecter pour permettre à un document d'être valide. Ces contraintes définissent les éléments, les attributs et les entités pouvant apparaître dans le document, ainsi que la relation entre éléments et attributs, leurs ordres et la fréquence à laquelle ils pourront apparaître. La déclaration d’élément stipule son contenu, la déclaration d'attribut spécifie les attributs qui s'appliquent à un élément (par exemple, s'il est obligatoire ou facultatif). Il est fortement conseillé de commenter les DTD pour qu'elles puissent être comprises et qu'elles soient reproductibles.

Une DTD peut être incluse dans un document XML :

 <!DOCTYPE name SYSTEM "travaux.dtd" [déclaration]> 
  • name = nom du type de document
  • SYSTEM ".dtd" = référence vers un fichier DTD qui contient tout ou une partie de la DTD.
  • [déclaration] = DTD interne au xml. Cette partie peut contenir la totalité de la DTD ou seulement une partie.

La DTD peut également être externe au document XML et être référencée :

<!DOCTYPE nom_du_type_de_docmuent SYSTEM "fichierDTD.dtd">

La validité d’un document XML est au regard de la DTD qu’il référence ou qu’il inclut. On parlera alors de document XML valide. Un document doit être conforme aux spécifications définies dans la DTD qui lui est associée afin qu'il puisse être traité pour l'affichage.

Voir aussi: Tutoriel_DTD

Ingrédients d'une DTD

Les entités

  • Il s'agit d'un couple : nom, valeur
  • Il existe des entités internes. Elles ont des valeurs de chaînes de caractères et sont utilisées comme moyen d’abréviation. ex: &amp ; (amp, &) (&amp est le caractère HTML pour représenter '&'
  • Les entités externes de type XML sont utilisées pour segmenter un document.
  • Déclaration : < !ENTITY nom « valeur »>
  • Exemple entité externe :
   <!DOCTYPE livre [
   <!ENTITY chapitre-1 SYSTEM "./chap1.xml">   les 2 entités séparent le livre
   <!ENTITY chapitre-2 SYSTEM "./chap2.xml">
   ]>
   <livre>
    &chapitre-1;                             code XML utilisant les entités
    &chapitre-2;
   </livre>

Les éléments

  • Déclaration des éléments :
< !ELEMENT nom modèle>
           nom = nom de l'élément
           modèle = définit le type du contenu de l'élément

Contenu d'un élément:

Chaque élément doit être défini par un contenu pour qu'il soit utilisable. Différents contenus sont possibles:

  • Un ou plusieurs éléments "enfants": pour le décrire, il suffit de donner leur nom entre parenthèse. Ex :<!ELEMENT livre (titre)>
  • Des données libres (chaîne de caractères) : définit avec #PCDATA. Ex : <!ELEMENT nom (#PCDATA)>
  • Un mélange d'éléments "enfants" et de données est également possible : Ex : <!ELEMENT commentaire ( ul | #PCDATA)>
  • Éléments vides

Si l'ordre dans lequel il faut insérer les éléments est important, il faut les séparer avec des virgules ',' sinon il faut les séparer avec des barres verticales '|'.

Multiplicité des fils : Pour définir les spécificités propres aux éléments, il convient d'ajouter les signes suivants:

  • fils = l'élément ne doit être inséré qu'une et une seule fois
  • fils? = l'élément est facultatif mais s'il est présent il ne doit l'être qu'une seule fois (0 ou 1 fois)
  • fils* = l'élément est une option et peut être utilisé 0, 1 ou plusieurs fois
  • fils+ = l'élément doit être inséré au moins 1 fois sans limite maximale
  • (fils, fille)* = les éléments peuvent être regroupés dans des parenthèses pour éviter la répétition.

Les attributs

La déclaration : < !ATTLIST element (attribut type default)>

  • element : correspond au nom de l'élément qui contient l'attribut
  • attribut : correspond au nom de l'attribut
  • type : type de l'attribut soit CDATA (chaîne de caractère) soit une entité
  • default: contient des indications sur la valeur par défaut de l'attribut. Cette valeur peut être : #required (valeur obligatoire), #implied (optionnel) ou #fixed (l'attribut est une constante)

Exemple de document valide

Vous pouvez trouver des validateurs de DTD sur le web, par exemple [1].

Par exemple, le document XML suivant est valide selon la DTD définie plus bas.

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE liste_personnes SYSTEM "exemple.dtd">
      <personnes>
       <individu sexe="femme">
        <nom>
         <prenom>Jane</prenom>
         <deuxieme_n>Jean</deuxieme_n>
         <n_famille>Doe</n_famille>
         <n_jeunefille></n_jeunefille>
      </nom>
     </individu>
    </personnes>

DTD correspondante:

 
    <!ELEMENT personnes (individu*)> // une ou plusieurs personnes doivent apparaître dans cette liste
    <!ELEMENT individu (nom)> // l'élément individu doit avoir un seul élément nom
    <!ATTLIST individu  sexe CDATA #REQUIRED> //l'élément personne doit avoir un attribut sexe
    <!ELEMENT nom (prenom, deuxieme_n?, n_famille, n_jeunefille?)> //le deuxième nom et le nom de jeune fille 
                                                                     sont optionnels
    <!ELEMENT prenom (#PCDATA)>
    <!ELEMENT deuxieme_n (#PCDATA)>
    <!ELEMENT n_famille (#PCDATA)>code
    <!ELEMENT n_jeunefille (#PCDATA)>

Différence entre DTD, HTML et CSS

La DTD et le code XML décrivent le contenu et ses expressions syntaxiques. Il s'agit d'un langage descriptif. Ils ne permettent pas de décrire la forme ou le style contrairement au code HTML ou XHTML qui fournissent des options de formatage.

Le style et le format du document sont définis lors du traitement grâce au CSS ou XSLT.

Des logiciels d'interprétation peuvent être utilisés pour transformer le document "structuré" en différents formats y compris des pages web en HTML (hypertext markup language) ou directement en XML (extensible markup language).

Voir le Tutoriel_DTD pour plus de détails.

Alternatives

  • XML Schema - un standard W3C
  • Relax NG - un langage de schéma plus facile et plus intuitif par rapport à l'XML

Utilisation des DTD dans l'éducation

Les DTD et les autres langages de schéma se prêtent particulièrement bien à certaines activités d'enseignement et à des scénarios pédagogiques qui impliquent la construction individuelle ou en collaboration des représentations de la connaissance et des besoins, de la création d'ontologies ou la définition de rubriques.

Par exemple, le département d'Anglais de l'University of Georgia a demandé à ses étudiants en rédaction de créer, en collaborant entre eux, leurs propres DTD à partir de patrons décrivant les composants et les critères d'évaluation pour différents genres littéraires comme l'écriture argumentative, narrative ou encore l'exposé.

Les langages pour la modélisation dans le cadre de l'éducation sont plutôt définis avec Relax NG ou XML Schema.

References