XML: Rappels Concepts de Base

Slides:



Advertisements
Présentations similaires
Introduction aux Web Services Partie 1. Technologies XML
Advertisements

XML.
XML eXtensible Markup Language
Transformation de documents XML
Xavier Blanc Web Services Xavier Blanc
DTD Sylvain Salvati
Conception de Site Webs Interactifs Cours 4
Première expérience d’utilisation des Web Services dans SmartTools Didier Parigot Projet OASIS INRIA Sophia www-sop.inria.fr/oasis/SmartTools Journée.
Cours MIAGE Henry Boccon-Gibod1 XML, langage de structuration Modélisation structurelle en XML de Messages et de Documents.
Cours MIAGE Henry Boccon-Gibod 1 Extensible Mark up Language Modélisation structurelle de Messages e t de Documents en XML XML Schema.
Les espaces de nommage XML par Philippe Poulard 1
UML - Présentation.
XHTML EXtensible HyperText Markup Language. HTML et XML HTML (HyperText Markup Language) et XML (eXtensible Markup Language) sont deux spécifications.
Cours 1.2 : Introduction au langage XML
Domaines nominaux XSLT
Nicolas Singer Maître de conférence, université Champollion
Introduction Concepts fondamentaux Éléments d’architecture
Gestion de la persistance des objets
Introduction et Concepts : De SGML à XML
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
UML : GENERALITES Rappel Diagrammes Niveaux de visions
Cours 3: Base de donnée XML
Etude des Technologies du Web services
Modélisation E/R des Données
Introduction à la structuration des documents: les techniques M2: Gestion des connaissances.
Notions sur le XML Réfs : manuel p 149. Introduction Le XML (eXtensible Markup Language) est un standard d'échange de données. Il fait partie comme le.
<XML/> Bruno GRILHERES (EADS CASSIDIAN)
STAF 2X XSL/FO Glaus & Ruckstuhl Mars © Glaus & Ruckstuhl TECFA Programme du 18 et 19 mars Revision XML Introduction à XSL/FO (intérêts et.
An Introduction to distributed applications and ecommerce 1 1 Les services Web, XML et les places de marchés.
Jonathan Montois Cyrille Kriegel
Origine et Concepts de base
Les feuilles de style CSS
Initiation à XML Sebti Foufou.
8 - XML Cours XML.
XML-schema. Pourquoi XML-schema Les DTD : Pas de typage, peu de contraintes sur les contenus nombre d'apparitions d'un élément à choisir entre 0 et 1.
Programmation Web : Introduction à XML
Technologies web et web sémantique TP3 - XML. XML eXtensible Markup Language (langage extensible de balisage) – Caractéristiques: méta-langage = un langage.
XML: Plan I. Origines et base 3 II. DTD et Schéma 47
Seminaire XML B. Rothenburger A. Nouvel XML XSD XSL IRIT Toulouse Disponible Consultable dans l'équipe 21...
Conception et Manipulations des Documents
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
Séminaire (6-12 Février 2007) Promo. M2 ESCE-Tunis 2006/07
SMIL Synchronized Multimedia Integration Language
Campus-Booster ID : **XXXXX Copyright © SUPINFO. All rights reserved Le développement Web.
Introduction à XML Yves Bekkers. Plan Introduction - structurer l’information Les langages à balises - un peu d’histoire XML - concepts de base Outils.
II. Conception et Manipulation des Documents 1. Introduction 2. DTD 3. Schéma 4. Outils.
Soutenance du mémoire de synthèse
Initiation au JavaScript
Module : Langage XML (21h)
Modélisation des documents: DTD et Schéma
1. Introduction 2. DTD 3. Schémas
XSD XML Schema Definition Année universitaire UP web.
Page 1 © Expert-IT s.a. - Développer des projets en XML Pratique.
Document Type Definition (DTD) Plan 2.1Introduction 2.2Déclaration de Document Type 2.3Déclaration d’élément Type 2.3.1Séquences, Choix, indicateurs d’Occurrence.
1 XML: Plan Partie 1 I. Origines et base II. DTD et Schéma III. XSL et présentation IV. Web Services.
eXtensible Markup Language. Généralités sur le XML.
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Architectures Orientées Services Module 1 Rappels sur XML,
1 Structure en MC Principes Stockage des données dans la mémoire volatile d’un ordinateur Problèmes Stockage temporaire «Petits» volumes de données Langages.
Introduction à SVG Scalable Vector Graphic. Informations ● Plus d'informations ici (draft, tutoriaux, outils... ): –
ACCARY-BARBIER / CNAM - Cycle C ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath.
Introduction et Concepts : De XML
Nouvelles Technologies Internet & Mobile
SOAP et les RPC XML SOAP WSDL RPC. Rappels sur le XML Langage avec des balises Très lisible Pour stocker des données Séparation entre contenu et présentation.
Introduction et Concepts : De SGML à XML 1. Origines et Objectifs 2. SGML et HTML 3. Introduction à XML 4. XML pour quoi faire ? 1.
XML : un métalangage pour la description de documents structurés XML a été défini par le consortium W3 en fonction de 2 objectifs: Compenser les limitations.
Introduction Module 1.
XML les données réellement portables La nécessité d’un format de données universel et lisible se faisait sentir depuis longtemps, aujourd’hui avec le développement.
XML Introduction. Langage XML eXtensible Markup Language XML permet de créer des documents Avec des balises propres au document Langage «extensible» Représentant.
DTD - Y. Bekkers - IFSIC1 DTD Document Type Definition Yves Bekkers Mise à jour : 31 mai 2016.
1 Programmation Web Programmation WAMP/LAMP Premiers principes.
Transcription de la présentation:

XML: Rappels Concepts de Base 1. Origines et Objectifs 2. Concepts de base 3. XML pour quoi faire ? ©GG

1. Origine et objectifs La gestion de données s'est divisée en deux branches vers 1970: BD structurées (Réseau, Relationnel, Objet) Tables objet-relationnel Langage de requêtes SQL Gestion de documents (GED) Documents balisés Recherche d'information par mots-clés Moteurs de recherche (e.g., Google) XML est issu de la Gestion de Documents (GED) ©GG Origines

GED Séparation du fond de la forme. Langage à balises Forme = présentation à partir de la structure (style) Fond = structure + données (contenu) Langage à balises encadrement des champs par des balises début et fin Multiples précurseurs dont les plus connues : SGML pour la structuration HTML pour la présentation Approches mélangeant parfois le fond et la forme ! ©GG Origines

Présentation et Structuration Titre Auteur Section Paragraphe XML: Des BD aux Services Web Georges Gardarin 1. Introduction Ces dernières années ont vu l'ouverture des systèmes d'information à l'Internet. Alors que depuis les années 1970, ces systèmes se développaient, le choc Internet … Ainsi, on a vu apparaître une myriade de technologies nouvelles attrayantes mais peu structurantes voir perturbantes. Certaines n'ont guère survécues … L'urbanisation passe avant tout par la standardisation des échanges : il faut s'appuyer sur des standards ouverts, solides, lisibles, sécurisés, capable d'assurer l'interopérabilité avec l'Internet et les systèmes d'information … 2. La société ProXML ©GG Origines

Vue Balisée Les balises (tags) peuvent porter <Livre> <Titre> XML : Des BD aux Services Web</Titre> <Auteur>Georges Gardarin</Auteur> <Section titre = "Introduction"> <Paragraphe>Ces dernières années ont vu l'ouverture des systèmes d'information à l'Internet. Alors que depuis les années 1970, ces systèmes se développaient, le choc Internet … </Paragraphe> <Paragraphe>Ainsi, on a vu apparaître une myriade de technologies nouvelles attrayantes mais peu structurantes voir perturbantes. Certaines n'ont guère survécues … </Paragraphe> <Paragraphe>L'urbanisation passe avant tout par la standardisation des échanges : il faut s'appuyer sur des standards ouverts, solides, lisibles, sécurisés, capable d'assurer l'interopérabilité avec l'Internet et les systèmes d'information … </Paragraphe> </Section> <Section titre= "La Société ProXML"> … </Livre> Les balises (tags) peuvent porter plus ou moins de sémantique ©GG Origines

World Wide Web Consortium W3C - Fondé en 1994 Consortium industriel international accueilli par différents sites MIT/LCS aux Etats-Unis INRIA en Europe Keio University au Japon 448 membres industriels en septembre 2000 MIT Massachussetts Institute of Technology LCS Laboratory for Computer Science INRIA Institut National de la Recherche en Informatique et Automatique ensemble de sociétés et d’organisation telle que : Microsoft , IBM, Intel, Bull, Netscape et bien d’autres ©GG Origines

W3C : dans quel but ? Accroître le potentiel du Web Développer des protocoles communs Assurer l’inter-opérabilité sur le Web entre les différents systèmes Stock d’informations sur les standards et les normes pour développeurs et utilisateurs Code référence pour présenter et promouvoir les différents standards Prototypes variés et exemples d’applications ©GG Origines

Les différents documents émis Note : proposition émise par un organisme ou un groupe Working Draft : document de travail issu d’un groupe formellement reconnu; Proposed Recommendation : proposition représentant un consensus d ’un groupe de travail soumise pour vote aux membres votants; Recommendation : standard accepté par un vote positif. Adopté dans une version, il peut évoluer lors de versions ultérieures. ©GG Origines

XML : objectifs XML= un nouveau langage d'échange basé sur le balisage XML= plus simple que SGML XML= plus ouvert que HTML englobé (XHTML) XML = développé par XML Working Group dirigé par le W3C (depuis 1996) XML 1.0 = recommandation officielle du W3C depuis le 10 février 1998 ©GG Origines

les 10 objectifs de conception: XML doit pouvoir être utilisé sans difficulté sur Internet XML doit soutenir une grande variété d'applications XML doit être compatible avec SGMLet HTML Il doit être facile d'écrire des programmes traitant les documents XML Le nombre d'options dans XML doit être réduit au minimum, idéalement à aucune ©GG Origines

les 10 objectifs de conception Les documents XML doivent être lisibles par l'homme et raisonnablement clairs La spécification de XML doit être disponible rapidement La conception de XML doit être formelle et concise Il doit être facile de créer des documents XML La concision dans le balisage de XML est peu importante ©GG Origines

Forces de XML Séparation de la structure et de la présentation Moins confus que HTML Plus simple que SGML Idéal pour l'échange de données semi-structurées Utilisable entre machines Questions ? ©GG Origines

2. XML: définitions de base XML est un méta-langage universel pour représenter les données échangées sur le Web qui permet au développeur de délivrer du contenu depuis les applications à d'autres applications XML standardise la manière dont l'information est : échangée présentée archivée retrouvée transformée cryptée ... ©GG XML

XML : exemple simple SGML XML HTML XHTML   Document bien formé: <Vin> <Cru>Volnay</Cru> <Region> <Nom>Bourgogne</Nom> <Capitale>Dijon</Capitale> </Region> <Millesime>1995</Millesime> <Millesime>1996</Millesime> <Prix Unite = "Euro"> 10.5 </Prix> </Vin> SGML XML HTML   XHTML Les utilisateurs peuvent définir leurs propres tags Il est possible d'imposer une grammaire spécifique (DTD, Schéma) Les tags indiquent la signification des sections marquées ©GG XML

Concepts du modèle Balise (ou tag ou label) Elément de données Marque permettant de repérer un élément textuel Forme: <balise> de début, </balise> de fin Elément de données Texte encadré par une balise de début et une de fin Les éléments de données peuvent être imbriquées <producteur> <adresse> <rue>A. Briand</rue> <ville>Dijon</ville> </adresse> </producteur> Attribut Doublet nom="valeur" qualifiant une balise <producteur no="160017" region="Bourgogne"> ©GG XML

Exemple complet ©GG XML

Modèle arborescent @Type @Catégorie Nom Restaurant Manager No Adresse Français *** @Catégorie Nom Le Moulin de Mougin Restaurant Manager Dupuis No 7 Des Vignes Adresse Rue Ville Mougin ©GG XML

Présentation textuelle <Restaurant Type="Français" Categorie="***"> <Nom>Le Moulin de Mougin</Nom> <Manager ... >Dupuis</Manager> <Adresse> <No> 7</No> <Rue>Des Vignes</Rue> <Ville>Mougin</Ville> </Adresse> </Restaurant> Arbre sérialisé ©GG XML

Espaces de noms Comment mixer des tags issus de différents langages? Mécanisme intéressant pour l'intégration de contenus préfixe = balise Le préfixe permet de retrouver le langage <tag xmlns:mic="http://www.michelin.com/2001/Guide", xmlns:pj="http://www.pagejaune.com/2001/Annuaire"> <mic:Adresse><ville>Mougins</ville><zip>06212</zip></mic:Adresse> <pj:Adresse>Le Moulin 06 Mougins</pj:Adresse> ©GG XML

Feuilles de style Introduites pour diversifier les présentations CSS (Cascading Style Sheet) mécanisme d'affectation de propriétés visuelles aux balises : fonte, taille, couleur, etc. une balise hérite des propriétés de la parente seulement ce qui est spécifique est redéfini Recommandation du W3C en décembre 1996 Utilisables avec XML ©GG XML

Exemple de CSS @import "truc.css" BODY { color: #000 ; <LINK REL="stylesheet" HREF="fichier.css"> [ ... ] TD, TH { font-family: "Helvetica", sans-serif line-height: 1.35 ; } H1, H2 { margin-top: 1.2em ; margin-left: -7% ; color: #900 ; clear: both ; @import "truc.css" BODY { color: #000 ; background: #FBFBFF ; margin-left: 9% ; margin-right: 6% ; font-family: "Helvetica", sans-serif ; line-height: 1.35 ; } ©GG XML

Feuilles de Style XSL Langage développé pour XML basé sur le paradigme règles de production IF <condition> THEN <production> Véritable langage de programmation défini pour XML codé en XML (espace de nom) transformation de XML en XML ou texte production de XHTML Recommandation du W3C depuis 2000 ©GG XML

Présentation externe <prix>6.05</prix> ©GG XML

La galaxie de standards Dimension métiers … ChessML ebXML OASIS cXML Outils applicatifs UBL VoiceML W3C SVG SMIL Outils génériques Dimension technique MathML XHTML XML XSL XSchema DOM SOAP WSDL BPEL RDF … ©GG XML

3. Pourquoi XML? Modéliser des documents et des messages Modèle logique de données Eléments typés agrégés en arbre (DTD, XML Schema) Définir vos propres langages d’échange Commande, facture, bordereau de livraison, etc. Publier des informations Neutre du point de vue format Mise en forme avec des feuilles de style Archiver des données Auto-description des archives ©GG Pourquoi XML ?

"Lingua Franca" du 21e siècle Un standard d'échange Lisible : texte balisé avec marquage Clair : séparation du fond et de la forme Extensible : supporte les évolutions applicatives Sécurisé : pare-feu, encryption, signature Développé par le W3C Pour le Web (Internet, Intranet) S'étend à l'entreprise et ses partenaires Supporté par les grands constructeurs IBM, Microsoft .net, SUN, BEA, etc. Des outils génériques et ouverts ©GG Pourquoi XML ?

Pour données et documents Approche « Donnée » Structuration forte et simple Compatibilité SGBDR existants Mise à jour en place Intégrité sémantique Indexation exacte Adapté au transactionnel et décisionnel Performances attendues « moyenne » à « forte » pour une volumétrie « moyenne » Approche « Document » Structuration faible et complexe Systèmes documentaires spécialisés Gestion de versions Recherche textuelle Indexation approchée Accès type moteur de recherche Performances attendues « moyenne » pour une volumétrie « forte » ©GG Pourquoi XML ?

Publication multi-supports Middleware XMLizer XML Application de publication (XSL) Avantages: Réutilisation dans différents contextes (terminaux, doc, DAB) Mises à jour en base facilitées Base de Données TV Numérique Projet GIE Cartes Bancaires: publication des spécifications de protocoles pour réseau Carte Bancaires vers les fournisseurs et prestataires du GIE ©GG Pourquoi XML ?

Échange de données: ETL Mapper Extractor JDBC JDBC Avantages : Flexibilité et réactivité en termes de mise à jour des schémas Compatibilité du datawarehouse avec les outils de datamining SQL existants BD relationnelle Datawarehouse Datamining Projet MEN : Echange de données avec les académies (remontée et descente) ©GG Pourquoi XML ?

Gestion documents semistructurés Amendement Serveur d’Applications HTTP GET Requêtes Requêtes HTTP POST Mapping XML-SQL SGBDR Avantages: Saisie en base normalisée Diffusion multi-supports Recherche plein texte puissante Feuille de style XSL Feuille de style XSL Processeur XSL Feuille de style XSL HTML généré Projet AMELI : Une application de serveur XML pour la saisie et la consultation de documents semi-structurés par internet/intranet Interface avec les applications bureautiques ©GG Pourquoi XML ?

Échange B2B XML EDI Internet XML EDI Donneur d’ordre Fournisseur XMLizer Utilisation de XML (en remplacement d’EDI) pour 2 raisons : Coût des RVA (Réseaux à Valeur Ajoutée type AS400) Difficultés d’évolution des formats de messages, quelque peu figé Les messages sont extraits depuis le SI du donneur d’ordre, mais aussi intégrés dans le cas de réponses. Un composant « XML EDI » pilote les échanges en les traçant dans une base XML (Repository XML). Les messages transitent sur Internet et peuvent être visualisés directement sur le site du fournisseur à l’aide d’un simple navigateur.Ils peuvent aussi être intégrés au SI du fournisseur. A partir de ce schéma simple qui permet déjà de journaliser et visualiser les messages échangés, des schémas plus complexes peuvent être élaborés. Donneur d’ordre Internet (SOAP) Fournisseur Projet EDIXML : Expérimentation de la chaîne pour un grand donneur d'ordres ©GG Pourquoi XML ?

Forces et faiblesses de XML Une technologie structurante Clarifie tous les échanges Des standards internes et externes Transversale à l'entreprise Échanges de données Bureautique GED Sites Web EDI Bases de données Intégration e-business … Une syntaxe bavarde Un méta-langage, mais de nombreux langages Coûteux en CPU Analyse Coûteux en mémoire Instanciation Format compressé à l’étude Un choix stratégique de direction ©GG Pourquoi XML ?

Modélisation des documents: DTD et Schéma 1. Introduction 2. DTD 3. Schémas ©GG

1. Introduction Un document XML peut être associé à : une DTD ou un schéma pour décrire les balises Une feuille de style pour présenter les données DTD ou/et schéma permettent de définir son propre langage basé sur XML Vocabulaire (balises) Grammaire (imbrications)  Dialecte ou Jargon ©GG Introduction

Validité des documents Document bien formé (Well Formed Document) balises correctement imbriquées analysable (parsable) et manipulable pas nécessairement valide par rapport au jargon Document valide (Valid Document) bien formé + conforme à la DTD ou au schéma ©GG Introduction

2. DTD Permet de définir le «vocabulaire» et la structure qui seront utilisés dans le document XML Grammaire du langage dont les phrases sont des documents XML (instances) Peut être mise dans un fichier (DTD externe) et être appelée dans le document XML ©GG DTD

Déclaration d'élément simple <! ELEMENT balise (définition) > Le paramètre définition représente soit un type de donnée prédéfini, soit un élément de données composé, constitué lui même d'éléments Types prédéfinis ANY : L'élément peut contenir tout type de donnée EMPTY : L'élément ne contient pas de données spécifiques #PCDATA : L'élément doit contenir une chaîne de caractère Exemple <! ELEMENT Nom (#PCDATA)> <Nom>Victor Hugo</Nom> ©GG DTD

Déclaration d'élément composé Définit une séquence ou un choix d'éléments Syntaxe spécifique avec opérateurs de composition d'éléments : <! ELEMENT balise (composition) > ©GG DTD

Exemple d'élément composé  <!ELEMENT personne (nom, prenom+, tel?, adresse) >  <!ELEMENT nom (#PCDATA) >  <!ELEMENT prenom (#PCDATA) >  <!ELEMENT tel(#PCDATA) >  <!ELEMENT email (#PCDATA) > <!ELEMENT adresse (ANY) > <personne>  <nom>Hugo</nom>  <prenom>Victor</prenom>  <prenom>Charles</prenom> <tel>01120243</tel>  <adresse><rue></rue><ville>Paris</ville></adresse>   </personne> ©GG DTD

Déclaration d'attributs <! ATTLIST balise Attribut Type Mode > balise spécifie l'élément auquel est attaché l'attribut Attribut est le nom de l'attribut déclaré Type définit le type de donnée de l'attribut choisi parmi: CDATA Chaînes de caractères entre guillemets ("aa") non analysées Enumération Liste de valeurs séparées par | <! ATTLIST balise Attribut (Valeur1 | Valeur2 | ... ) > ID et IDREF Clé et référence à clé Mode précise le caractère obligatoire ou non de l'attribut #REQUIRED, #IMPLIED ou #FIXED ©GG DTD

Exemple d'attributs <! ATTLIST personne num ID, age CDATA, genre (Masculin | Feminin ) > <!ELEMENT auteur (#PCDATA) >  <!ELEMENT editeur (#PCDATA) >  <!ATTLIST auteur genre (Masculin | Feminin ) #REQUIRED ville CDATA #IMPLIED> <!ATTLIST editeur ville CDATA #FIXED "Paris"> ©GG DTD

Exemple de DTD <!ELEMENT doc (livre* | article+) > <!ELEMENT livre (titre, auteur+) > <!ELEMENT article (titre, auteur*) > <!ELEMENT titre(#PCDATA) > <!ELEMENT auteur(nom, adresse) > <!ATTLIST auteur id ID #REQUIRED > <!ELEMENT nom(prenom?, nomfamille) > <!ELEMENT prenom (#PCDATA) > <!ELEMENT nomfamille (#PCDATA) > <!ELEMENT adresse (ANY) > ©GG DTD

Exemple de DTD interne <?XML version="1.0" standalone="yes"?> <!DOCTYPE CATALOGUE [ <!ELEMENT CATALOGUE (VINS+)> <!ELEMENT VINS (SPECIFICATION+, ANNEE, PRIX)> <!ATTLIST VINS NOM CDATA #REQUIRED> <!ELEMENT SPECIFICATION EMPTY> <!ATTLIST SPECIFICATION PROVENANCE CDATA #REQUIRED COULEUR CDATA #REQUIRED> <!ELEMENT ANNEE (#PCDATA)> <!ELEMENT PRIX (#PCDATA)> ]> <CATALOGUE> <VINS NOM="Saint-Emilion"> <SPECIFICATION PROVENANCE="Bordeaux" COULEUR="Rouge"/> <ANNEE>1999</ANNEE> <PRIX>25 €</PRIX> </VINS>……... </CATALOGUE> ©GG DTD

Exemple de ID et IDREF <?xml version="1.0" standalone="yes"?> <!DOCTYPE DOCUMENT [ <!ELEMENT DOCUMENT(PERSONNE*)> <!ELEMENT PERSONNE (#PCDATA)> <!ATTLIST PERSONNE PNUM ID #REQUIRED> <!ATTLIST PERSONNE MERE IDREF #IMPLIED> <!ATTLIST PERSONNE PERE IDREF #IMPLIED> ]> <DOCUMENT> <PERSONNE PNUM = "P1">Marie</PERSONNE> <PERSONNE PNUM = "P2">Jean</PERSONNE> <PERSONNE PNUM = "P3" MERE="P1" PERE="P2">Pierre</PERSONNE> <PERSONNE PNUM = "P4" MERE="P1" PERE="P2">Julie</PERSONNE> </DOCUMENT> ©GG DTD

DTD externe Modèle pour plusieurs documents partage des balises, attributs et structures Définition locale ou externe <!DOCTYPE doc SYSTEM "doc.dtd"> <!DOCTYPE doc PUBLIC "www.myweb.com/doc.dtd"> Exemple de document <?xml version="1.0" standalone="no"?> <!DOCTYPE VINS SYSTEM "vins.dtd"> ... ©GG DTD

DTD : Entité paramètre Permet la définition d'un groupe d'éléments sous un nom (macro) <!ENTITY %nom "definition"> Réutilisable dans une DTD par simple appel : %nom; Exemple : <!ENTITY %genres "(homme | femme)"> <!ATTLIST auteur genre %genres; #REQUIRED> Peuvent être externes : <!ENTITY %mpeg SYSTEM "http://www.myweb.fr"> ©GG DTD

Quelques règles d'écriture Modularité définir dans des entités séparées les parties réutilisables Précédence Regrouper les déclarations d'entités en tête Abstraction Utiliser des entités pour les modèles de contenus Spécificité Éviter les DTD trop générales Simplicité Découper les DTD trop complexes ©GG DTD

Insuffisance des DTD Questions ? Pas de types de données Pas en XML difficile à interpréter par le récepteur difficile à traduire en schéma objets Pas en XML langage spécifique Propositions de compléments XML-data de Microsoft (BizTalk) XML-schema du W3C Questions ? ©GG DTD

3. XML Schéma Un schéma d'un document définit: les éléments possibles dans le document les attributs associés à ces éléments la structure du document les types de données Le schéma est spécifié en XML pas de nouveau langage balisage de déclaration espace de nom spécifique xsd: ou xs: Présente de nombreux avantages structures de données avec types de données extensibilité par héritage et ouverture analysable à partir d'un parseur XML standard ©GG Schema

Objectifs des schémas Reprendre les acquis des DTD Plus riche et complet que les DTD Permettre de typer les données Eléments simples et complexes Attributs simples Permettre de définir des contraintes Existence, obligatoire, optionnel Domaines, cardinalités, références Patterns, ... S'intégrer à la galaxie XML Espace de noms Infoset (structure d'arbre logique) ©GG Schema

Le modèle des schémas Déclaration des éléments et attributs Nom Typage similaire à l'objet Spécification de types simples Grande variété de types Génération de types complexes Séquence (Sequence) Choix (Choice) Tas (All) ©GG Schema

Les types simples (1) string normalizedString token byte unsignedByte Confirm this is electric normalizedString token byte -1, 126 unsignedByte 0, 126 base64Binary GpM7 hexBinary 0FB7 integer -126789, -1, 0, 1, 126789 positiveInteger 1, 126789 negativeInteger -126789, -1 nonNegativeInteger 0, 1, 126789 nonPositiveInteger -126789, -1, 0 int -1, 126789675 unsignedInt 0, 1267896754 ©GG Schema

Les types simples (2) long unsignedLong short unsignedShort decimal -1, 12678967543233 unsignedLong 0, 12678967543233 short -1, 12678 unsignedShort 0, 12678 decimal -1.23, 0, 123.4, 1000.00 float -INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN double boolean true, false 1, 0 time 13:20:00.000, 13:20:00.000-05:00 dateTime 1999-05-31T13:20:00.000-05:00 duration P1Y2M3DT10H30M12.3S date 1999-05-31 gMonth --05-- gYear 1999 ©GG Schema

Les types simples (3) language ID IDREF IDREFS ENTITY ENTITIES gYearMonth 1999-02 gDay ---31 gMonthDay --05-31 Name shipTo QName po:USAddress NCName USAddress anyURI http://www.example.com/, http://www.example.com/doc.html#ID5   language en-GB, en-US, fr ID "A212"  IDREF "A212" IDREFS "A212" "B213" ENTITY ENTITIES NOTATION NMTOKEN, NMTOKENS US Brésil Canada Mexique ©GG Schema

Commandes de base xsd: element : association d'un type à une balise attributs name, type, ref, minOccurs, maxOccurs, ... attribute : association d'un type à un attribut attributs name, type type simple : les multiples types de base entier, réel, string, time, date, ID, IDREF, …, extensibles par des contraintes type complexe : une composition de types définit une agrégation d'éléments typés ©GG Schema

Les types complexes Définition d'objets complexes Exemple <sequence> : collection ordonnée d'éléments typés <all> : collection non ordonnée d'éléments typés <choice>: choix entre éléments typés Exemple <xsd:complexType name="AddresseFR"> <xsd:sequence> <xsd:element name="nom" type="xsd:string"/> <xsd:element name="rue" type="xsd:string"/> <xsd:element name="ville" type="xsd:string"/> <xsd:element name="codep" type="xsd:decimal"/> </xsd:sequence> <xsd:attribute name="pays" type="xsd:NMTOKEN" fixed="FR"/> </xsd:complexType> ©GG Schema

Héritage de types Définition de sous-types par héritage Par extension : ajout d'informations Par restriction : ajout de contraintes Possibilité de contraindre la dérivation Exemple : <complexType name="AdressePays"> <complexContent> <extension base="Adresse"> <sequence> <element name="pays" type="string"/> </sequence> </extension> </complexContent> </complexType> ©GG Schema

Les patterns Contraintes sur type simple prédéfini Utilisation d'expression régulières Similaires à celles de Perl Exemple <xsd:simpleType name="NumItem"> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d{3}-[A-Z]{2}"/> </xsd:restriction> </xsd:simpleType> ©GG Schema

XML Schema : exemple (1) <xsd:schema xmlns:xsd="http://www.w3.org/1999/XMLSchema"> <xsd:element name="commande" type="CommandeType"/> <xsd:element name="commentaire" type="xsd:string"/> <xsd:complexType name="CommandeType"> <xsd:sequence> <xsd:element name="livrer" type="Adresse"/> <xsd:element name="facturer" type="Adresse"/> <xsd:element ref="commentaire" minOccurs="0"/> <xsd:element name="produits" type="ProduitType"/> </xsd:sequence> <xsd:attribute name="date_com" type="xsd:date"/> </xsd:complexType> ©GG Schema

XML Schema : exemple (2) Schema <xsd:complexType name="ProduitType"> <xsd:sequence> <xsd:element name="produit" minOccurs="0" maxOccurs="unbounded"> <xsd:complexType> <xsd:element name="nom_prod" type="xsd:string"/> <xsd:element name="quantite"> <xsd:simpleType> <xsd:restriction base="xsd:positiveInteger"> <xsd:maxExclusive value="100"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="prix" type="xsd:decimal"/> <xsd:element ref="commentaire" minOccurs="0"/> <xsd:element name="date_livraison" type="xsd:date" minOccurs="0"/> </xsd:sequence> <xsd:attribute name="num_prod" type="xsd:positiveInteger" use="required"/> </xsd:complexType> </xsd:sequence> </xsd:complexType> </xsd:schema> ©GG Schema

Diagramme XML Spy ©GG Schema

Diagramme de type (XML Spy) Choix Séquence Tas ©GG Schema

Réutilisation de déclarations Possibilité de référencer un élément plus global <element ref="Nom" /> (ci-dessus) Importe l'élément et son type Possibilité d'inclure les types associés à un espace de noms <import nameSpace = "http:// ..." schemaLocation = "http:// ..." /> Possibilité d'étendre un schéma <redefine schemaLocation="http:// ..."/> .... Extensions ... </redefine> ©GG Schema

Autres possibilités ... Mixed Content Empty Content anyType Annotations Attribute Groups Nil Values Abstract Elements & Types Target Namespaces & Unqualified Locals Qualified Locals Global vs. Local Declarations Undeclared Target Namespaces Substitution Groups ©GG Schema

Comment concevoir DTD/Schema ? A la main syntaxe complexe, devient illisible Interface graphique IDE partir d'un fichier d'exemples générer un premier schéma via l'outil modifier le schéma graphiquement A partir de UML décrire données avec UML générer un modèle logique hiérarchique ©GG Schema

Rappels UML Modélisation de données et traitements Concepts pour les données paquetage (package) classe attribut association agrégation généralisation Contraintes associations 0..* ou 1..* (*,+) attributs avec nul possible (?) généralisation exclusive Diagramme de classes Classe1 SClasse1 SClasse2 {exclusif} Classe3 Classe4 * 1..* Attribut1 Attribut2 ©GG Schema

Conception UML de schémas Possible à partir d'une modélisation UML Définir des paquetages de classes et associations Orienter les associations  arbre Préciser les types de données Possibilité d'hériter de stéréotypes XML Voir "Modeling XML Applications with UML" David Carlson, A. Wesley Intégrer aux produits Rose, Objecteering, Designer, HyperModel ... ©GG Schema

De UML à XML : les choix Choix des messages (documents) agrégation d'éléments classes fortement liées N instances Choix des identifiants et liens références pour associations Attributs versus éléments les attributs jouent un rôle descriptif ("méta") Choix des cardinalités obligatoire ou optionnel (?) 0..* (*) ou 1..* (+) ©GG Schema

Exemple: Publier une BD Package Commandes Package Client Commande Client 1..* 1..* num int passer code : int statut : char nom : text total : float type : CCC 0..* livrer gérer 0..* 0..* 1..* 1..* Magasin Ligne numero : int quantite : int rue : text article : CCNNN complement : text statut : char code_postal : int total : FRF ville : text Schéma UML ©GG Schema

Vue hiérarchique Orientation des associations Génération des liens Package Commandes Orientation des associations obtenir un arbre éviter les duplicats Génération des liens attributs IDREF externes ou hyperliens Commande num int Client refID statut : char total : float Magasin refID 1..* 1..* Ligne quantite : int article : CCNNN statut : char total : FRF ©GG Schema

Définition des types complexes <!-- Types de base--> <!ENTITY % int "(#PCDATA)"> <!ENTITY % float "(#PCDATA)"> <!ENTITY % char "(#PCDATA)"> <!ENTITY % string "(#PCDATA)"> <!-- Classe Commande --> <!ELEMENT Commande (cstatut, ctotal, Ligne+)> <!ATTLIST Commande NUM ID #REQUIRED> <!ELEMENT cstatut %char;> <!ELEMENT ctotal %float;> <!-- Classe Ligne --> <!ELEMENT Ligne (article, quantite, statut?, total?)> <!ELEMENT article %string;> <!ELEMENT quantite %int;> <!ELEMENT lstatut %char;> <!ELEMENT ltotal %float;> ©GG Schema

Composition du message <?xml version="1.0" standalone="yes"?> <!DOCTYPE MESSAGE [ <!ELEMENT MESSAGE (Commande*)> <!ENTITY %Type SYSTEM "Type.dtd"> %Type; ]> <MESSAGE> <Commande NUM="1"> <cstatut> A </cstatut> <ctotal>1000</ctotal> <Ligne> <article>212</article> <quantite>100</quantite> </Ligne> </Commande> <Commande NUM="2"> <cstatut> B </cstatut> <quantite>300</quantite> <article>412</article> <quantite>400</quantite> </MESSAGE> ©GG Schema

Produits: HyperModel De XML à UML et vice-versa Représentation XMI du modèle UML XMI = jargon XML de l'OMG pour modèle objet Traduction en toute sorte de modèle logique Ajoutable à Eclipse http://xmlmodeling.com ©GG Schema

HyperModel et Eclipse ©GG Schema

Quelques outils de travail Editeur Outil Support Tibco Turbo XML DTD, XSL Schéma Altova XMLSpy DTD, Schéma XSL, Xquery SyncRO Ltd. Oxygen Data Junction XML Junction Insight Soft. XMLMate DTD, Schéma, XSL, XPath XML Mind XMLMind Editor ©GG Schema

Bilan DTD et Schéma Les DTD définissent la grammaire des documents Elles sont de plus en plus souvent remplacées par des schémas Le standard est un peu complexe (Relax) Questions ? ©GG Schema