Développement Web PDF Gratuit

Cours PDF XML et DTD : Maîtriser les Bases (Débutant)

XML (eXtensible Markup Language) est une recommandation du W3C conçue pour représenter des données structurées ; la DTD (Document Type Definition) définit la structure attendue d'un document XML et sert de contrat de validation. Ce support présente les concepts fondamentaux pour comprendre la syntaxe XML, l'utilisation d'une DTD et la validation de documents dans un contexte d'échanges inter-applicatifs. Rédigé par Nicolas Martin.

🎯 Ce que vous allez apprendre

  • Syntaxe XML : balises, attributs, commentaires et règles de formation.
  • Définition DTD : structurer vos documents et définir les éléments autorisés.
  • Éléments optionnels et obligatoires : gérer la présence d'éléments et d'attributs.
  • Exemples pratiques : cas concrets d'utilisation pour valider des données avec une DTD.

Pourquoi apprendre XML et les DTD aujourd'hui ?

La structuration des données reste centrale pour les échanges entre systèmes (API, fichiers de configuration, transformations XSLT). XML conserve un intérêt pour son indépendance de plateforme et sa lisibilité, tandis que la DTD impose des règles simples de structure et de contrôle. Ces connaissances facilitent l'interopérabilité, la vérification automatisée des flux et la compréhension de mécanismes voisins (XSD, XPath).

Concepts clés abordés dans ce support

  • Prologue XML : la déclaration initiale, par exemple <?xml version="1.0" encoding="UTF-8"?>, qui précise la version et l'encodage du document.
  • Élément racine : l'élément unique contenant toute l'arborescence, indispensable à un document bien formé.
  • Déclaration DOCTYPE : l'instruction liant le document à sa DTD (interne ou externe) via <!DOCTYPE>, utilisée pour la validation et la définition des entités.

Les entités et notations XML

Les entités fournissent des raccourcis textuels ou permettent d'inclure des contenus externes. On distingue les entités internes, définies dans la DTD, et les entités externes, qui référencent une ressource externe. Les entités paramétriques, accessibles dans la DTD, servent à factoriser des portions de définition réutilisables. Les notations associent des formats non‑XML (images, binaires) à des entités externes afin d'indiquer leur traitement par des applications.

  • Entités internes : &copy; ou via <!ENTITY nom "valeur">.
  • Entités externes : déclaration référant une ressource externe (fichier ou URI).
  • Notations : identifient le format d'une entité non‑XML (ex. images, binaires).

Structure d'un document XML et rôle de la DTD

Un document XML contient un prologue, un élément racine et une arborescence d'éléments et d'attributs. La DTD décrit la structure attendue : quels éléments existent, leur ordre, leur cardinalité (obligatoire ou optionnel), ainsi que les entités et les attributs. La DTD sert à la fois de documentation formelle et de mécanisme de contrôle, permettant d'assurer la cohérence des données échangées entre applications.

Détails des déclarations d'attributs (ATTLIST)

La déclaration d'attributs dans une DTD précise le nom de l'attribut, son type et sa valeur par défaut. Elle est essentielle pour contrôler la présence et le format des attributs sur un élément. Les valeurs par défaut peuvent imposer la présence d'un attribut ou la rendre optionnelle, et le parseur XML utilisera ces règles lors de la validation.

Les types d'attributs dans la DTD

  • CDATA : texte libre ; l'attribut accepte tout contenu de caractères (Character Data).
  • ID : identifiant unique dans le document ; utile pour référencer un élément via IDREF.
  • IDREF : référence à un attribut de type ID présent ailleurs dans le même document.
  • Énumérations : liste de valeurs possibles, par exemple (small | medium | large), limitant l'attribut à ces valeurs.
<!ATTLIST element_name attr_name attr_type default_value>

Exemples de valeurs par défaut courantes :

  • #REQUIRED : l'attribut doit être présent.
  • #IMPLIED : l'attribut est optionnel.
  • Une valeur explicite, ex. "en", qui devient la valeur par défaut si l'attribut est absent.

Exemple de déclaration d'élément DTD

<!ELEMENT note (to, from, heading, body)>

Exemple complet et auto‑porteur avec DTD interne :

<!DOCTYPE note [
  <!ELEMENT note (to,from,heading,body)>
  <!ELEMENT to (#PCDATA)>
  <!ELEMENT from (#PCDATA)>
  <!ELEMENT heading (#PCDATA)>
  <!ELEMENT body (#PCDATA)>
  <!ATTLIST body lang CDATA #IMPLIED>
  <!ENTITY signature "Auteur: Nicolas Martin">
]>

<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body lang="en">Don't forget me this weekend! &signature;</body>
</note>

Document bien formé vs Document valide

Un document bien formé respecte la syntaxe XML : un seul élément racine, balises correctement imbriquées et fermées, et un prologue valide. Un document valide, en plus d'être bien formé, respecte les contraintes imposées par une DTD ou un schéma : ordre des éléments, cardinalité, types d'attributs et entités attendues. La validation détecte des erreurs structurelles et assure la conformité aux spécifications attendues.

Comparaison : bien formé vs valide
Critère Document bien formé Document valide
Structure Un seul élément racine, balises imbriquées correctement Structure conforme à la DTD ou au schéma
Syntaxe Respecte la grammaire XML Respecte la grammaire et les contraintes définies
Attributs Attributs bien formés mais sans vérification de contraintes Attributs conformes aux déclarations ATTLIST (types, valeurs par défaut)
Validation Non obligatoire Requise pour confirmer la conformité

Différence entre XML et XML Schema (XSD)

La DTD est un mécanisme ancien et simple pour définir la structure ; elle présente des limites pour la définition fine des types de données. XML Schema (XSD) offre des contraintes plus sophistiquées, la gestion des namespaces et des types complexes. Ce support se concentre sur les bases avec DTD pour comprendre les principes ; XSD est indiqué comme voie d'approfondissement ultérieure.

XHTML et DTD

XHTML, en tant que reformulation de HTML en XML, exige une DTD adaptée pour que les documents soient reconnus comme conformes. Les variantes Strict et Transitional reflètent des contraintes différentes : la DTD Strict retire les éléments dépréciés, tandis que la DTD Transitional autorise une rétrocompatibilité avec des pratiques antérieures. La présence d'une déclaration ATTLIST, la distinction PCDATA vs CDATA pour certains éléments, et l'utilisation d'entités paramétriques sont des facteurs importants lors de la validation par un parseur XML.

Cas pratique : Créer une DTD externe

Séparer la DTD du contenu XML permet de réutiliser une même définition pour plusieurs documents et de centraliser les règles. La DTD externe est stockée dans un fichier .dtd et référencée depuis le document XML via la déclaration DOCTYPE. Cette séparation facilite la maintenance et l'intégration dans des chaînes de traitement où le même parseur applique des règles communes à plusieurs sources.

Exemples de validation avec DTD externe

Pour référencer une DTD externe, on place une déclaration DOCTYPE pointant vers le fichier DTD. Un parseur XML configuré pour la validation charge la DTD externe et applique ses règles pour signaler les écarts structurels ou d'attributs. Les outils en ligne de commande et les bibliothèques (Java, Python, etc.) offrent des modes "validating" destinés à cette tâche.

<!DOCTYPE note SYSTEM "note.dtd">
<note> ... </note>

Conformité aux standards du W3C

Les spécifications du W3C définissent les règles et bonnes pratiques pour XML et les DTD. Se référer aux documents officiels garantit une base normative et favorise l'interopérabilité entre outils et parseurs. Pour approfondir, consulter la recommandation officielle : W3C — Recommandation XML.

👤 À qui s'adresse ce cours ?

  • Étudiants en informatique souhaitant comprendre les bases du balisage et de la validation.
  • Développeurs web et back‑end qui manipulent des flux XML ou des fichiers de configuration.
  • Analystes de données confrontés à des échanges structurés et à des contraintes d'interopérabilité.
  • Prérequis : notions de base en informatique (fichiers texte, structure arborescente) ou connaissances élémentaires en HTML.