XML et DTD - Plateforme e-learning Moodle de l`INSA de Rouen
Transcription
XML et DTD - Plateforme e-learning Moodle de l`INSA de Rouen
INSA - ASI TechnoWeb : XML Technologie Web XML et DTD Alexandre Pauchet INSA Rouen - Département ASI BO.B.RC.18, [email protected] 1/37 INSA - ASI Plan 1 Introduction 2 Document XML 3 Les DTD 4 XML et CSS TechnoWeb : XML 2/37 INSA - ASI TechnoWeb : XML Introduction (1/4) Origines : SGML et HTML HTML HTML = HyperText Markup Language Modèle de représentation d’hyper-documents Très utilisé par les serveurs et les clients WEB Défini selon le standard SGML SGML Standard Generalized Markup Language Représentation de données et de documents structurés Méta-langage de balisage de documents XML eXtensible Markup Language Standard développé par le W3C Forme extensible de HTML : définition de balises Sous ensemble restreint de SGML : applications WEB Peut être utilisé avec les protocoles (HTTP, MIME) et les mécanismes (URL) du WEB 3/37 INSA - ASI TechnoWeb : XML Introduction 4/37 (2/4) Comparaison HTML/XML <p>Alexandre Pauchet</p> <p> INSA de Rouen<b r /> BP08<b r /> Avenue de l´Université<b r /> 76800 Saint - Étienne du Rouvray </p> <e n s e i g n a n t c o r p s=" m a î t r e de c o n f é r e n c e s "> <prenom>Alexandre</prenom> <nom>Pauchet</nom> <a d r e s s e> <s t r u c t u r e>INSA de Rouen</ s t r u c t u r e> <bp>BP08</bp> <r u e>Avenue de l´Université</ r u e> <cp>76800</cp> < v i l l e>Saint Étienne du Rouvray</ v i l l e> </ a d r e s s e> </ e n s e i g n a n t> Balises et sémantiques associées sont prédéfinies Extensibilité du langage Mélange de structurations logique et physique Affichage déléguée (CSS, XSL) Affichage déléguée (CSS) Perte du sens Structuration logique Modularité et réutilisation des structures Facilite l’accès à des sources de données hétérogènes INSA - ASI TechnoWeb : XML Introduction (3/4) Structure, contenu et présentation 1 document = 3 aspects différents Le contenu (le fond) La structure logique La présentation (la forme) XML : séparation contenu textuel/structure logique Autres contenus = ressources externes (photos, vidéos, sons, . . . ) Présentation décrite par moyens complémentaires (CSS, XSL, . . . ) Présentation indépendante des contenus et de la structure 5/37 INSA - ASI Introduction TechnoWeb : XML (4/4) Exemple : Description d’un article en XML Exemple <? xml v e r s i o n=" 1 . 0 " encoding="UTF−8" s t a n d a l o n e=" y e s "?> <!DOCTYPE album [ <!ELEMENT album ( t i t r e , auteur , contenu )> <!ELEMENT t i t r e (#PCDATA)> <!ELEMENT a u t e u r (#PCDATA)> <!ELEMENT contenu ( p i s t e +)> <!ELEMENT p i s t e (#PCDATA)> ]> <? x ml −st yl es heet type=" t e x t / c s s " h r e f=" styleAlbum . c s s "?> <album> < t i t r e>Le monde de la chatouille</ t i t r e> <a u t e u r>Sacha Touille</ a u t e u r> <contenu> <p i s t e>01 - Guiliguili</ p i s t e> <p i s t e>02 - Gratouilli</ p i s t e> </ contenu> </album> 6/37 INSA - ASI TechnoWeb : XML Document XML (1/10) Structure d’un document XML Prologue Déclaration XML Déclaration de type Instructions de traitement Arbre des éléments Éléments (balises) Attributs Entités ... 7/37 INSA - ASI TechnoWeb : XML Document XML (2/10) Prologue : déclaration XML Déclaration XML <? xml v e r s i o n=" 1 . 0 " [ encoding=" encodage " ] [ s t a n d a l o n e=" y e s | no" ] ?> La déclaration XML indique : la conformité du document à une version de la norme XML, le jeu de caractères utilisé dans le document, la présence ou non de références externes. Cette déclaration est facultative mais fortement conseillée notamment pour le problème d’encodage des caractères 8/37 INSA - ASI TechnoWeb : XML Document XML (3/10) Prologue : déclaration de type Déclaration de type <!DOCTYPE elt−racine Info−DTD [ déclarations internes ] > La DTD (Document Type Definition) d’un document XML définit la grammaire d’un document XML : Elle facilite l’échange de fichiers (fournit une description) Elle facilite la validation de document (impose une grammaire) Elle peut être : Interne/externe : un document ou plusieurs documents System/public : stockée localement ou publiée sur internet 9/37 INSA - ASI TechnoWeb : XML Document XML (4/10) Prologue : instructions de traitement Instructions “facultatives” Leur contenu est transmis à une application pour traitement <? c i b l e arg1=" v a l 1 " arg2=" v a l 2 " . . . ?> : nom d’une application (xml est un mot réservé) arguments passés à l’application cible cible Exemple <? x ml −st yl es heet type=" t e x t / c s s " h r e f=" s t y l e . c s s " ?> 10/37 INSA - ASI TechnoWeb : XML Document XML 11/37 (5/10) Structure et éléments Structure d’un document XML Un document XML est une structure logique arborescente Élément/noeud = constituant logique du document Éléments non prédéfinis mais choisis en fonction du type de document à représenter L’ensemble de la structure est ordonnée Le contenu est structuré en éléments qualifiés par des attributs valués Un élément est représenté par une paire de balises (tags) et leur contenu Les balises ouvrantes portent les éventuels attributs L’imbrication et l’ordre des éléments reflètent la structure INSA - ASI TechnoWeb : XML Document XML (6/10) Contraintes syntaxiques Un document possède une racine et une seule. Les éléments : doivent avoir une balise ouvrante et une balise fermante, peuvent être vides (éléments auto-fermants), doivent être imbriquées, peuvent avoir 0,1 ou plusieurs attributs. Un nom d’élément : doit commencer par une lettre ou un “ _”, peut comporter des chiffres, des lettres, “ -”, “ .” ou “ _”, peut posséder un nom de domaine : "domaineDeNoms:nomElement", est sensible à la casse. Les attributs d’un élément : donnent des précisions sur les éléments et sur leur contenu, doivent avoir un nom et une valeur, ne sont pas sensibles à l’ordre. 12/37 INSA - ASI TechnoWeb : XML Document XML 13/37 (7/10) Commentaires, CDATA et Entités prédéfinies Caractères spéciaux Pour le contenu de tags et les attributs, XML prédéfinit les 5 entités suivantes : & → & ’ → ' > → > < → < " → " Commentaires <!−−ceci est un commentaire −−> Contraintes sur les commentaires : Tout le contenu sera ignoré par l’analyseur XML Pas de commentaire à l’intérieur d’autres tags CDATA Indique à l’analyseur de ne pas tenir compte du balisage : <![CDATA[=>texte non regarde par l’analyseur]]> INSA - ASI TechnoWeb : XML Document XML (8/10) Bonne formation et validité Document XML bien formé Un document XML est bien formé s’il respecte la syntaxe XML : il contient 1 ou plusieurs éléments, un seul élément contient tous les autres (racine), les éléments sont correctement imbriqués, les balises de début et fin correspondent (casse comprise), les noms d’attributs sont uniques par élément, les valeurs d’attributs sont entre " ou ’, les valeurs d’attributs ne référencent pas d’entités externes, les entités sont déclarées avant d’être utilisées. Document XML valide Un document XML est valide s’il se conforme à sa DTD ⇒ le document est conforme à un modèle de structure 14/37 INSA - ASI TechnoWeb : XML Document XML 15/37 (9/10) Conseils pour l’écriture de documents XML Choisir des noms d’éléments (balises) qui représentent leur rôle (sémantique), ils doivent être aussi explicites que possible. Le balisage doit être indépendant de la réalisation physique du document (ex : pas de <gras>). Préférer un balisage méta-typographique : (ex : <important>, <ligne>, <cellule>). La position d’un élément à l’intérieur d’un autre est importante (l’ordre des balises est préservé). Inclure dans le document des métadonnées descriptives afin de décrire le document. L’indexation d’un document se fait sur le contenu des balises, pas sur les valeurs des attributs. INSA - ASI TechnoWeb : XML Document XML 16/37 (10/10) Conseils pour l’écriture de documents XML Utilisez un élément (balise) lorsque : le contenu comporte plusieurs mots, l’ordre est important (il n’y a pas d’ordre sur les attributs), l’information fait partie du contenu du document par opposition à un attribut ajustant le comportement d’une balise. Si un analyseur n’est pas capable de traiter un document XML, il affichera le contenu des balises mais pas les attributs. Utilisez un attribut lorsque : l’information modifie la balise d’un point de vue du traitement exemple : <liste type="numérotée">... </liste>, vous souhaitez contrôler les valeurs, l’information est un identifiant unique ou une référence à l’identifiant d’une autre balise. INSA - ASI Les DTD TechnoWeb : XML (1/14) Un exemple simple de DTD personne.dtd <? xml v e r s i o n=" 1 . 0 " encoding="UTF−8"?> <!ELEMENT personne ( i d e n t i t e , a c t i v i t e ∗)> <!ELEMENT i d e n t i t e ( prenom , nom)> <!ELEMENT prenom (#PCDATA)> <!ELEMENT nom (#PCDATA)> <!ELEMENT a c t i v i t e (#PCDATA)> Dupond.xml <? xml v e r s i o n=" 1 . 0 " encoding="UTF−8" s t a n d a l o n e="no"?> <!DOCTYPE personne SYSTEM " . / personne . dtd " > <personne> <i d e n t i t e> <prenom>Eustache</prenom> <nom>Dupond</nom> </ i d e n t i t e> <a c t i v i t e>détective</ a c t i v i t e> <a c t i v i t e>gardien de nuit</ a c t i v i t e> </ personne> 17/37 INSA - ASI TechnoWeb : XML Les DTD (2/14) DTD d’un document DTD DTD = Document Type Definition Elle définit éléments et règles d’utilisation (noms des éléments, attributs possibles pour un élément, imbrications) ⇒Modèle de document XML Si un document n’a pas de DTD et qu’il suit les règles définies par XML, il est bien formé Si un document est bien formé et qu’il fait référence à une DTD à laquelle il est conforme, il est valide Ni la DTD, ni le document XML ne contiennent d’information concernant l’affichage, c’est la CSS qui définira la présentation 18/37 INSA - ASI TechnoWeb : XML Les DTD 19/37 (3/14) Document sans DTD Document sans DTD Le balisage est défini de manière informel Il doit être bien formé pour pouvoir être affiché par un navigateur Le document doit préciser dans sa déclaration XML qu’il est autonome (SDD = Standalone Document Declaration) Remarque Un document sans DTD peut être affiché mais ne peut pas être interprété. INSA - ASI TechnoWeb : XML Les DTD (4/14) A quoi sert la DTD ? DTD = grammaire du document XML Elle décrit Les éléments types : noms de balises autorisées, ordre et imbrication des balises, caractère optionnel des éléments. Les attributs pour chaque élément : noms des attributs autorisés, caractère optionnel/obligatoire des attributs, type, valeur par défaut. 20/37 INSA - ASI TechnoWeb : XML Les DTD 21/37 (5/14) Déclaration de DTD 3 types de déclaration DTD interne <!DOCTYPE racine [declarations]> DTD externe “locale” <!DOCTYPE racine SYSTEM "fichier.dtd"> <!DOCTYPE racine SYSTEM "http://www.adresse/fichier.dtd"> DTD externe publique <!DOCTYPE r a c i n e PUBLIC "nomConnu" "URL"> Remarque : on peut combiner une partie de DTD interne et une partie de DTD externe (locale ou publique). INSA - ASI TechnoWeb : XML Les DTD 22/37 (6/14) Prologue d’une DTD Prologue Le prologue est identique à un document XML, excepté standalone et DOCTYPE qui n’ont aucun sens dans une DTD. Utilité : déclarer l’encodage utilisé dans la DTD Une DTD n’a pas nécessairement de prologue Exemple <? xml v e r s i o n=" 1 . 0 " encoding="UTF−8" ?> Remarque : l’encodage de la DTD n’est pas propagé aux documents XML utilisant cette DTD INSA - ASI TechnoWeb : XML Les DTD (7/14) Contenu d’une DTD Déclarations dans les DTD Déclarations des éléments autorisés : <!ELEMENT nomBalise (contenu)> Déclaration de l’ordre des éléments dans (contenu) Déclarations des attributs des éléments : <!ATTLIST element attribut type> Remarque : l’ordre des déclarations n’est pas important. Exemple <!ELEMENT auteur (nom, prenom, initial)> 23/37 INSA - ASI TechnoWeb : XML Les DTD (8/14) Déclaration d’un élément Déclaration d’un élément <!ELEMENT nomElement EMPTY|ANY|(modeleContenu)> Un élément peut : être vide, contenir n’importe quel élément déclaré de la DTD, être formaté selon un modèle. Les éléments non vides peuvent contenir : uniquement des données, <!ELEMENT nomElement (#PCDATA)> uniquement d’autres éléments, <!ELEMENT nomElement (element1, element2, ...)> <!ELEMENT nomElement (element+, element∗, element?)> <!ELEMENT nomElement ((element1)|(element2)|...)> des données et d’autres éléments. 24/37 INSA - ASI TechnoWeb : XML Les DTD (9/14) Déclaration d’attribut Déclaration d’attribut <! ATTLIST element a t t r i b u t type [ o p t i o n ]> Principaux types d’attributs : : données textuelles ne contenant pas de balises XML : liste de valeurs possibles ENTITY : entité déclarée dans la DTD NOTATION : notation déclarée dans la DTD ID : l’attribut possède une valeur unique pour chaque élément IDREF : l’attribut se réfère à un ID d’un autre attribut IDREFS : l’attribut peut se référer à plusieurs ID, chaque valeur étant séparée par un espace. CDATA (valeur1|...|valeurN) option vaut : une valeur par défaut, #REQUIRED : valeur d’attribut obligatoire, #IMPLIED : valeur d’attribut optionnelle, #FIXED ’val’ : définit une valeur fixée pour l’attribut. 25/37 INSA - ASI Les DTD TechnoWeb : XML (10/14) Exemple personne.dtd <? xml v e r s i o n=" 1 . 0 " encoding="UTF−8"?> <!ELEMENT a r b r e ( personne+)> <!ELEMENT personne ( prenom , nom, nom?)> <! ATTLIST personne i n d i v i d u a l _ i d ID #REQUIRED parent_id IDREFS #IMPLIED> <!ELEMENT prenom (#PCDATA)> <!ELEMENT nom (#PCDATA)> <! ATTLIST nom m a r i t a l ( o u i | non ) #IMPLIED> arbre.xml <? xml v e r s i o n=" 1 . 0 " encoding="UTF−8" s t a n d a l o n e="no"?> <!DOCTYPE a r b r e SYSTEM " . / a r b r e−g e n e a l o g i q u e . dtd " > <a r b r e> <personne i n d i v i d u a l _ i d="e10001" parent_id="e10002 e10003"> <prenom>Bart</prenom><nom>Simpson</nom> </ personne> <personne i n d i v i d u a l _ i d="e10002"> <prenom>Homer</prenom><nom>Simpson</nom> </ personne> <personne i n d i v i d u a l _ i d="e10003"> <prenom>Marge</prenom><nom m a r i t a l=" o u i ">Simpson</nom><nom>Bouvier</nom> </ personne> </ a r b r e> 26/37 INSA - ASI TechnoWeb : XML Les DTD 27/37 (11/14) Déclaration d’entité Déclaration d’entité Entité = alias pour un groupe de données → Générales internes : <!ENTITY nom "chaine"> Générales externes : <!ENTITY nom SYSTEM "URI"> &nom; → → Paramètres internes : <!ENTITY %nom "chaine"> Paramètres externes : <!ENTITY %nom SYSTEM "URI"> &nom; %nom; → %nom; Non analysables : <!ENTITY nom SYSTEM "URI" NDATA notation> Elles permettent de déclarer du contenu non-XML dans un document XML (audio, vidéos, images...) NB : les entités générales peuvent être substituées dans le corps d’un document XML, les entités paramètres dans la DTD elle-même. INSA - ASI TechnoWeb : XML Les DTD 28/37 (12/14) Composition de DTD Inclusion d’une DTD dans une DTD <!ENTITY %secondeDTD SYSTEM "secondeDTD . dtd "> ... % secondeDTD ; En cas de conflit de nom : Si plusieurs déclarations d’un même élément, la 1ère est prise en compte Si plusieurs déclarations d’attribut pour un même élément, concaténation Si plusieurs déclarations d’un même attribut pour un même élément, la 1ère est prise en compte INSA - ASI TechnoWeb : XML Les DTD (13/14) Déclaration de notation Notation <!NOTATION nomNotation SYSTEM|PUBLIC "notation"> Elle identifie par un nom le format des entités non analysées par le parseur XML. Elle définit le format des données et les applications qui permettent de les traiter. Exemples <!NOTATION GIF SYSTEM "GIF"> <!NOTATION GIF89a PUBLIC "−//Compuserve//Notation Graphics Interchange Format 89a//EN"> 29/37 INSA - ASI TechnoWeb : XML Les DTD 30/37 (14/14) Une alternative au DTD : les schémas XML Inconvénients des DTD Syntaxe particulière ⇒ apprentissage plus long, pas d’automatisation possible, . . . 1 seul type de données : PCDATA Pas de définition précise du nombre d’occurrences Peu de vérifications des données à l’intérieur d’un élément Avantages des Schémas XML sur les DTD Typage des données : plusieurs type de données, création de nouveaux types, . . . Syntaxe XML Schémas orientés objet : extension/restriction des types, . . . INSA - ASI TechnoWeb : XML XML et CSS (1/6) Les feuilles de style Objectif : séparation du contenu et de la présentation ⇒ interopérabilité Distribution à plusieurs médias (multiplateforme) Personnalisation (adaptation de l’affichage aux groupes) ⇒ réutilisabilité (traitement par des techniques encore inexistantes) ⇒ faciliter la recherche d’informations Plusieurs formats : CSS : Cascading Style Sheets XSL : eXtensible Stylesheet Language XSL-T : eXtensible Stylesheet Language Tranform 31/37 INSA - ASI TechnoWeb : XML XML et CSS 32/37 (2/6) Utilisation de CSS Principe XML [+ DTD] + CSS ⇒ Document formaté <?xml-stylesheet type="text/css" href="fichier.css" ?> Remarques : Toutes les balises définis dans un document XML / une DTD peuvent faire l’objet d’un traitement L’ordre des éléments (balises) dans un document XML est respecté ; il faut tenir compte de ces possibilités lorsque l’on rédige une CSS INSA - ASI TechnoWeb : XML XML et CSS (3/6) Déclaration d’une règle Syntaxe : sélecteur[, sélecteur...] {déclarations} sélecteur d’élément : element sélecteur d’id : #id sélecteur de classe : .class sélecteur universel : * Sélecteur de descendant : element element Sélecteur d’enfant : element>element Sélecteur d’adjacent : element+element Sélecteur de précédence : element1~element2 33/37 INSA - ASI TechnoWeb : XML XML et CSS 34/37 (4/6) Sélecteurs de paramètre elem[att] : sélectionne les éléments de type elem contenant l’attribut att, quelque soit la valeur de l’attribut. elem[att=val] : sélectionne les éléments de type elem dont l’attribut att vaut val. elem[att∼=val] : sélectionne les éléments de type elem dont l’attribut liste att contient val. elem[attˆ=val] : sélectionne les éléments de type elem dont l’attribut att débute par val. elem[att$=val] : sélectionne les éléments de type elem dont l’attribut att se termine par val. elem[att*=val] : sélectionne les éléments de type elem dont l’attribut att contient la sous-chaîne val. Remarque : il est possible de combiner plusieurs sélecteurs de paramètre elem[sel1][sel2]...[seln] INSA - ASI TechnoWeb : XML XML et CSS 35/37 (4/6) Éléments et propriétés Affichage d’un élément : “display: block” ⇒ affichage comme élément block “display: inline” ⇒ affichage comme élément inline “display: none” ⇒ pas d’affichage Par défaut les élément sont considérés comme inline Propriétés identiques à celles du HTML polices de caractères : font-size, font-style, font-family, font-weight textes : line-height, text-align, text-indent, text-transform blocs : height, width, margin-right, margin-left, margin-top, marginbottom, padding-right, padding-left, padding-top, paddingbottom, border-style, border-top-width, border-right-width, ... INSA - ASI TechnoWeb : XML XML et CSS 36/37 (5/6) CSS : génération de contenu Les pseudo-éléments :before et :after permettent de générer du contenu avant et après un élément Le contenu généré est déclaré par la propriété content Les pseudo-éléments générés héritent du style de l’élément référence Exemple c o l l e c t i o n: be for e { content: " Dans : " ; display: inline ; font - style: italic ; } INSA - ASI XML et CSS TechnoWeb : XML (6/6) Exemple Exemple * { display: block ; padding - left: 10 px ; } album { width: 500 px ; background - color: teal ; font - family: arial ; color: white ; font - size: 12 pt ; } titre , auteur { display: inline ; font - size: 16 pt ; font - weight: bold ; } auteur { color: red ; } auteur:before { content: " ( " ; } auteur:after { content: " ) " ; } 37/37