Introduction
Un document XML doit être bien formé, c’est-à-dire, on peut le parser pour en extraire l’arbre correspondant. Mais un document XML n’est en général pas un arbre arbitraire: il encode une donnée structurée d’un langage particulier.
Exemple : un arbre HTML commence obligatoirement par une racine <html> qui a deux fils (et uniquement deux fils) <head> et <body> : Il s’agit de la grammaire (ou du schéma) du langage XHTML.
Un schéma décrit donc
- Un vocabulaire: ensemble de noms de balises et d’attributs
- Une structure: comment les choses sont agencées les unes aux autres (hiérarchisation des données)
Pour décrire la structure d’un document XML, on peut utiliser les DTDs (Document Type Definitions) ou les Schémas xml (XSD)
Afin de mieux distinguer entre un document xml bien formé et un document valide, on vous propose la vidéo suivante :
DTD : Document Type Definition
Une DTD (Document Type Definition) est une forme de grammaire relativement ancienne. La syntaxe d’une DTD n’est pas à base de balise mais à base d’instructions, selon la syntaxe <!INSTRUCTION…> . Une DTD peut être interne ou externe au document XML.
- Déclaration d’une DTD externe
Dans chaque document XML, une référence vers la DTD externe est insérée par l’instruction d’en-tête DOCTYPE.
Exemples :
– fichier local :
<?xml version="1.0"?> <!DOCTYPE livres SYSTEM "reg.dtd"> <livres> … </livres>
– url :
<?xml version="1.0"?> <!DOCTYPE livres SYSTEM "http://www..../.../reg.dtd" "> <livres> … </livres>
- Déclaration d’une DTD interne
Syntaxe : <!DOCTYPE root-element [ declarations ]>
Exemple : document xml avec dtd interne
<?xml version="1.0"?> <!DOCTYPE note [ <!ELEMENT note (de,a,type,message)> <!ELEMENT a (#PCDATA)> <!ELEMENT de (#PCDATA)> <!ELEMENT type (#PCDATA)> <!ELEMENT message (#PCDATA)> ]> <note> <de>Formatrice</de> <a>stagiaire</a> <type>Rappel</type> <message>N’oublie pas de réviser ton cours</message> </note>
Structure d'une DTD
Une DTD permet essentiellement de spécifier les noms, les contenus et les attributs des éléments qui
composent le fichier XML visé.
– Définition des éléments :
Un élément (balise en xml) est exprimé selon la syntaxe suivante : <!ELEMENT nomElément contenu >
Avec :
– nomElément est le nom de l’élément;
– contenu indique le type de données ou les éléments qui doivent ou peuvent être imbriqués. Le contenu
peut être un :
- Contenu textuel : #PCDATA (Parsed Character Data) . Exemple : <!ELEMENT PRENOM (#PCDATA)>
- Vide : Empty . Exemple : < !ELEMENT BR EMPTY>
- Aléatoire : ANY ( l’élément peut contenir n’importe quel élément présent dans la DTD). Exemple: < !ELEMENT adresse ANY>
- Séquence d’éléments suite de noms d’éléments séparés par des virgules. L’ordre doit être respecté . Exemple : <!ELEMENT NOMComplet (NOM,PRENOM+)>
- Choix : suite de noms d’éléments séparés par des barres verticales “|” : Exemple : <!ELEMENT NOMComplet (NOM|PRENOM+)>
- Mélange : Contenu variable <!ELEMENT tes (NOM|#PCDATA)>
Remarque : indicateurs d’occurrences
Les contenus peuvent avoir l’un des indicateurs d’occurrences suivants :
- “*” : Une occurrence quelconque (0 ou plus).
- “+” : Une occurrence quelconque (1 ou plus).
- “?” : 0 ou 1 occurrence.
On vous propose une vidéo très importante où nous expliquons (En darija Marocaine) cette partie de cours :
Et voilà, c’est votre tours. On vous propose des exercices sur cette partie de cours : exercices sur DTD (TP1)
Vous pouvez suivre notre cours complet d’XML . pour approfondir vos compétences sur la création et la manipulation des documents xml, dtd, xsd,xpath, xslt.
Aussi, vous avez une playlist des vidéos (Explication en Darija arabe marocaine) bien organisée qui traite : XML DTD XSD XSLT XPATH