Définitions de types de documents : DTD
Transcription
Définitions de types de documents : DTD
Définitions de types de documents : DTD Plan 1.Rappels 2.Type de documents 3.Définition de types de documents (DTD) 4.Syntaxe des DTD 5.Utilisation des DTD ● Référence : Extensible Markup Language (XML) 1.0 (Second Edition) http://www.w3.org/TR/2000/REC-xml-20001006 Rappels ● Rappels sur la syntaxe des documents XML bien formés : – Les éléments, les attributs et leurs valeurs ne sont pas fixés – L'assemblage des attributs et éléments dans la structure arborescente d'un document est libre ● Insuffisant pour représenter un document avec précision ● On a intérêt à : – utiliser des éléments bien définis, adaptés au type du document – utiliser des attributs bien définis, adaptés aux éléments qu'ils qualifient – contraindre les relations structurales entre éléments – contraindre les associations éléments-attributs Exemple <article> <auteur type="principal"> Brown, J. </auteur> <titre> ... </titre> <auteur type="premier"> <prenom> John </prenom> <nom> Smith </nom> </auteur> <paragraphe type="main"> Bla bla ... </paragraphe> <p> Bla bla bla ... </p> </article> Types de documents ● Un type de document est un modèle qui représente un ensemble (une classe) de documents utilisant tous : – les mêmes éléments – les mêmes attributs avec les mêmes valeurs possibles – les mêmes relations structurales entre éléments – les mêmes associations d'attributs aux éléments Définition de type de document (DTD) ● ● ● Une Définition de Type de Document (DTD) spécifie : – les éléments utilisables dans les documents de ce type – les noms et valeurs possibles des attributs utilisables – quels attributs peuvent être associés à quels éléments – les règles d'assemblage des éléments dans la structure – les entités utilisables Une DTD définit les contraintes qui s'appliquent aux documents d'un type (classe) donné Une DTD constitue un modèle des documents de la classe XML : un langage pour créer des langages ● ● XML contient deux langages : – un langage de balisage des instances de documents – un langage de définition de types de documents XML est un méta-langage qui permet de créer des langages de balisage – Création de langages adaptés au type d'information à décrire – Exemples : XHTML, MathML, SVG, SMIL, etc. DTD XML ● Définition de type de document (DTD) : – Héritage de SGML avec simplifications – Sert de grammaire de document – Une DTD définit un type de document Exemple de DTD XML <!ELEMENT memo (to, from, date, subject?, body) > <!ATTLIST memo security (public | member | team) 'public' status (draft | finished) #REQUIRED > <!ELEMENT to (#PCDATA) > <!ELEMENT from (#PCDATA) > <!ELEMENT date (#PCDATA) > <!ELEMENT subject (#PCDATA) > <!ELEMENT body <!ELEMENT p <!ELEMENT em (p+) > (#PCDATA | em)* > (#PCDATA) > Exemple d'instance XML <?xml version="1.0"?> <memo xml:lang="fr" security="team" status="finished"> <to> J. Dupont </to> <from> P. Dubois </from> <date> 03/01/03 </date> <body> <p> Réunion confirmée <em>demain</em> 10h. </p> </body> </memo> Contenu d'une DTD ● ● ● Une DTD est essentiellement une collection de déclarations – D'éléments, – D'attributs, – D'entités. Chaque déclaration d'élément indique le contenu possible de cet élément Chaque déclaration d'attribut indique les attributs qui s'appliquent à un élément et leurs valeurs possibles Déclaration d'élément <!ELEMENT memo (to, from, date, subject?, body) > <!ELEMENT p (#PCDATA | em)* > – définition du nom de l'élément – définition du modèle de contenu ● noms des éléments fils entre parenthèses dans l'ordre, séparés par des virgules : séquence – séparés par des barres : choix EMPTY ou ANY – ● indicateur d'occurrence possible après chaque nom par défaut l'élément doit être présent (1 occurrence) ? : élément optionnel (0 ou 1 occurrence) * : élément optionnel répétable (0, 1 ou plusieurs occurrences) + : élément obligatoire répétable (1 ou plusieurs occurrences) Exemple : <!ELEMENT div1 (head, (p | list | note)*, div2*)> Déclaration d'attributs <!ATTLIST memo security (public | member | team) 'public' status (draft | finished) #REQUIRED > – nom de l'élément – noms des attributs qui peuvent être associés à cet élément – pour chaque attribut ● ● liste des valeurs possibles ou type de l'attribut CDATA, ID, IDREF, IDREFS valeur par défaut ou indicateur #REQUIRED : attribut obligatoire #IMPLIED : pas de valeur par défaut #FIXED valeur : l'attribut doit toujours avoir cette valeur Déclaration d'entités <!ENTITY EDF "Électricité de France"> ● ● Une déclaration d'entité définit le nom et la valeur d'une entité Exemple : <!ENTITY % pub "Éditions Gallimard" > <!ENTITY rights "All rights reserved" > <!ENTITY book "La Peste: Albert Camus, © 1947 %pub;. &rights;" > donne : La Peste: Albert Camus, © 1947 Éditions Gallimard. All rights reserved; Relation document-DTD ● La déclaration de type de document figure au début de l'instance du document : <!DOCTYPE nom SYSTEM "uri"> ou <!DOCTYPE nom PUBLIC "identificateur public" "uri"> ● ● – nom doit être le nom de l'élément racine du document – uri désigne la ressource DTD du document La déclaration de type de document doit précéder l'élément racine du document, mais n'est pas obligatoire. Exemple : <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> Définitions dans les instances ● La DTD peut être totalement incluse dans les instances : <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE greeting [ <!ELEMENT greeting (#PCDATA)> ]> <greeting>Hello, world!</greeting> ● Des définitions partielles peuvent figurer dans les instances, en particulier des définitions d'entités Documents bien formés/valides ● La DTD n'est pas obligatoire ● Un document doit être au moins bien formé : – ● Respecter la syntaxe du langage de balisage S'il fait référence à une DTD, un document doit être valide : – Respecter les contraintes exprimées dans la DTD Création des DTD ● ● L'aspect syntaxique n'est qu'un détail dans la création d'une DTD La complexité réside dans : – les choix de types de documents : un type très général (exemple XHTML) ou plusieurs types plus spécialisés – le choix des éléments, des attributs et de leurs valeurs – le niveau de détail de la structuration – les contraintes structurales exprimées dans les modèles de contenu des éléments Utilisation des DTD ● Les DTD servent à : – décrire les types de documents utilisés par une organisation – valider les documents créés, mis à jour, reçus, ... – guider ou paramétrer un outil de saisie de document – piloter les parsers utilisés par les applications – etc. Pourquoi valider? ● ● Une DTD est un contrat entre les producteurs et les consommateurs d'information La validation permet – au producteur de vérifier qu'il produit ce qu'il a promis – au consommateur de vérifier ce que le producteur lui livre – au consommateur de protéger ses applications – à l'auteur d'application de simplifier son travail : – la détection et l'analyse d'erreur est laissée au parser Avantages des DTD ● L'utilisation des DTD – Permet de vérifier la validité des documents – Simplifie les applications : on sait où et comment trouver les différents éléments et attributs dans un document valide – Facilite de nombreux traitements, dont les transformations de documents – Garantit la pérennité des documents