L'essentiel de XML. Cours XML. Olivier Carton

Please download to get full document.

View again

of 20
304 views
PDF
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Document Description
L'essentiel de XML Cours XML Olivier Carton L'essentiel de XML: Cours XML Olivier Carton Version du 18/12/2014 Copyright Olivier Carton Résumé Support du cours XML en M2 Pro à l'université Paris
Document Share
Documents Related
Document Transcript
L'essentiel de XML Cours XML Olivier Carton L'essentiel de XML: Cours XML Olivier Carton Version du 18/12/2014 Copyright Olivier Carton Résumé Support du cours XML en M2 Pro à l'université Paris Diderot. Ce document est le support d'un cours XML donné en M2 Pro à l'université Paris Diderot. L'objectif est de présenter les aspects essentiels de XML de manière concise et illustrée par de nombreux exemples. Les principaux thèmes abordés sont la syntaxe de XML, la validation de documents par des DTD, des schémas et des schematrons, le langage XPath, la transformation de document par XSLT ainsi que la programmation. Ce support de cours est actuellement en cours de rédaction. Il contient encore beaucoup d'erreurs et d'omissions. Certaines parties méritent d'être développées et/ou reprises. Une certaine indulgence est donc demandée au lecteur. Toutes les corrections, même les plus mineures, suggestions et encouragements sont les bienvenus. Ils participent à l'amélioration de ce document pour le bien de tous. Table des matières 1. Présentation de XML Historique Intérêts Langages apparentés Dialectes DocBook Conventions Syntaxe de XML Premier exemple Caractères URI, URL et URN Syntaxe et structure Composition globale d'un document Prologue Corps du document Exemples minimaux XInclude DTD Un premier exemple Déclaration de la DTD Contenu de la DTD Commentaires Entités Déclaration d'élément Déclaration d'attribut Outils de validation Espaces de noms Introduction Identification d'un espace de noms Déclaration d'un espace de noms Portée d'une déclaration Espace de noms par défaut Attributs Espace de noms XML Espaces de noms et DTD Quelques espaces de noms classiques Schémas XML Introduction Un premier exemple Structure globale d'un schéma Déclarations d'éléments Définitions de types Constructions de types Déclarations d'attributs Extension de types Restriction de types Substitutions Groupes d'éléments et d'attributs Contraintes de cohérence Espaces de noms Imports d'autres schémas Expressions rationnelles XPath Données et environnement Expressions de chemins iii L'essentiel de XML 6.3. Valeurs atomiques Listes Comparaisons Structures de contrôle Syntaxe abrégée Motifs Utilisation interactive de xmllint Récapitulatif des opérateurs XPath Schematron Introduction Premier exemple Fonctionnement Structure globale d'un schematron Règles Règles abstraites Blocs abstraits Phases de validations XSLT Principe Premier programme : Hello, World! Modèle de traitement Entête Définition et application de règles Construction de contenu Structures de contrôle Tris Variables et paramètres Fonctions d'extension XPath Modes Indexation Documents multiples Analyse de chaînes Import de feuilles de style XSL-FO Premier exemple Structure globale CSS Principe Règles Héritage et cascade Modèle de boîtes Style et XML Attachement de règles de style Principales propriétés SVG Un premier exemple Éléments de dessins Transformations Indications de style Courbes de Bézier et B-splines Programmation XML SAX DOM Comparaison AJAX A. Acronymes Bibliographie Index iv Chapitre 1. Présentation de XML Le langage XML (extended Markup Language) est un format général de documents orienté texte. Il s'est imposé comme un standard incontournable de l'informatique. Il est aussi bien utilisé pour le stockage de documents que pour la transmission de données entre applications. Sa simplicité, sa flexibilité et ses possibilités d'extension ont permis de l'adapter à de multiples domaines allant des données géographiques au dessin vectoriel en passant par les échanges commerciaux. De nombreuses technologies se sont développées autour de XML et enrichissent ainsi son environnement. Le langage XML dérive de SGML (Standard Generalized Markup Language) et de HTML (HyperText Markup Language). Comme ces derniers, il s'agit d'un langage orienté texte et formé de balises qui permettent d'organiser les données de manière structurée Historique L'historique suivant retrace les grandes étapes qui ont conduit à la naissance de XML. L'ancêtre de XML est le langage SGML qui a été introduit en 1986 par C. Goldfarb. SGML a été conçu pour des documentations techniques de grande ampleur. Sa grande complexité a freiné son utilisation en dehors des projets de grande envergure. En 1991, T. Berners-Lee a défini le langage HTML pour le WEB. Ce langage est une version simplifiée à l'extrême de SGML, destinée à une utilisation très ciblée. XML est, en quelque sorte, intermédiaire entre SGML et HTML. Il évite les aspects les plus complexes de SGML tout en gardant suffisamment de souplesse pour une utilisation généraliste. La version 1.0 de XML a été publiée en 1998 par le consortium W3C (World Wide Web Consortium). Une redéfinition XHTML de HTML 4.0 à travers XML a été donnée en Une seconde version 1.1, qui est simplement une mise à jour pour les caractères spéciaux en lien avec Unicode, a, ensuite, été publiée en Intérêts XML est devenu omniprésent dans le monde de l'informatique. De nombreux standards sont apparus et permettent à des applications différentes de stocker mais surtout de partager des documents. L'exemple le plus emblématique et le plus connu est le format OpenDocument qui est utilisé par OpenOffice, maintenant appelé LibreOffice, mais aussi par d'autres suites bureautiques comme KOffice. Un autre exemple est le format de dessins vectoriels SVG [Chapitre 11] utilisé par Inkscape. Ce succès de XML est en grande partie dû à ses qualités. Nous allons d'abord énumérer ces caractéristiques essentielles qui ont conduit à ce développement puis nous allons les détailler plus en profondeur. Séparation stricte entre contenu et présentation Simplicité, universalité et extensibilité Format texte avec gestion des caractères spéciaux Structuration forte Modèles de documents (DTD [Chapitre 3] et Schémas XML [Chapitre 5]) Format libre Une des idées directrices de XML est la séparation entre contenu et présentation. Il faut bien distinguer le contenu d'un document et la présentation qui en est donnée. Un même contenu peut être rendu de façons très différentes. Cet ouvrage peut, par exemple, se présenter comme un livre imprimé ou comme une collections de pages WEB. Le contenu est constitué, au départ, de textes et d'illustrations mais aussi de liens entre ces éléments. L'organisation du texte en chapitres, sections et sous-sections ainsi que les renvois entre chapitres font partie intégrante du contenu du document. La présentation est au contraire la façon de présenter ce contenu au lecteur. Un des premiers principes de XML est d'organiser le contenu de manière indépendante de la présentation. Ce principe de séparation est déjà présent dans HTML. Le rendu d'une page HTML est globalement confié au navigateur. Les paragraphes des documents HTML sont, par exemple, écrits au kilomètre, sans indication de fins de lignes. Il appartient au navigateur de les découper en lignes en fonction de la taille de la page. C'est très différent d'un document PDF 1 Présentation de XML où le découpage en pages et en lignes est figée par le document. La séparation n'est cependant pas totale en HTML. Certaines balises comme ul et li sont destinées à la structuration du document. Pour ces deux balises, il s'agit d'écrire une énumération. La présentation de cette énumération (marges, symbole marquant chaque entrée, ) est déléguée au navigateur. D'autre balises comme i ou b donnent davantage des indications de présentation. Cette séparation entre contenu et présentation a été accrue en HTML par l'introduction de CSS [Chapitre 10]. Une feuille de style CSS est chargée de donner au navigateur toutes les informations relatives à la présentation. Le document HTML peut alors se recentrer sur la structuration du contenu de façon indépendante de la présentation. Cette séparation entre contenu et présentation est difficile à obtenir. Le rédacteur d'un document a souvent une présentation en tête et il est tentant pour lui d'essayer de l'imposer. La séparation est encore plus marquée en XML car la signification des balises n'est pas figée comme en HTML. La règle est alors de choisir les balises pour organiser le document en privilégiant la structure de celui-ci par rapport à une éventuelle présentation. Un second principe de XML est une structuration forte du document. Pour illustrer ce principe, la même adresse est donnée ci-dessous dans un style HTML puis dans un style XML. Olivier Carton br/ 175, rue du Chevaleret br/ Paris br/ address personname firstname olivier /firstname surname carton /surname /personname street streetnumber 175 /streetnumber streetname rue du Chevaleret /streetname /street zipcode 75013 /zipcode city paris /city /address Les deux adresses contiennent les mêmes informations purement textuelles. La suppression des balises comme br/ ou firstname donne le même résultat pour les deux adresses. Les balises br/ présentes dans la première adresse permettent le découpage en ligne et la balise tt indique une police de caractères appropriée pour l'adresse électronique. Le rôle de ces balises est seulement d'assurer un rendu correct de l'adresse. Les balises dans la première adresse relèvent de la présentation alors que les balises dans la seconde adresse comme firstname ont un rôle sémantique. Ces dernières structurent les données textuelles et ajoutent ainsi de l'information. Le nom est, par exemple, décomposé en prénom et nom. Cette information supplémentaire facilite le traitement des données. Il devient, par exemple, très facile de mettre le nom en majuscule. En revanche, le rendu exact de l'adresse électronique est à la charge de l'application traitant l'adresse. L'adresse électronique peut, par exemple, être supprimée si l'adresse est utilisée pour une lettre. Une des caractéristiques essentielles de XML est son extensibilité et sa flexibilité. Contrairement à HTML, le vocabulaire, c'est-à-dire l'ensemble des balises autorisées, n'est pas figé. La norme HTML fixe les balises pouvant apparaître dans un document ainsi que leur imbrication possible. À titre d'exemple, la balise li peut uniquement apparaître dans le contenu d'une balise ul ou ol . En revanche, les noms des balises XML sont libres. Il appartient aux auteurs de documents de fixer les balises utilisées. Il est seulement nécessaire que les auteurs s'entendent sur le vocabulaire, c'est-à-dire la liste des balises utilisées, lorsque des documents sont échangés. Cette liberté dans les noms de balises permet de définir des vocabulaires particuliers adaptés aux différentes applications. Il existe ainsi des vocabulaires pour décrire des dessins vectoriels, des échanges commerciaux ou des programmes de télévision. Ces vocabulaires particuliers sont appelés dialectes XML. Il en existe des centaines voire des milliers pour couvrir tous les champs d'application de XML. La liberté dans le choix des noms de balises implique une contrepartie. Il devient nécessaire de fixer des règles que doivent respecter les documents. Sans ces règles, il n'est pas possible d'échanger et de traiter de manière automatique ces documents. Ces règles doivent d'abord fixer le vocabulaire mais aussi les relations entre les 2 Présentation de XML balises. Les règles peuvent, par exemple, imposer qu'une balise address (cf. exemple ci-dessus) contiennent exactement une balise zipcode et une balise city sans pour autant fixer l'ordre de ces deux balises. Ces ensembles de règles portant sur les documents XML sont appelés modèles de documents. Plusieurs langages ont été développés pour décrire ces modèles. Le premier de ces langages est celui des DTD (Document Type Definition) qui est hérité de SGML. Des langages plus puissants, parmi lesquels les schémas ou relax NG, ont été introduits depuis pour remplacer les DTD. L'intérêt principal de ces modèles de documents est de pouvoir décrire explicitement les règles à respecter pour un document et de pouvoir vérifier si un document donné les respecte effectivement. Avant ces modèles de documents, il n'était pas rare que les données à fournir à un logiciel ne fussent pas décrites de façon très précise. Il n'était alors pas toujours facile de prévoir si des données seraient acceptées par le logiciel, et si ce n'était pas le cas de déterminer lequel des données ou du logiciel était en cause. Les modèles de document tels que les DTD ou les schémas peuvent servir à une vérification automatique des documents. Il existe plusieurs implémentations de ces modèles. Cela autorise la vérification qu'un document donné satisfait ou non les contraintes spécifiées par une DTD ou un schéma. Lorsque les entrées possibles d'un logiciel sont décrites par un tel modèle, il est possible de vérifier de façon indépendante du logiciel que les données sont correctes. Cette possibilité est particulièrement intéressante lors d'échanges de documents. Bien que les données présentes dans un document XML soient fortement structurées, le format XML est un format basé sur du texte. Il est ainsi possible de manipuler un document XML à l'aide d'un simple éditeur de texte. Il n'est pas nécessaire d'utiliser un logiciel spécialisé. Il existe bien sûr des logiciels spécialement conçus pour l'édition de documents XML. Ceux-ci peuvent grandement faciliter la tâche de l'auteur mais ils ne sont pas indispensables. Cet ouvrage a, par exemple, été rédigé avec l'éditeur Emacs. Un des atouts d'xml est sa prise en charge native des caractères spéciaux grâce à Unicode. De plus, il est possible d'utiliser les différents codages (UTF-8, Latin-1, ) possibles puisque l'entête d'un document spécifie le codage. De nombreuses technologies se sont développées autour de XML et en facilitent l'utilisation. Un des champs d'application est la manipulation et la transformation de documents XML. Il s'agit, par exemple, de réorganiser un document ou d'en extraire des fragments ou de le transformer complètement dans un autre format comme PDF. Comme tous les documents XML partagent la même syntaxe quel que soit leur vocabulaire, des outils permettent de manipuler ces documents de manière générale en s'affranchissant des aspects syntaxiques. Des langages de haut niveau comme XSLT [Chapitre 8] autorisent la description simple et concise de transformations. Le grand intérêt de ces langages est qu'ils sont indépendants du vocabulaire utilisé et qu'ils s'adaptent à tous les dialectes XML. Le langage XSLT manipule chaque document XML sous la forme d'un arbre issu de la structure des données. Les transformations sont décrites en XSLT par des règles qui s'appliquent aux fragments délimités par les balises. Ce langage XSLT est doublement intéressant. D'une part, il constitue un outil à la fois pratique et puissant et donc d'une grande utilité face à de nombreux problèmes concrets. D'autre part, il représente une approche originale de la programmation car il n'est pas basé sur la programmation impérative ou fonctionnelle de la grande majorité des langages. À ce titre, il est digne d'intérêt en soi. Le langage XSLT est lui-même un dialecte XML car il utilise la syntaxe XML. Des programmes XSLT peuvent être eux-mêmes manipulés et créés par d'autres programmes XSLT. Ce mécanisme est d'ailleurs mis en œuvre par les schematrons [Chapitre 7]. Le langage XML est totalement libre car il est développé par le W3C. Chacun peut l'utiliser sans devoir acheter une quelconque licence. Cette absence de droits favorise le développement de logiciels libres mis à disposition de la communauté. Il existe ainsi une très grande variété de logiciels libres autour de XML qui en couvrent les différents aspects Langages apparentés Un des atouts indéniables de XML est le nombre de technologies et de langages qui se sont développés autour de XML. Ceux-ci enrichissent les outils pour la manipulation des documents XML. La liste ci-dessous énumère les principaux langages qui font partie de l'environnement XML. XLink [ ] et XPointer [ ] (liens entre documents) XML contient déjà un mécanisme pour matérialiser des liens entre des éléments d'un document. XLink et XPointer permettent d'établir des liens entre documents et plus particulièrement entre un élément d'un document et un fragment d'un autre document. Ils généralisent les liens hypertextes des documents HTML en autorisant des liens entre plusieurs documents. 3 Présentation de XML XPath [ ] (langage de sélection) XPath est un langage d'expressions permettant de sélectionner des éléments dans un document XML. Il est la pierre angulaire du langage XSLT pour la transformation de documents. Il est abordé au chapitre 6 de cet ouvrage. XQuery [ ] (langage de requête) XQuery est un langage permettant d'extraire des informations à partir d'un ou plusieurs documents XML et de synthétiser de nouvelles informations à partir de celles extraites. Il s'apparente à un langage d'interrogation de bases de données et joue le rôle de SQL pour les documents XML. Schémas XML [ ] (modèles de documents) Les schémas XML remplacent les DTD héritées de SGML pour décrire des modèles de documents. Ils sont beaucoup plus souples et beaucoup plus puissants que les DTD. Ils sont abordés en détail au chapitre 5 de cet ouvrage. XSLT [ ] (transformation de documents) XSLT est un langage permettant d'exprimer facilement des transformations complexes entre documents XML. Il s'appuie sur la structuration forte des documents XML vus comme des arbres. Chaque transformation est décrite par des règles pour chacun des éléments du document. Il est étudié en profondeur au chapitre 8 de cet ouvrage Dialectes De très nombreux dialectes ont été définis pour appliquer XML à des domaines très variés. Le grand avantage est que ces différents dialectes partagent la même syntaxe de base et que tous les outils XML peuvent être utilisés pour spécifier et manipuler ces documents. Il n'y a nul besoin de développer des outils spécifiques à ces différents dialectes. La liste ci-dessous énumère quelques uns de ces dialectes. RSS [ ] (Really Simple Syndication) Abonnement à des flux de données XUL [ ] (XML-based User interface Language) Langage de description d'interfaces graphiques développé par le projet Mozilla. SVG [ ] (Scalable Vector Graphics) Description de dessins vectoriels SMIL [ ] (Synchronized Multimedia Integration Language) Description de contenus multimédia MathML [ ] (Mathematical Markup Language) Description de formules mathématiques WSDL [ ] (Web Services Description Language) Description de services WEB OpenStreetMap [ ] Cartes libres XML Signature [ ] Format pour les signatures électroniques 4 Présentation de XML SAML [ ] (Security Assertion Markup Language) Langage d'échange d'authentifications et d'autorisations UBL [ ] (Universal Business Language) Bibliothèque de documents standards pour les échanges commerciaux OpenDocument [ ] Format de document pour les applications bureautiques développé au départ pour OpenOffice mais aussi utilisé par d'autres logiciels libres comme Calligra DocBook [ ] Format de documentation technique De nombreux projets informatiques, comme Ant ou Android utilisent XML pour le stockage de données et en particulier pour les fichiers de configuration DocBook DocBook est un exemple typique d'utilisation de XML. Il s'agit d'un format pour écrire des documents techniques. Il est particulièrement adapté à la rédaction de documentations de logiciels. Il est d'ailleurs utilisé par de nombreux projets de logiciels libres, éventuellement de grande ampleur, comme le projet K
Similar documents
View more...
Search Related
We Need Your Support
Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

Thanks to everyone for your continued support.

No, Thanks
SAVE OUR EARTH

We need your sign to support Project to invent "SMART AND CONTROLLABLE REFLECTIVE BALLOONS" to cover the Sun and Save Our Earth.

More details...

Sign Now!

We are very appreciated for your Prompt Action!

x