Module BD et Sites Web Cours 4 XML 1
Constat Les données du Web sont très hétérogènes (HTML, Word, pdf, données multimedia, données structurées, etc.) Interopérabilité des données? Les mêmes données sont souvent publiées sous des formats différents (Web, Palm, Wap, papier, ) Duplication de données, difficile à gérer Les données des sites Web sont souvent extraites des BD. PHP, JSP, ASP pour générer des pages HTML Pas toujours simple, parfois lourd à gérer 2
Echange et Publication de données XML Echange et interopérabilité de données Représentation uniforme des données XSLT : permet d obtenir des formats différents à partir d un même contenu Publication de données sur différents supports Dissocie contenu et présentation PHP Accès aux données contenues dans les BD. 3
Plan XML et DTD Document XML DTD Elément Attribut 4
XML Extensible Markup Language Format/langage standard pour la publication et l échange de documents sur le Web - Consortium W3C (Oracle, IBM, MS, MIT, INRIA.) 1996 - Version 1.0 en 1998, nombreux développements depuis. Origine: Successeur de HTML, héritier de SGML : HTML est une grammaire particulière de SGML XML est aussi général que SGML, mais simplifié 5
XML Objectif Echange, partage, diffusion et publication de documents Recherche d information : moteurs de recherche généralisée, portails spécialisés Commerce électronique Principes Balisage structurel (SGML) Balisage défini par les auteurs : souplesse Séparer la structure logique des données de leur présentation feuille de style XSL : ensemble de règles (XSLT) pour la réalisation sur un médium particulier 6
Structuration des données En XML, les informations sont représentées sous forme d une chaîne de caractères, structurées à l aide de balises : <restaurant> <nom> Bel Canto </nom> <adresse> Rue de la Tombe-Issoire </adresse> <telephone> 01 45 46 47 48 </telephone> </restaurant> Une paire de balises (ouvrante, fermante), et ce qui est à l intérieur, constitue un élément XML 7
Document XML Un document XML peut se représenter sous deux formes: La forme sérialisée est la forme courante (contenu marqué par des balises). Elle est utilisée pour Stocker un document dans un fichier Echanger des documents La forme arborescente met en évidence la structure du document (facilite la conception des traitements). Elle permet de situer la place de l élément dans la hiérarchie Elle permet de spécifier des manipulations de données XML 8
Exemple <restaurant> <nom>bel Canto </nom> <adresse> Rue de la Tombe-Issoire </adresse> <telephone> 01 45 46 47 48 </telephone> </restaurant> Bel Canto restaurant nom adresse telephone Rue de la Tombe Issoire 01 45 46 47 48 La structure des documents est définie par le Document Object Model (DOM) L arbre n est pas forcément un arbre équilibré 9
Forme sérialisée Un document XML est découpé en éléments structurés hiérarchiquement. Un document a un élément racine appelé élément du document. Un élément est composé : d un nom qui spécifie son type, d attributs, d un contenu formé d éléments ou de textes. Un texte est une chaîne de caractères. Un attribut a un nom et une valeur qui est une chaîne de caractères. Syntaxiquement, les éléments d un document XML sont marqués dans le document lui-même par des paires de balises ouvrantes et fermantes. 10
Structure d un document Un document est composé d un prologue (facultatif) d un arbre d éléments (obligatoire : décrit le contenu) de commentaires et instructions de traitement (facultatif) Exemple : <?xml version="1.0" encoding='iso-8859-1' standalone='yes'> <personne> <nom>martin</nom> <prenom>jean</prenom> <adresse> <rue>rue du Bac</rue> <ville>paris</ville> </adresse> <! - pas d autre information disponible --> </personne> 11
Prologue Déclaration XML (indications au processeur) <? xml version= 1.0 encoding= ISO-8859-1 standalone= yes?> xml version= 1.0 : décrit la version utilisée encoding= ISO-8859-1 : codage de caractères utilisés dans le document standalone= yes : existence de déclarations extérieures (yes = toutes les déclarations nécessaires au document sont incluses) 12
Arbre d éléments <nom>contenu</nom> Un document est formé d une hiérarchie d éléments dénotant la structure sémantique du contenu. Tout élément fils est complètement inclus dans son père. L élément racine est unique et contient tous les autres éléments. Un élément peut contenir d autres éléments, des données, des références à des entités, des sections littérales, des instructions de traitement. Il peut aussi être vide. Le nom de l élément peut éventuellement être suivi d attributs, qui décrivent des propriétés de l élément. Chaque attribut a une valeur unique. Un document XML est bien formé s il respecte ces principes. 13
Structures types de documents DTD (Document Type Definition) Les éléments qui décrivent un document peuvent être décrits dans une DTD (Déclaration de type de document) : <!DOCTYPE undocument SYSTEM externe.dtd [décl. internes]> - undocument : nom du document (doit être le nom du nœud racine) - externe.dtd : source extérieure contenant la DTD - [décl. internes]> : déclarations locales, principalement pour les entités La DTD est facultative : si absente, la structure est implicite grâce au balisage, si présente, elle doit être respectée par le document (validation). Un document est valide s il est conforme à une DTD 14
DTD La DTD peut être - incluse dans le document (standalone = yes ). - externe (standalone = no ). Elle contient des déclarations pour tous les éléments, attributs, entités, notations utilisés dans le document. Elle peut aussi contenir des commentaires 15
Rôles des DTD Modèle selon une organisation hiérarchique (définition des éléments, attributs, contenus) Spécifie la structure des instances de documents : cet élément contient ces éléments, ces attributs, etc. Spécifie le type de données de chaque élément et attribut Définition d entités : mécanisme d inclusion (interne, externe, paramètre) utile pour les opérations de modularisation et de réutilisation. (Un document peut être découpé en entités enregistrées dans un ou plusieurs fichiers.) 16
Noms de balise Les noms de balise sont libres et peuvent comprendre : Des lettres de l alphabet (y compris les lettres accentuées) Des chiffres Les caractères et _ Ils ne doivent pas contenir d espace, et ne peuvent pas commencer par un chiffre. Les majuscules sont distinguées des minuscules 17
Elément Un élément est composé : d une balise de début qui contient le nom de l élément et éventuellement ses attributs, d un contenu, d une balise de fin. Par exemple : <rapport langue="français">présentation d XML </rapport> balise de début : <rapport langue="française"> nom : rapport attribut : langue="française" contenu : présentation d XML balise de fin : </rapport> 18
Contenu d un élément Définition d un élément dans une DTD : <!ELEMENT nom modeledecontenu> Le contenu d un élément peut être Vide (EMPTY) Du texte simple (#PCDATA) Composé d éléments Mixte : mélange de texte et d éléments Libre (ANY) 19
Modèle de contenu (1) Modèle de contenu vide EMPTY Obligatoirement vide (infos uniquement dans attributs) Ne peut pas être composé (pas d éléments fils) Ex : <!ELEMENT note EMPTY > Texte simple : #PCDATA Parsed Character Data (pas d éléments fils) - Ex: <!ELEMENT titre (#PCDATA)> 20
Modèle de contenu (2) Composé d éléments: Décrit l'organisation des sous-éléments directs (ie. les fils) Deux organisations possibles : - la séquence (fils1, fils2, ) : fils1 est suivi de fils2 qui est suivi de... - le choix (fils1 fils2 ) : fils 1 ou fils2 ou... On peut décrire l'organisation par morceaux: blocs entre parenthèses Ex: <!ELEMENT chapitre (titre, intro, (texte-long résumé))> 21
Indicateur d occurrence * : nombre quelconque + : 1 ou plusieurs fois? : 0 ou 1 fois rien : exactement une fois L'indicateur d'occurrence s'applique à un élément ou un bloc Ex1 : <!ELEMENT chapitre (titre, intro?, paragraphe+)> Ex2 : <!ELEMENT forum (titre, intro?, (question, réponse*)+)> 22
Modèle de contenu (3) Modèle de contenu mixte (#PCDATA élément 1 élément 2 élément n )* Mêler données et éléments Ex : <!ELEMENT paragraphe (#PCDATA em exp ind)*> <paragraphe> Du texte <em> en évidence </em>, 9 = 3<exp>2</exp> </paragraphe> Modèle de contenu libre ANY Contenu quelconque (autres éléments et données) Sert à prototyper des DTD complexes 23
Attributs d un élément Les attributs sont un autre moyen de représenter l information <rapport langue= français date= 2010 > L ordre des attributs n est pas important. Un attribut doit toujours avoir une valeur, encadrée par des apostrophes simples ou doubles. Il ne peut pas y avoir deux attributs de même nom dans un élément. Les attributs ne sont pas ordonnés alors que les éléments le sont (on accède à un attribut par son nom, et pas par sa position dans la balise) 24
Attributs d un élément Déclaration dans la DTD : <!ATTLIST nom-élément nom-attribut type-attribut mode-défault> On peut grouper la déclaration des attributs d un même élément Type-attribut : CDATA : la valeur de l attribut est une chaîne de caractères ID : identificateur d élément, IDREF : renvoi vers un ID existant IDREFS : renvoi vers un ensemble d'id existants NMTOKEN(S) : un ou des noms symboliques (sans blanc) (a b c ) : type énuméré. ENTITY : entités externes non XML Mode : Valeur par défault Obligatoire : #REQUIRED Facultatif : #IMPLIED Constante : #FIXED 25
Exemples d attributs Dans la DTD <!ELEMENT date (#PCDATA)> <!ATTLIST date format (ANSI ISO FR) #REQUIRED> Dans le document <date format= FR >9 mars 2012 </date> <date format= ISO >2012-3-9 </date> 26
Exemple <!ELEMENT bibliothèque (personne+, livre+)> <!ELEMENT personne (nom)> <!ATTLIST personne num ID #REQUIRED> <!ELEMENT livre (titre, auteur+)> <!ELEMENT auteur EMPTY> <!ATTLIST auteur ref IDREF #REQUIRED> <!ELEMENT nom (#PCDATA) > <!ELEMENT titre (#PCDATA) > ---------------------------------------------------------- ----------------------------------- <bibliothèque> <personne num="p1"><nom>toto</nom></personne> <personne num="p2"><nom>titi</nom></personne> <livre> <titre>xml en 2 jours </titre> <auteur ref="p1"/> <auteur ref="p2"/> </livre> </bibliothèque> 27
Attribut de type IDREFS <!ELEMENT bibliothèque (personne+, livre+)> <!ELEMENT personne (nom)> <!ATTLIST personne num ID #REQUIRED> <!ELEMENT livre (titre, auteurs)> <!ELEMENT auteurs EMPTY> <!ATTLIST auteurs ref IDREFS #REQUIRED> <!ELEMENT nom (#PCDATA) > ---------------------------------------------------------- ----------------------------------- <bibliothèque> <personne num="p1"><nom>toto</nom></personne> <personne num="p2"><nom>titi</nom></personne> <livre> <titre>xml en 2 jours </titre> <auteurs ref="p1 p2"/> liste de valeurs existantes séparées par un espace </livre> </bibliothèque> Un seul élément auteurs par livre, pour représenter une association N-M entre livres et auteurs 28
Entités Caractère, chaînes de caractères, fichier externe, fragment, Déclarée par un nom nom-entité, et une valeur val Appelée dans le document par &nom-entité; Interprétation : remplacer &nom-entité dans le document par val. Permet de réutiliser quelque chose défini ailleurs (ressemble à une macro, un raccourci) 29
Entités Entités internes : définies localement, comme une chaîne de caractères Entités externes : font référence à des fichiers externes Entités prédéfinies et entités caractères : référencent des caractères réservés en XML et des caractères qui ne sont pas sur le clavier 30
Entités prédéfinies amp (&) apos ( ) quot ( ) gt (>) lt (<) #code-unicode 31
Entités internes Définies par l utilisateur Dans la DTD <!ENTITY nom-entité valeur > Exemple : <!DOCTYPE mon-document [ <!ENTITY copyright Banania corp. > ]> Dans la chaîne de caractères valeur de l entité copyright, on trouve ©, appel à une entité prédéfinie. <mon-document> ©right </mon-document> Produira : Banania corp. 32
Entités externes xml Déclaration et appel <!ENTITY carte-de-visite SYSTEM cdv.xml > <message> &carte-de-visite; </message> Les entités externes doivent être des fragments XML bien formés On peut donc réutiliser des fragments XML poru construire un nouveau document Rappel : un document xml est bien formé si : ses éléments sont correctement imbriqués (pas de chevauchement) chaque attribut a une valeur unique En d autres termes, un document xml est bien formé s il représente un arbre étiqueté. NE PAS CONFONDRE : document bien formé (/xml) et document valide (/DTD) 33
Notations et entités non-xml Déclaration : <!NOTATION gif SYSTEM /usr/bin/xv > <!ENTITY maphoto SYSTEM./mesphotos/mapomme.gif NDATA gif> <photo img= maphoto > Uniquement appel dans un attribut (pas besoin de &) La déclaration de notation associée au NDATA indique que xml ne traitera pas cette entité. La notation indique de plus quelle application utiliser (xv) 34
Entité paramètre Une entité paramètre est une entité déclarée dans une DTD pour être utilisée dans cette DTD. Permet la réutilisation de fragments de DTD dans la définition d une autre DTD Déclarée dans la partie interne (dans la partie DOCTYPE) Ex : <!ENTITY % nom-entite "valeur entite" > La référence à l entité (dans la DTD) se fait par %nom-entité. 35
Exemple <!-- Dans la DTD -- > <!ENTITY % pub "Éditions ToutSavoir" > <!ENTITY rights "Tous droits réservés" > <!ENTITY book "J.Martin. Les BD en s amusant, %pub. &rights">... <!-- Dans le document -- > <p> &book </p> On obtient : J. Martin. Les BD en s amusant, Éditions ToutSavoir. Tous droits réservés. 36