Langages de l Internet : XML Introduction & Mise en oeuvre Taha Zerrouki Taha.zerrouki@gmail.com 1
Cours XML : Plan Introduction Historique, champ d applications, but du cours Mise en œuvre Syntaxe, structure, rédiger un document XML Rédaction sommaire Exercice de syntaxe Premiers éléments de DTD 2
Au commencement SGML Standard Generalized Markup Language Langage à balises pour représenter des documents structurés Complexe, difficile à apprendre Réservé aux professionnels de la documentation Difficilement extensible au Web HTML! (dérive de SGML) Conçu dans l optique d afficher des «pages Web» C est ce qui a fait son succès 3
Les limites de HTML Balises prédéfinies Extensibilité réduite Décrit la forme et non le contenu <b>, <i>, <center> Lié à la problématique des «pages web» La sémantique du contenu est perdue Pas de vérification syntaxique 4
XML extensible Markup Language [W3C, 98] Langage normalisé de description Création libre des balises Structure hiérarchique vérifiable Langage simple, documents «lisibles» Facilite le traitement des données Sépare le contenu et la forme Indépendant des plateformes 5
Le format XML Données hiérarchiques (arbre) Élément/Attribut/Texte Élément description My Favorite Zoo zoo monkeys monkey name=roger monkey name=mike lion teeth=2 Texte Élément <zoo> Attribut <description> My favorite Zoo </description> <monkeys> <monkey name= roger /> <monkey name= mike /> </monkeys> <lion teeth= 2 /> </zoo> 6
Typage du XML Une DTD ou un Schéma défini la grammaire d un fichier XML <zoo> <description> My favorite Zoo </description> <monkeys> <monkey name= roger /> <monkey name= mike /> </monkeys> <lion teeth= 2 /> </zoo> fichier XML <!DOCTYPE zoo [ <!ELEMENT zoo (description,monkeys,lion)> <!ELEMENT description (#PCDATA)> <!ELEMENT monkeys (monkey+)> <!ELEMENT monkey EMPTY> <!ATTLIST monkey name CDATA #REQUIRED> <!ELEMENT lion EMPTY> <!ATTLIST lion teeth CDATA> ]> <xs:element name= zoo' type= zoo'/> DTD <xs:complextype name= zoo'> <xs:sequence> <xs:element name= monkeys schéma XML type= monkeys'/> <xs:element name= lion' 7
XML appliqué Systèmes d informations Format de requête auto-descriptif «je te parle comme ceci, parle-moi comme cela» APIs standardisées Formation réduite, expression générique Recherche d informations On sait directement où chercher (plus ou moins) Corpus de données structurées Ex: contenus MPEG7 (vidéos, sons, images) 8
XML pour le Web HTML est un «sous-xml» Séparation Forme / Contenu Feuilles de Styles (CSS, XSL) Transformations de données (XSLT) Adaptation à différents supports PDA, téléphones portables Adaptation à différents utilisateurs préférences utilisateurs, malvoyants 9
Perspectives du cours Maîtriser le langage XML (évidemment) Rédiger un document XML Définir une grammaire de génération (DTD, XML Schema) Présenter un document XML sur le Web Feuilles de styles (CSS, XSL) Transformations de documents (XSLT) Faire lire du XML par un programme SAX / DOM AJAX 10
Cours XML Introduction Historique, champ d applications, but du cours Mise en œuvre Syntaxe, structure, rédiger un document XML Rédaction sommaire Exercice de syntaxe Premiers éléments de DTD 11
Mise en oeuvre Syntaxe XML Écriture par balises (éléments) Structure hiérarchique Attributs Données Définir une grammaire structurelle Rédiger un document XML 12
Écriture par balises (éléments) <enseignant> <nom>abdellah</nom> <prenom>benkadour</prenom> <grade>consultant</grade> <enseignements> <cours type= CM > </cours> <titre>xml</titre> <volume>24</volume> <cours type= TD > <volume>30</volume> </cours> </enseignements> </enseignant> <titre>websemantic</titre> 13
Écriture par balises (éléments) Syntaxe: <element> contenu de l élément </element> «element» doit commencer par une lettre Peut comporter : Des chiffres Des lettres Moins «-», souligné «_», point «.», deux-points «:» 14
Écriture par balises (éléments) Syntaxe: <element> contenu de l élément </element> Attention à la casse! («element»!= «Element») Pas de «XMLfoo» ou «xmlbar» Élément vide <element></element> ou <element/> 15
Structure hiérarchique <enseignant> <nom>abdelah</nom> <prenom>ben Kadour</prenom> <grade>consultant</grade> <enseignements> <cours type= cm > <titre>xml</titre> <volume>24</volume> </cours> <cours type= td > <titre>websemantic</titre> <volume>30</volume> </cours> </enseignements> </enseignant> enseignant nom «abdelah» prenom «Ben Kadour» grade «consultant» enseignements Cours type= cm Cours type= td titre volume titre volume 16
Structure hiérarchique Chaque élément peut avoir un ou plusieurs «enfants» (ou du texte) <nom> est enfant* de <enseignant> <enseignant> est parent* de <nom> Chaque élément n a qu un seul parent Il existe un unique «ancêtre» Le seul élément qui est l ancêtre de tous les éléments = l élément racine* (ici <enseignant>) * child, parent, root 17
Attributs Utilisation <element attribut= valeur > Mêmes règles pour «attribut» que pour «element» La valeur ne peut contenir les caractères ^, % et & 18
Données Chaînes de caractères Caractères spéciaux < pour < > pour > & pour & ' pour " pour & ou & pour & (numéro dans la page UNICODE) 19
Mise en oeuvre Syntaxe XML Écriture par balises (éléments) Structure hiérarchique Attributs Données Définir une grammaire structurelle Rédiger un document XML 20
Définir une grammaire structurelle enseignant nom «Abdelah ««Tayeb?»» prenom «Ben «? Mohamed» Kadour» <enseignant> <nom>abdelah</nom> <nom>tayeb</nom> <prenom>ben <prenom>mohamed</prenom> Kadour</prenom> <grade>consultant</grade> <grade>mdc</grade> <enseignements> <cours type= CM > type= td > </cours> <titre>xml</titre> <titre>data-mining</titre> <volume>24</volume> <volume>30</volume> </enseignements> <cours type= TD > </enseignant> <titre>websemantic</titre> <volume>30</volume> </cours> </enseignements> </enseignant> grade enseignements «consultant «MdC?»»» Cours type= cm type= td type=? Cours type= td type=? titre volume titre volume ««? XML Data-Mining»»» ««? 2430»»» 21
Définir une grammaire structurelle «DTD» (Document Type Definition) La DTD définit la filiation des éléments Quelle est la racine du document? Qui doit/peut avoir quels enfants? Combien d enfants? Qui peut contenir du texte? Qui a des attributs particuliers? Quelles sont les valeurs de ces attributs? 22
DTD Indiquée dans le document XML On parle de : Document bien formé Respect de la syntaxe XML Document valide Respect de la DTD spécifiée 23
Mise en oeuvre Syntaxe XML Écriture par balises (éléments) Structure hiérarchique Attributs Définir une grammaire structurelle Rédiger un document XML 24
Document XML <?xml version= 1.0 encoding= UTF-8 standalone= yes?> <?xml-stylesheet type= text/xsl href= test.xsl?> Prologue <!DOCTYPE enseignant [ <!ELEMENT enseignant (nom, prenom, grade, enseignements) > <!ELEMENT nom (#PCDATA) > <!ELEMENT prenom (#PCDATA) > <!ELEMENT grade (#PCDATA) > <!ELEMENT enseignements (cours+) > <!ATTLIST cours type CDATA #REQUIRED> <!ELEMENT cours (titre, volume) > <!ELEMENT titre (#PCDATA) > <!ELEMENT volume (#PCDATA) > ] > Déclaration <enseignant> <nom>abdelah</nom> <prenom>ben KAdour</prenom> <grade>consultant</grade> <enseignements> <cours type= cm > <titre>xml</titre> <volume>24</volume> </cours> <cours type= td > <titre>data-mining</titre> <volume>33</volume> </cours> </enseignements> </enseignant> Corps 25
Document XML Prologue Précise qu il s agit d un document XML Instructions de traitement Déclaration DTD qui définit la grammaire du document Corps du document Les données elles-mêmes 26
Prologue La déclaration XML <?xml version= 1.0 encoding= UTF-8 standalone= yes?> version : 1.0! encoding : type d encodage de caractères UTF-8, ISO-8859-1 standalone : si le fichier fait référence à des fichiers externes, no, sinon, yes 27
Prologue Les instructions de traitement <?xml-stylesheet type= text/xsl href= test.xsl?> Précise une application ou une fonction que l on appelle en lui passant des paramètres <?nom param1= val1 param2= val2?> Destiné à être utilisé par l application qui lit le document (stylesheet de mise en forme) 28
Déclaration DTD (Document Type Definition) Interne : en toutes lettres dans le fichier Externe : dans un fichier extérieur [standalone= no ] Définit comment le document sera rédigé dans un langage standard propre à la DTD Une DTD «n est pas obligatoire» Si on ne cherche pas à vérifier la validité du document (risqué) 29
Document XML simple <?xml version= 1.0 encoding= ISO-8859-1?> <enseignant> <nom>abdelah</nom> <prenom>ben KAdour</prenom> <grade>consultant</grade> <enseignements> <cours type= cm > <titre>xml</titre> <volume>24</volume> </cours> <cours type= td > <titre>data-mining</titre> <volume>33</volume> </cours> </enseignements> </enseignant> Pas de DTD Simple respect de la syntaxe : <element attribut= valeur > contenu </element> 30
FireFox Bonne syntaxe Syntax Error 31
Cours XML : Plan Introduction Historique, champ d applications, but du cours Mise en œuvre Syntaxe, structure, rédiger un document XML Rédaction sommaire Exercice de syntaxe Premiers éléments de DTD 32
Exercice de syntaxe Créez un document XML annuaire1.xml Construisant un annuaire Comportant des entités de type personne Chaque personne a une identite L identite stipule : un nom, un prenom, et une adresse Une adresse est donnée par : une rue, un code-postal, une ville et un ou plusieurs numéros de telephone On précise que le telephone peut être de type «mobile» ou «fixe» 33
Correction <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE annuaire SYSTEM "annuaire.dtd"> <annuaire> <personne> <identite> <nom>achour</nom> <prenom>hamza</prenom> <adresse> <rue>25 avenue de 05 juillet 1962 </rue> <cp>16000</cp> <ville>alger</ville> <tel>071002500</tel> </adresse> </identite> </personne> <personne> <identite> <nom>aomar</nom> <prenom>ahmed</prenom> <adresse> <rue>18 avenue du Ibn Badis</rue> <cp>10000</cp> <ville>bouira</ville> <tel>026942525</tel> </adresse> </identite> </personne> </annuaire> 34
Document XML <?xml version= 1.0 encoding= UTF-8 standalone= yes?> <?xml-stylesheet type= text/xsl href= test.xsl?> Prologue <!DOCTYPE enseignant [ <!ELEMENT enseignant (nom, prenom, grade, enseignements) > <!ELEMENT nom (#PCDATA) > <!ELEMENT prenom (#PCDATA) > <!ELEMENT grade (#PCDATA) > <!ELEMENT enseignements (cours+) > <!ATTLIST cours type CDATA #REQUIRED> <!ELEMENT cours (titre, volume) > <!ELEMENT titre (#PCDATA) > <!ELEMENT volume (#PCDATA) > ] > Déclaration <enseignant> <nom>abdelah</nom> <prenom>ben Kadour</prenom> <grade>consultant</grade> <enseignements> <cours type= cm > <titre>xml</titre> <volume>24</volume> </cours> <cours type= td > <titre>data-mining</titre> <volume>33</volume> </cours> </enseignements> </enseignant> Corps 35
Déclaration DTD (Document Type Definition) Interne : en toutes lettres dans le fichier Externe : dans un fichier extérieur [standalone= no ] Définit comment le document sera rédigé dans un langage standard propre à la DTD 36
Rédaction Sommaire Spécifier la DTD Définir les éléments Enfants Ordre Quantité Définir les attributs 37
Fichier exemple.xml DOCTYPE : DTD interne = [ ] <?xml version= 1.0 encoding= ISO-8859-1?> <!DOCTYPE racine [ <!ELEMENT racine (contenu)> <!ELEMENT contenu (#PCDATA)> ]> <racine> <contenu>blablabla</contenu> </racine> «DTD» 38
DOCTYPE : DTD externe SYSTEM Fichier exemple.xml <?xml version= 1.0 encoding= ISO-8859-1?> <!DOCTYPE racine SYSTEM exemple.dtd > <racine> </racine> <contenu>le contenu</contenu> Fichier exemple.dtd <!ELEMENT racine (contenu)> <!ELEMENT contenu (#PCDATA)> 39
DOCTYPE : DTD externe PUBLIC Il est possible de spécifier une DTD «publique» quand celle-ci est largement diffusée (standard particulier) ou accessible sur le web <!DOCTYPE racine PUBLIC url > 40
Syntaxe (simple) de DTD Déclaration des éléments <!ELEMENT elm > <!ELEMENT elm EMPTY> <!ELEMENT elm ANY> <!ELEMENT elm (#PCDATA)> Élément vide <elm/> Peut contenir n importe quoi Elément de données <elm>blablabla</elm> 41
Syntaxe (simple) de DTD Déclaration des sous-éléments obligatoires <!ELEMENT element > <!ELEMENT bar (foo)> <bar> contient un seul élément <foo> <!ELEMENT enfant (age,sexe)> <!ELEMENT enfant (garcon fille)> <enfant> contient deux éléments <age> et <sexe> DANS CET ORDRE <enfant> contient obligatoirement l un ou l autre des éléments <garcon>,<fille> 42
Syntaxe (simple) de DTD Déclaration des occurrences <!ELEMENT bar > <!ELEMENT bar (foo)> <!ELEMENT eleve (email?)> <!ELEMENT livre (chapitre+)> <!ELEMENT personne (tel*)> Contient UN SEUL élément <foo> (obligatoire) <eleve> contient UN OU AUCUN élément <email> <livre> contient UN OU PLUS éléments <chapitre> <personne> contient N IMPORTE QUEL NOMBRE d éléments <tel> 43
Syntaxe (simple) de DTD Cascade de déclarations <!ELEMENT personne (age,sexe,profession)> On peut bien sûr étendre le nombre d éléments obligatoires <!ELEMENT eleve (nom,prenom,email?)> <eleve> contient un <nom>, un <prenom>, et peut-être un <email> <!ELEMENT recueil (titre,(auteur,chapitre)+)> <recueil> contient un <titre>, puis un certain nombre non nul de couples <auteur>,<chapitre> 44
Définir une grammaire structurelle enseignant <!ELEMENT enseignant (nom,prenom,grade,enseignements?)> <!ELEMENT nom (#PCDATA)> <!ELEMENT prenom (#PCDATA)> nom prenom grade «?» «?» «?» <!ELEMENT grade (#PCDATA)> <!ELEMENT enseignements (cours+)> enseignements Cours type=? titre volume «?» «?» <!ELEMENT cours (titre, volume)> Cours titre <!ATTLIST cours type CDATA #REQUIRED> <!ELEMENT titre (#PCDATA)> type=? volume <!ELEMENT volume (#PCDATA)> 45
Syntaxe (simple) de DTD Spécifier le type des attributs <!ATTLIST element attribut > <!ATTLIST cours type CDATA #REQUIRED> Spécifie que l attribut est une chaîne de caractères <!ATTLIST client dossier ID #REQUIRED> <!ATTLIST cours niveau (debutant intermediaire confirme) #REQUIRED> La valeur donnée à l attribut doit être unique L attribut prend une des valeurs specifiées 46
Syntaxe (simple) de DTD Spécifier les attributs (ex: de type chaîne) <!ATTLIST element attribut > <!ATTLIST cours type CDATA #REQUIRED> Spécifie que l attribut doit toujours être fourni <!ATTLIST cours type CDATA #IMPLIED> l attribut peut ne pas être fourni, dans ce cas l application se charge de lui choisir une valeur <!ATTLIST cours type CDATA #FIXED CM > L attribut a toujours la même valeur CM 47
Syntaxe (simple) de DTD Plusieurs attributs Les uns à la suite des autres <!ATTLIST cours type CDATA #IMPLIED niveau (deb int conf) #REQUIRED> 48
Exercice de syntaxe DTD Construisez la DTD de l annuaire de tout à l heure Y ajouter que la rue peut être une simple chaîne ou un composé num-rue, nom-rue 49
Correction <!ELEMENT annuaire (personne*)> <!ELEMENT personne (identite)> <!ELEMENT identite (nom,prenom,adresse)> <!ELEMENT adresse (rue,cp,ville,tel)> <!ELEMENT rue (#PCDATA)> <!ELEMENT cp (#PCDATA)> <!ELEMENT ville (#PCDATA)> <!ELEMENT tel (#PCDATA)> <!ELEMENT nom (#PCDATA)> <!ELEMENT prenom (#PCDATA)> 50
Références Jean-François OMHOVER (à venir) http://webia.lip6.fr/~omhover/cours/ jean-francois.omhover@lip6.fr 51
Contact Taha Zerrouki http://tahadz.com http://infobouirauniv.wordpress.com Taha.zerrouki@gmail.com 52