Connaître la théorie du langage XML - Partie 2. Didier RICHARD (IGN) d'après un support de cours de Véronique LEMAIRE

Documents pareils
Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

Autour du web. Une introduction technique Première partie : HTML. Georges-André SILBER Centre de recherche en informatique MINES ParisTech

Faculté de Génie Chaire industrielle en infrastructures de communication. La technologie XML. Wajdi Elleuch

XML, PMML, SOAP. Rapport. EPITA SCIA Promo janvier Julien Lemoine Alexandre Thibault Nicolas Wiest-Million

SII Stage d informatique pour l ingénieur

Programmation des Applications Réparties. Parsers XML DOM et SAX

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

Evolution et architecture des systèmes d'information, de l'internet. Impact sur les IDS. IDS2014, Nailloux 26-28/05/2014

Livre Blanc WebSphere Transcoding Publisher

Outils logiciels pour l'ingénierie documentaire

Petite définition : Présentation :

PIVOT. Pivot/Querier Documentation technique XML/XSD/XSLT

Programmation Internet Cours 4

Les Services Web. Jean-Pierre BORG EFORT

Les outils de création de sites web

Internet. DNS World Wide Web. Divers. Mécanismes de base Exécution d'applications sur le web. Proxy, fire-wall

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

L architecture des services Web

Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr

Enseignement Informatique. Classe de BTS DATR 1

7.0 Guide de la solution Portable sans fil

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

Introduction à Microsoft InfoPath 2010

SP1 : Intégration d'une vidéo dans une mardi 21/01/2014. page web, fonction du format vidéo et 3 mercredi 22/01/2014

Les services usuels de l Internet

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Les grandes facettes du développement Web Nicolas Thouvenin - Stéphane Gully

Gestion documentaire (Extraits du CCI version 1.2)

Formation Webmaster : Création de site Web Initiation + Approfondissement

Formation : WEbMaster

PROSOP : un système de gestion de bases de données prosopographiques

OASIS Date de publication

Systèmes d'informations historique et mutations

Devenez un véritable développeur web en 3 mois!

Thierry BOULANGER. par la pratique. Bases indispensables Concepts et cas pratiques XML. 3 ième édition. Nouvelle édition

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Accès à l'information XML par des requêtes XQuery au travers de son XSchema

Manuel d intégration API FTP SMS ALLMYSMS.COM

Système de gestion de contenu

les techniques d'extraction, les formulaires et intégration dans un site WEB

WORDPRESS : réaliser un site web

Webmaster / Webdesigner / Wordpress

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

Faculté Polytechnique de Mons. Le processus d Extraction, Transformation et Load (ETL) dans des entrepôts de données XML

Chapitre IX. L intégration de données. Les entrepôts de données (Data Warehouses) Motivation. Le problème

Programmation Web. Introduction

Programmation Web Avancée Introduction aux services Web

Architectures web/bases de données

HMTL. Exemple de fichier HTML. Structure d un document HTML. Exemple de fichier HTML. Balises HTML. IFT1147 Programmation Serveur Web avec PHP

XML : documents et outils

Dévéloppement de Sites Web

Master d Informatique Corrigé du partiel novembre 2010

Sage CRM. 7.2 Guide de Portail Client

Web Application Models

DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova

4. SERVICES WEB REST 46

Sage CRM. Sage CRM 7.3 Guide du portable

Programmation Web. Madalina Croitoru IUT Montpellier

LE CONCEPT DU CMS CHAPITRE 1

QCM Corrigé. Damien Palacio 1/5

Audit de site web. Accessibilité

3. RÉALISATION ET QUALIFICATION D UN PROTOTYPE 3.1 Réalisation d un prototype CRÉATION D UNE PAGE WEB STATIQUE AU FORMAT HTML

Programmation Web TP1 - HTML

ECLIPSE ET PDT (Php development tools)

Module http MMS AllMySMS.com Manuel d intégration

WEBSEMINAIRE INTRODUCTION AU REFERENCEMENT

Installation de DocBook sur un système Linux

Service WEB, BDD MySQL, PHP et réplication Heartbeat. Conditions requises : Dans ce TP, il est nécessaire d'avoir une machine Debian sous ProxMox

Mise en service HORUS version HTTP

Programmation Internet

Le stockage local de données en HTML5

THEME PROJET D ELABORATION D UNE BASE DE DONNEES SOUS LE SERVEUR MYSQL

Module BD et sites WEB

Modules du DUT Informatique proposés pour des DCCE en 2014/2015

XML et recherche d information

SECTION 5 BANQUE DE PROJETS

PROGRAMME DE LA 1ERE JOURNEE DE FORMATION : QUALITE WEB ET REFERENCEMENT NATUREL

Gestion d identités PSL Exploitation IdP Authentic

IFIPS 5 / Nouvelles Architectures Logicielles Projet : Bus de web services avec «moteur» BPEL

Adobe Technical Communication Suite 5

Les outils actuels permettent-ils d automatiser la production de cartes? De quels outils dispose-t-on?

Dans nos locaux au 98 Route de Sauve NÎMES. Un ordinateur PC par stagiaire, scanner, imprimante/copieur laser couleur

XML et Bases de données. Les bases de données XML natives.

Système de Gestion de Ressources

Master Technologies numériques appliquées à l'histoire Deuxième année

Qu'est-ce que XML? XML : Extensible Markup Language. Exemple de document SGML SGML

Pelleas : Le projet XML pour le systeme d information documentaire du polytechnicum de Marne- la Vallée

<?xml version="1.0" encoding="iso " standalone="yes"?>

Optimisation des échanges et traitements XML

Activité sur Meteor. Annexe 1 : notion de client-serveur et notion de base de données

Annonceurs et professionnels qui l'ont expérimentée le savent, la mixité des canaux est aujourd'hui une stratégie gagnante en marketing direct.

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

Certificat Informatique et internet Niveau 1 TD D1. Domaine 1 : Travailler dans un environnement numérique évolutif. 1. Généralités : Filière

Projet de Conception N 1 Automatisation d'un processus de paiement. Livrable: Spécification du système de compensation

Fichiers, dossiers, enregistrer et arborescence

Authentification avec CAS sous PRONOTE.net Version du lundi 19 septembre 2011

Qualité web : les bonnes pratiques front-end

Transcription:

Connaître la théorie du langage XML - Partie 2 Didier RICHARD (IGN) d'après un support de cours de Véronique LEMAIRE Janvier 2017

Table des matières I - Pourquoi le XSD? 3 1. Schémas XML (XSD)... 3 2. Les types simples... 4 3. Les types complexes... 8 4. Déclaration d'un schéma pour un XML... 11 5. Exercice : Exercice n 4... 12 6. XSL... 12 7. Les mots clés du langage XSLT... 15 8. Exercice : Exercice n 5... 17

Pourquoi le XSD? I Schémas XML (XSD) 3 Les types simples 4 Les types complexes 8 Déclaration d'un schéma pour un XML 11 Exercice : Exercice n 4 12 XSL 12 Les mots clés du langage XSLT 15 Exercice : Exercice n 5 17 1. Schémas XML (XSD) Cette partie est beaucoup plus complexe que les précédentes. Le lecteur doit avoir quelques connaissances en programmation... Définition : Pourquoi un modèle? La syntaxe des DTD est issue du langage SGML ( Standard Generalized Markup Language), beaucoup plus compliqué et lourd que ne l'est le langage XML. Le XML langage universel doit permettre un ensemble cohérent d'applications depuis la définition des modèles jusqu'à leur présentation en passant par leur structuration... Pour des soucis d'homogénéité, il fallait développer un langage de définition de documents basé sur XML. La définition de schémas XML (XML Schema Definition en anglais ou XSD) apporte une grande souplesse et une puissance inégalée dans la définition des documents XML. La fonctionnalité la plus remarquable des schémas XML est la prise en charge des types de données (contenu garanti et validation plus efficace). Le XSD permet aussi un modèle plus exhaustif car définissant les éléments et la structure, avec les occurrences, les contenus mixtes, les groupes d'attributs... Enfin, l'extensibilité des définitions des documents apportée par les schémas XML, facilite l'échange, la fusion ou la réutilisation de données provenant d'une ou plusieurs sources. Effectivement, à l'instar des documents XML, les schémas XML pourront désormais se combiner en se fusionnant complètement ou partiellement afin de créer un modèle de contenu composite. D'ailleurs, plusieurs schémas peuvent être référencés à l'intérieur d'un unique document XML et donc valider la structure et le contenu de ce dernier. La génération dynamique de documents XML et du modèle de contenu associé, devient alors beaucoup plus commode. Évidemment, cela demande une certaine compatibilité entre les schémas susceptibles d'être combinés en passant par une normalisation entre distributeurs des contenus ou en utilisant des XSD «standards». Ce langage de schéma constitue donc une pièce essentielle dans la sphère XML, assurant une évolutivité, un dynamisme et une souplesse que ne pouvait assumer le langage de DTD. Généralités Le schéma commence par un élément racine, xsd:schema est la racine de tout XSD, il est caractérisé par des attributs qu'il faut renseigner : attributeformdefault : permet de savoir si les attributs doivent être munis de l'espace de 3

noms ou pas ; blockdefault : empêche par défaut l'utilisation de types dérivés dans des éléments attendant un type de base : extension restriction substitution elementformdefault : permet de savoir si les éléments doivent être munis de l'espace de noms ou pas ; finaldefault empêche la dérivation de type par restriction, extension ou les deux ; id précise un identificateur unique pour le schéma ; targetnamespace indique un namespace cible pour tout élément étranger au schéma XML ; version indique un numéro de version du schéma ; xml:lang précise la langue dans laquelle est conçu le document. Et bien sûr on peut définir la liste de namespaces utilisés avec xmlns. Le préfixe de l'espace de noms des schémas est très souvent xsd ; la forme xs est aussi utilisée : L'élément include permet d'inclure un shéma XML d'un même espace de noms dans un autre schéma pour l'utiliser : L'élément import permet d'importer un schéma XML avec un espace de noms différent dans un autre schéma pour l'utiliser : 2. Les types simples Un type simple est une balise XML qui ne contient que du texte, donc pas d'attribut. La notion «que du texte» est trompeuse dans le sens où ce texte peut prendre plusieurs formes et recouvrir plusieurs types au sens informatique du terme. Il en existe une liste assez longue d'une quarantaine de possibilités parmi lesquelles on pourra retenir xsd:string, xsd:integer, xsd:decimal, xsd:time, xsd:boolean, xsd:date... 4

La définition d'un élément L'élément xsd:element permet de définir un élément du document XML et d'y associer des propriétés. Si on a un type simple (i.e. atomique et sans attributs), la définition se fait simplement, si on souhaite un type simple personnalisé on utilise la balise <xsd:simpletype> et si on souhaite un type complexe on utilise la balise <xsd:complextype> et enfin si on veut un groupe, on utilise la balise <xsd:group>! Les attributs associés à xsd:element sont répertoriés dans le tableau suivant : Définition : La définition d'un élément L'élément xsd:element permet de définir un élément du document XML et d'y associer des propriétés. Si on a un type simple (i.e. atomique et sans attributs), la définition se fait simplement, si on souhaite un type simple personnalisé on utilise la balise <xsd:simpletype> et si on souhaite un type complexe on utilise la balise <xsd:complextype> et enfin si on veut un groupe, on utilise la balise <xsd:group>! Les attributs associés à xsd:element sont répertoriés dans le tableau suivant : 5

Complément On peut donc couvrir la majorité des cas qu'on rencontrera pour les types simples. Il est également possible de dériver des types simples : en les restreignant ; en définissant un format à adopter ; en créant une énumération ; en créant une liste d'éléments d'un type donné. La restriction de type simple donnera par exemple : 6

Définition d'un format donnera par exemple : Énumération donnera par exemple Liste donnera par exemple : 7

3. Les types complexes Les types complexes sont définis de différentes manières : par une extension d'un type simple auquel on adjoint un attribut ; par une séquence, un choix ou une suite d'éléments simples ; par un groupe. On peut les dériver à partir des types simples en y ajoutant simplement un attribut par exemple de la manière suivante : donnera par exemple : On peut décider de réaliser une séquence d'éléments de types définis. Dans l'exemple suivant, on voit comment faire référence à un élément défini par ailleurs dans le XSD et comment on définit les attributs (déjà vu dans l'exemple précédent) : donnera par exemple : 8

On peut indiquer qu'un élément prend au choix une structure ou une autre comme dans l'exemple suivant : donnera par exemple : On peut enfin décrire une suite d'éléments simples sans ordre obligatoire : 9

donnera par exemple : De plus, on peut aussi définir, via la balise complexcontent, un type plus complexe encore : donnera par exemple : 10

4. Déclaration d'un schéma pour un XML Plusieurs notions entrent en jeu pour lier un document XML et son schéma, ainsi que les schémas nécessaires à la compréhension des données. Tout d'abord, le schéma qui décrit la structure des données appartient à un espace de nommage qu'il convient de déclarer : Il est possible aussi d'indiquer que cet espace de nommage est celui par défaut pour éviter d'avoir à préfixer toutes les balises dans le document : À l'instar des DTD où il est nécessaire d'indiquer si elle est locale (SYSTEM) ou externe (PUBLIC), il est conseillé d'indiquer où se trouve le schéma du document XML via l'un des attribut xsi:nonamespaceschemalocation quand le schéma est local ou xsi:schemalocation s'il est externe. Ce faisant, on introduit un nouvel espace de nommage qu'il convient de définir : On utilise ensuite l'un des attributs xsi:nonamespaceschemalocation ou xsi:schemalocation pour lier l'uri et la localisation du schéma. Plusieurs associations sont possibles : 11

Exemple d'une déclaration avec des espaces de nommage multiples : 5. Exercice : Exercice n 4 Consignes Écrire le schéma qui décrit le fichier XML ; Valider le schémas XML ; Modifier le fichier XML pour utiliser ce schéma XML L'exercice est à rendre au tuteur, le déposer dans l'espace "dépôt des devoirs" 6. XSL Définition : XSL, qu'est-ce que c'est? Le langage XSL est à XML ce que CSS/Javascript est à HTML : il permet d'effectuer une visualisation/modification du contenu décrit dans un fichier XML ; Le langage XSL se divise en deux parties principales : Le formatage : application de règles de style sur des éléments XML à l'instar du langage CSS ; La transformation : substitution d'un marquage XML en un balisage HTML ou un autre marquage XML ou autre texte... Remarque : XSL : la feuille de style du XML Tout comme pour XSD, cette partie du cours est encore plus complexe! 12

Fondamental : Généralités Le langage XSL est à XML ce que CSS est à HTML dans une première approche : il permet d'effectuer une visualisation du contenu décrit dans un fichier XML. Le langage XSL se divise en deux parties principales : Le formatage : application de règles de style sur des éléments XML à l'instar du langage CSS ; La transformation : substitution d'un marquage XML en un balisage HTML ou un autre marquage XML ou rien (texte)! La partie formatage du langage XSL (extensible Stylesheet Language) a une fonction semblable à celle du langage CSS (Cascading StyleSheet) en ce qu'elle applique des règles à des éléments ou attributs du XML. Le langage XSL, par une série de règles de transformation, remplace les éléments XML et leurs attributs en balisage HTML (HyperText Markup Language) ou en d'autres marqueurs XML ou en texte brut. Cette section du langage XSL s'appelle XSLT, soit Langage des feuilles de Style de Transformation dont les spécifications sont mises au point par le W3C (World Wide Web Consortium). Par exemple, un document XML qui contiendrait cet ordre est régi par XSLT : On peut appliquer du XSL de trois manières : 1. 2. 3. La première solution demande à l'ordinateur client de posséder impérativement un navigateur compatible avec les technologies (tous les navigateurs le sont désormais) ; La seconde solution demande un aménagement logiciel du serveur web avec, par exemple, un programme XML Enabler d'ibm, afin de le rendre compatible aux technologies XML/XSL ; Enfin, la dernière solution consiste à installer un moteur de transformation XML nommé XT (XML Transformer) associé à un analyseur (ou parser) conforme à SAX (Simple API for XML) ou DOM (Document Object Model). C'est la solution la plus technique (CGI, Node.js, etc... ) et indépendante des ordinateurs clients. De nombreux programmes permettent de mettre à niveau son serveur : JAXP édité par Sun Microsystems ; Xalan & Xerces édités par l'organisation Apache ; XP & XT édités par l'auteur des spécifications XSL, James Clark ; MSXML 4.0 édité par Microsoft ; XML Parser édité par IBM. L'entête d'un fichier XSL se compose : Du prologue d'un fichier XML (puisqu'un fichier XSL est un fichier XML!) ; Des espaces de noms correspondant (donc au moins xmlns:xsl); Du document de sortie (vers quoi on transforme le document XML). Globalement, on utilise html, xml (par défaut) ou text. Les espaces de noms associés à XSL sont : pour XSLT : http://www.w3.org/1999/xsl/transform ; 13

pour XSL-FO : http://www.w3.org/1999/xsl/format/1.0 (formatage du XML) Définition : Les motifs (patterns) Pourquoi le XSD? Les patterns sont les expressions utilisées pour sélectionner les nœuds d'un document XML et on les utilise dans les attributs select ou match des éléments du XSLT. Le tableau ci-après permet de présenter les motifs possibles ainsi que ce qu'ils représentent. Ils viennent en complément du langage XPATH que nous étudierons dans le paragraphe suivant. Le langage XPath On utilise les patterns pour pouvoir sélectionner les nœuds (on se rappelle qu'un document XML est un arbre... ). Un axe nodal ouvre des «directions de recherche» indiquées par le préfixe avant les patterns et les deux points. Un prédicat est une expression entre crochets permettant de cibler au mieux une partie de l'arborescence XML. Une fonction nodale peut être booléenne, calculatoire, etc. Le tableau suivant récapitule les principaux axes nodaux écrits de manière complète : Il existe une façon abrégée de présenter les axes nodaux et qui correspondent à des représentations des axes nodaux présentés ci-dessus avec des symboles simplificateurs. Le tableau ci-dessous présente tous les nœuds abrégés qui existent : 14

7. Les mots clés du langage XSLT Il existe un certain nombre de mots clés principaux en XSLT : template apply-templates value-of element attribute attribute-set choose associé à when et otherwise if L'élément template permet de définir une règle de modèle, c'est-à-dire, par l'intermédiaire de la valeur de l'attribut match, des éléments seront prêts pour l'application de règles de style : La construction suivante applique le modèle sur le motif pattern : Les règles de modèle permettent d'effectuer la même mise en forme pour tout élément identique (pour chaque pattern qui correspond). On peut aussi utiliser la forme nommée : et le template se comporte alors comme une fonction! Pour l'appeler on utilise la construction suivante avec éventuellement des paramètres : 15

Pour récupérer la valeur d'un nœud, on utilise : et on récupérera alors la partie textuelle contenue dans le motif (pattern) Attention : cette instruction XSL ne peut gérer qu'un élément à la fois contrairement à apply-templates qui permet d'assurer la récursivité d'une opération sur tous les patterns qui correspondent. On utilise element et attribute pour pouvoir créer des éléments et attributs en sortie. L'attribut name correspond au nom de l'élément ou de l'attribut : On génère ainsi un fragment XML qui vaut : L'élément choose combiné avec when et otherwise, permet de construire des tests conditionnels à l'instar des commandes switch de Java ou Javascript. L'élément if permet de construire un test simple (pas de sinon... ). Pour commencer un fichier XSL, on a deux possibilities en termes d'éléments racines : 16

l'instruction stylesheet est l'élément racine des feuilles de style : Un synonyme existe pour cet élément racine, il s'agit de transform. Ce dernier possède la même fonction et les mêmes attributs : Par convention, transform peut être utilisé pour les feuilles de style de transformation et stylesheet pour celles de formatage. Mais cela n'a aucun caractère obligatoire. 8. Exercice : Exercice n 5 Consignes Transformer le fichier XML des stagiaires en une page web : Écrire le fichier XSL ; Valider-le ; Trouver un service en ligne qui effectuera la transformation. L'exercice est à rendre au tuteur, le déposer dans l'espace "dépôt des devoirs" 17