XML et DTD - Laboratoire d`Informatique de Paris 6
Transcription
XML et DTD - Laboratoire d`Informatique de Paris 6
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> nom <telephone> 01 45 46 47 48 </telephone> </restaurant> Bel Canto restaurant adresse Rue de la Tombe Issoire telephone 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ément1 | élément2 | … | élémentn)* – 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’>15 février 2013 </date> <date format=‘ISO’>2013-2-15 </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 nom CDATA #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 nom="Toto"/> <auteur nom="Titi"/> </livre> 27 </bibliothèque> 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> 28 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 29