Dr Jean-Charles Dufour LERTIM, Service du P r Fieschi Faculté de Médecine Marseille Université de la Méditerranée Novembre 2009 XML Initiation ou comment décrypter ce langage cla ssé X
Objectifs Énumérer les avantages et les inconvénients de XML Citer des applications utilisant XML Créer un document XML bien formé (wellformed) Créer une DTD et un document XML valide Afficher un document XML grâce à une feuille de style CSS
extensible Markup Language Langage de marquage extensible Un exemple vite! Exemple de document XML <?xml version="1.0" encoding="iso-8859-1"?> <cours> <titre>initiation à XML</titre> <enseignant>jean-charles Dufour</enseignant> <date>01 avril 2004</date> </cours>
XML HTML? XML n'est pas "la relève" de HTML XML seul ne présente aucune donnée XML est moins éprouvé que HTML XML est plus difficile à utiliser que HTML Pourtant : XML s est imposé!
Pourquoi XML? Standardisation des formats de documents Fédérer différentes applications Palier les inconvénients du HTML : Exclusivement conçu pour affichage Web Stock limité de balises Mélange structure et mise en page HTML : +/- une page HTML par affichage (écran, imprimante, WAP, PDA, ) XML : format de base identique quelle que soit l'utilisation finale
Avantages Séparation structure, contenu, présentation Lisibilité universelle : codage texte versus codage binaire Indépendant des plates-formes et des programmes Extensible Structure arborescence aisément compréhensible
Avantages Standard gratuit sans droit de licence Métalangage permettant de créer d'autres langages (SMIL, MathML, WML ) Internationalisable : XML peut utiliser n'importe quel jeu de caractères (Latin, Chinois, Arabe, Grec etc ) Assure la pérennité des documents (!? ) XML est particulièrement adapté pour l'échange des données et des documents
Inconvénients Espace de stockage plus important que le format binaire (petit inconvénient!) Mise en page nécessite un langage tiers (C'est aussi un avantages!)
Quelques applications du XML WAP XHTML Open Office FileMaker Microsoft Office (version XP, 2003, 2007)
L'histoire du XML Il était, encore une fois, le SGML GML : 1969 C.F. Goldfab, IBM SGML : 1986 standard ISO (Standardized Generalized Markup Language) WWW et HTML : 1989 T. Berners-Lee, Centre Rech. Nucléaire Zürich HTML = Stock limité de balises SGML + balise pour les liens hypertexte XML v1.0 : 1998 Recommandation du World Wide Web Consortium (W3C)
HTML : un beau B Bazard! HTML mélange : 1. Présentation <i> <u> <b> <font> 2. Structure <p> <h1> <h2> 3. Sémantique <title> <code> <cite> <q> 4. Interaction <form> <input> <button>
Structure Contenu - Présentation Langage HTML Langages XML Présentation Contenu Structure Présentation Contenu Structure XSL, CSS XML DTD, Schema Un contexte d'utilisation : Web Plusieurs contextes d'utilisations : Web, gestion, échange d'info, fédération,
XML seul n'est d'aucune utilité! Langage de structuration de données pur : XML ne donne aucune propriété de mise en page XML seul ne permet aucun traitement des données : stockage ou échange seulement
Principe d'utilisation(s) du XML 1 document XML n utilisations Utilisation1 <?xml version="1.0" encoding="iso-8859-1?> <cours> <titre>initiation à XML</titre> <enseignant>jean-charles Dufour</enseignant> <date>6 décembre 2002</date> <duree unite="heure">3</duree> <participants> <participant>pierre Dupond</participant> <participant>sylvie Dumas</participant> <participant>paul Martin</participant> <participant>paul Gontran</participant> <participant>henri Boultra</participant> <participant>eric Josse</participant> <participant>emile Triche</participant> <participant>claire Bennilla</participant> <participant>andré Grobo</participant> <participant>bill Gate</participant> </participants> </cours> Traitement(s) Utilisation2 Utilisation3
Ce que vous connaissez maintenant L'origine du XML Les avantages et inconvénients de XML Quelques applications utilisant XML Présentation Contenu XSL, CSS XML Structure DTD, Schema Contextes d'utilisations
Règles de base Jamais d'espace ni de caractères spéciaux pour nommer les balises <une balise>contenu</une balise> <em@il>monemail@monfournisseur.fr</em@il > Jamais de balise commençant par xml ou un chiffre <1balise> <xmlbalise> <balise1> <balisexml>
Règles de base XML est sensible à la casse <UneBalise> <unebalise> <UNEBALISE> Les balises sont toujours fermés <unebalise>contenu</unebalise> <unebalise></unebalise> OU <unebalise/> (si ne contient rien) Imbrication rigoureuse des balises Toujours une balise racine (root)
Règles de base Une balise peut avoir des attributs <unebalise attribut1="valeur 1" attribut2="valeur2"> La valeur d'un attribut : Toujours entourée de " ou ' (double ou simple cote) Toujours spécifiée (même si vide) <unebalise attribut1> <unebalise attribut1=> <unebalise attribut=""> <unebalise attribut1=''> 2 doubles cotes OU 2 simples cotes
Règles de base Document XML débute par le prologue <?xml version="1.0" encoding="iso-8859-1"?> Respect des règles de bases = document bien formé (well-formed) Prologue Élément racine Éléments fils de cours <?xml version="1.0" encoding="iso-8859-1"?> <cours niveau="1" durée="3 heures"> <titre>initiation à XML</titre> <enseignant>jean-charles Dufour</enseignant> <date>01 avril 2006</date> </cours>
Exercice 1. Créez un document XML décrivant un film de votre choix 2. Vérifiez qu'il est bien formé en l'affichant dans Internet Explorer (analyser ou parser) Une possibilité parmi une infinité! <?xml version="1.0" encoding="iso-8859-1"?> <film type="cinéma"> <titre>psychose</titre> <annéeréalisation>1963</annéeréalisation> <réalisation>alfred Hitchcock</réalisation> <interprètes> <interprète>anthony Perkins</interprète> <interprète>janet Leigh</interprète> </interprètes> </film>
Exercice Ce document est-il bien formé? <?xml version="1.0" encoding="iso-8859-1"?> <Lettre>Cher confrère, je vous adresse Mr <Nom>Dupond</Nom>, <Prénom>Jean</Prénom> qui se plaint d'une <Symptôme code="r060">dyspnée</symptôme> et d'une <Symptôme code="r05">toux</symptôme>. Je pense qu'il s'agit d'une <Diagnostic code="j42" statut="hypothèse">bronchite</diagnostic> mais il me faut votre avis pour éliminer un <Diagnostic code="j459" statut="hypothèse">asthme</diagnostic>. </Lettre>
Solution OUI! Il respecte la syntaxe XML La balise <Lettre> contient un succession de textes et de balises filles correctement imbriquées
Ce que vous savez faire maintenant Respecter la syntaxe XML pour créer un document bien formé Présentation Contenu Structure XSL, CSS XML DTD, Schema Contextes d'utilisations
Problème! Autant de structures XML film que d'étudiants Regroupement, travail collaboratif compromis!
Solution! 1. Donner des indications strictes pour structurer le document film 2. Puis, vérifier que chaque document film respecte ces règles
Contrôler la structure d'un document DTD : Document Type Definition DTD définit : Nom des balises autorisées L'ordre des balises Les imbrications Les attributs autorisés L'obligation ou non de spécifier des attributs Les valeurs possibles des attributs
Syntaxe d'une DTD Spécifier (déclarer) une balise (ELEMENT) : <!ELEMENT nomdelabalise (contenudelabalise)> Spécifier (déclarer) un ou plusieurs attributs : <!ATTLIST nomdelabalise nomattribut1 TYPE #OPTION nomattribut2 TYPE #OPTION>
Exemple Le document XML <?xml version="1.0" encoding="iso-8859-1"?> <cours niveau="1" durée="3 heures"> <titre>initiation à XML</titre> <enseignant>jean-charles Dufour</enseignant> <date>6 décembre 2002</date> <participants> <participant>pierre Dupond</participant> <participant>sylvie Dumas</participant> <participant>paul Martin</participant> </participants> </cours> sa DTD <!ELEMENT cours (titre, enseignant, date, participants)> <!ATTLIST cours niveau CDATA #REQUIRED durée CDATA #REQUIRED> <!ELEMENT titre (#PCDATA)> <!ELEMENT enseignant (#PCDATA)> <!ELEMENT date (#PCDATA)> <!ELEMENT participants (participant+)> <!ELEMENT participant (#PCDATA)>
Comment définir le contenu d'une balise? <!ELEMENT nomdelabalise (contenudelabalise)> Symbole Signification Exemple () Regroupe le contenu <!ELEMENT cours (titre, enseignant, date)>, Liaison ET : tous les éléments doivent être présents et dans cet ordre Liaison OU EXCLUSIF : un seul des éléments doit être présent (titre, enseignant, date) (TP magistral TD) Aucun symbole L'élément doit être présent 1 seule fois (titre) + L'élément doit être présent 1 fois ou plus Le groupe doit être présent 1 fois ou plus? L'élément est optionnel. Il peut apparaître 0 ou 1 fois (enseignant+) (commentaire, description)+ (titre, enseignant, date?) * L'élément peut apparaître 0 ou plusieurs fois (participant*) #PCDATA L'élément peut contenir n'importe quelles chaînes de caractères(parsed Character Data) <!ELEMENT TP (#PCDATA)>
Comment définir l'existence d'un attribut? <!ATTLIST nomdelabalise nomattribut TYPE #OPTION> Définition de l'option de l'attribut Symbole Signification Exemple #REQUIRED L'attribut doit être présent <!ATTLIST cours durée CDATA #REQUIRED> #IMPLIED L'attribut est optionnel <!ATTLIST cours début CDATA #IMPLIED> #FIXED "valeur" Aucun symbole suivit de "valeur" La valeur de l'attribut est fixée L'attribut prend une valeur par défaut. <!ATTLIST cours durée CDATA #FIXED "3 h"> <!ATTLIST cours début CDATA "9 h">
Comment définir le contenu d'un attribut? <!ATTLIST nomdelabalise nomattribut TYPE #OPTION> Définition du type de l'attribut Symbole Signification Exemple CDATA (valeur1 valeur2) La valeur de l'attribut est une chaîne de caractères L'attribut peut avoir la valeur1 ou la valeur2 <!ATTLIST cours durée CDATA #REQUIRED> <!ATTLIST cours niveau (1 2 3) #REQUIRED>
Associer document XML et DTD - DTD Externe - <!DOCTYPE baliseracine SYSTEM "chemin/fichier.dtd"> Le chemin est absolu ou relatif Le document XML associé à <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE cours SYSTEM "cours.dtd"> <cours niveau="2" duree="3h"> <titre>initiation à XML</titre> <enseignant>jean-charles Dufour</enseignant> <date>6 décembre 2002</date> <participants> <participant>pierre Dupond</participant> <participant>sylvie Dumas</participant> <participant>paul Martin</participant> </participants> </cours> sa DTD <!ELEMENT cours (titre, enseignant, date, participants)> <!ATTLIST cours niveau CDATA #REQUIRED duree CDATA #REQUIRED> <!ELEMENT titre (#PCDATA)> <!ELEMENT enseignant (#PCDATA)> <!ELEMENT date (#PCDATA)> <!ELEMENT participants (participant+)> <!ELEMENT participant (#PCDATA)>
Associer document XML et DTD - DTD Interne - <!DOCTYPE baliseracine [la_syntaxe_de_la_dtt]> La DTD est incluse directement dans le document XML <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE Message [ <!ELEMENT Message (Expediteur, Destinataire, Titre, Texte)> <!ELEMENT Expediteur (#PCDATA)> <!ELEMENT Destinataire (#PCDATA)> <!ELEMENT Titre (#PCDATA)> <!ELEMENT Texte (#PCDATA)> ]> <Message> <Expediteur>Jean</Expediteur > <Destinataire>Pierre</Destinataire > <Titre>Salut</Titre> <Texte>Comment vas-tu depuis notre dernière rencontre?</texte> </Message>
Document XML Valide Document XML valide : sa structure correspond à la structure décrite dans sa DTD Valider un document Internet Explorer : parser non-validant Add-in de validation : Internet Explorer Tools for Validating XML and Viewing XSLT Output (iexmltls.exe) Puis : click droit sur msxmlval.inf Installer click droit sur mscmlvw.inf Installer Formulaire de validation online (DTD Interne seulement) http://www.w3schools.com/dom/dom_validate.asp (pour IE seulement) http://www.xmlvalidation.com/?l=0 (pour IE et FireFox)
Exercice Créez un document XML valide pour cette DTD : <!ELEMENT Personne (Nom, Prenom?, Adresse*, Telephone+)> <!ELEMENT Nom (#PCDATA)> <!ELEMENT Prenom (#PCDATA)> <!ELEMENT Adresse (#PCDATA)> <!ELEMENT Telephone (#PCDATA)>
Une solution <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE Personne SYSTEM "Personne.dtd"> <Personne> <Nom>Dupond</Nom> <Prenom>Jean</Prenom> <Telephone>04.12.85.98.56</Telephone> <Telephone>06.12.56.48.45</Telephone> </Personne>
Exercice Créez un document XML valide pour cette DTD : <!ELEMENT Parking (ListeDeVoitures)> <!ATTLIST Parking nombreniveaux (1 2 3 4) #REQUIRED proprietaire CDATA #IMPLIED tarif CDATA #FIXED "1 euro / heure" > <!ELEMENT ListeDeVoitures (Voiture*)> <!ELEMENT Voiture (Marque, Proprietaire)> <!ELEMENT Marque (#PCDATA)> <!ELEMENT Proprietaire (#PCDATA)>
Une solution <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE Parking SYSTEM "parking.dtd"> <Parking nombreniveaux="2"> <ListeDeVoitures> <Voiture> <Marque>Renault</Marque> <Proprietaire>Jean Dupond</Proprietaire> </Voiture> <Voiture> <Marque>BMW</Marque> <Proprietaire>Pierre Paul</Proprietaire> </Voiture> </ListeDeVoitures> </Parking>
Exercice Créez une DTD pour valider votre document XML décrivant un film Ma solution <!ELEMENT film (titre, annéeréalisation, réalisation, interprètes)> <!ATTLIST film type (cinéma télévision) #REQUIRED > <!ELEMENT titre (#PCDATA)> <!ELEMENT annéeréalisation (#PCDATA)> <!ELEMENT réalisation (#PCDATA)> <!ELEMENT interprètes (interprète+)> <!ELEMENT interprète (#PCDATA)>
Ce que vous savez faire maintenant Expliquer le rôle d'une DTD Pré-déterminer la structure d'un document XML grâce à une DTD Créer une DTD pour un document XML préexistant Vérifier qu'un document XML est valide pour une DTD donnée
Ce que vous savez faire maintenant Présentation Contenu Structure XSL, CSS XML DTD, Schema Contextes d'utilisations
Afficher du XML (une première utilisation) Principe : Appliquer une feuille de style CSS au document XML <?xml version="1.0" encoding="iso-8859-1"?> <?xml-stylesheet href="feuillestyle.css" type="text/css"?> <Document> <Question>Comment afficher un message?</question> <Reponse>Simplement avec une feuille de style!</reponse> </Document> Méthode : 1 sélecteur CSS 1 balise XML
Modifier l'affichage : modifier la CSS! feuillestyle.css Reponse { font-family: Arial; font-weight: bold; color: red } feuillestyle.css Reponse { font-family: Arial; font-weight: bold; color: red } Question { display: block; font-family: Arial; background: yellow; font-size: 21px; }
Exercice Créer une feuille de style CSS pour afficher votre document XML décrivant un film
Une solution film.css titre { display : block; background-color : white; font-size: 40px; font-family: "Monotype Corsiva"; } anneerealisation { font-family : Arial; font-size: 20px; } realisation { font-family : Arial; font-size: 20px; font-style: italic; color: Blue; } Attention : Dans une feuille CSS, seules les balises sans accent peuvent être référencées interprete { display : block; background-color: #FFF8DC; border: 1px solid #D2691E; margin-right: 80%; margin-left: 20px; margin-bottom: 2px; font-family: Tahoma; font-size: 14px; font-variant: small-caps; font-weight: bold; }
Ce que vous savez faire maintenant Afficher un document XML à l'aide d'une feuille de style Modifier l'affichage sans modifier le document XML Présentation Contenu XSL, CSS XML Structure DTD, Schema Contextes d'utilisations
Ce que nous n'avons pas vu Les espaces de noms (NameSpace) Toutes les possibilités des DTD (ENTITY, NOTATION, ANY, combinaison de groupe, ) Schema XSL
Testez vos connaissances! Quiz du W3Schools [date d'accès 2/12/2002] http://www.w3schools.com/quiztest/quiztest.asp?qtest=xml Vous devez obtenir au moins 13/20, sinon revoyez ce cours et aidez-vous des références ci-après
Ressources XML pour débutants Johann-Christian Hancke Compétence Micro n 27 (5,80 ) Dispo. en kiosque ou sur commande (http://www.competencemicro.com) Comment ça marche (cf. section XML) Jean-François PILLOU http://www.commentcamarche.com W3Schools.com (cf. section XML tutorials) Refsnes Data http://www.w3schools.com/ Exemples de pages Web entièrement développées avec XML http://www.xml.com/1999/03/ie5/first-x.xml http://www.xmlguru.de/xml/neu.xml http://www.xml.com/1999/04/holman/gkh-19990418.xml Exemple d'un document xml plusieurs présentations (utilisation de XSL) http://msdn.microsoft.com/downloads/samples/internet/xml/multiple_views/default.asp (puis cliquez sur Demo)