Document valide
Un document XML est dit
"valide" s'il est
"bien formé" et qu'il possède une DTD (Document Type Definition).
L'utilisation d'une DTD est facultative mais nécessaire si l'on souhaite valider un document XML.
DTD ! et quécécé ???
La DTD permet de définir un ensemble de règles pour la structure d'un document XML et la hiérarchisation des données. C'est dans le DTD que l'on définit les balises (éléments ou nœuds) pouvant être utilisées dans le document XML, auxquelles on pourra éventuellement adjoindre une définition d'attributs typés et valués. La DTD est tout simplement un modèle servant à définir votre langage de balises.
Une DTD peut être interne ou externe à un document XML.
Le langage utilisé pour définir une DTD est le SGML.
Pour saisir un des atouts de l'utilisation d'une DTD, imaginons que plusieurs développeurs travaillent à l'élaboration de ma librairie sans concertation. Chacun ayant terminé sa part, on regroupe les différents travaux. Malheureusement, certains développeurs ont ajouté un
S à ma balise
<livres></livres> et d'autres l'ont nommée
<œuvre></œuvre> ! Alors comment extraire les bonnes informations dans cet imbroglio ?
Si mon équipe de développeurs avait utilisé une même DTD avec des règles définies, et vérifié la validité de ses travaux XML avec un parser validant, il n'y aurait pas eu de malentendu et mon outil de gestion de librairies fonctionnerait correctement.
Arrivé à ce niveau, il me paraît opportun de vous fournir les indications suivantes :
- Pour vérifier la validité d'un document XML par rapport à sa DTD, il vous faut un parseur validant.
MSIE est un parseur non-validant ce qui veut dire qu'il ne vérifie pas la conformité d'un document
XML avec sa DTD.
- Toutefois, il est possible de rendre MSIE validant avec l'aide d'un petit utilitaire de Microsoft :
IE Tools for Validating XML and Viewing XSLT Output.
Vous trouverez cet outil en téléchargement sur le site MSDN de Microsoft France
dans la rubrique Technos XML.
Structure d'une DTD
Comme je le mentionnais dans la section précédente, on peut déclarer une DTD soit en interne soit en externe.
-
Une DTD externe doit être enregistrée dans un fichier texte portant l'extension
.dtd. La déclaration de l'utilisation d'une DTD externe doit se faire avant l'élément racine et après le prologue. Elle est introduite dans le document XML par l'instruction
DOCTYPE immédiatement suivie par le nom que porte l'élément racine, suivi par l'instruction
SYSTEM, suivie par l'URI du fichier de la DTD encadrée par des guillemets.
<!DOCTYPE nœudracine SYSTEM "URI">
Dans un même document XML, il est possible d'utiliser ensemble une DTD interne et une DTD externe.
Dans ce cas, la déclaration DOCTYPE prend la forme suivante :
<!DOCTYPE nœudracine SYSTEM "URI DTD externe" [
instructions DTD interne
]>
La DTD externe est toujours traitée après la DTD interne.