Origine et Concepts de base 1. Origines et Objectifs 2. SGML et HTML 3. Introduction à XML 4. XML pour quoi faire?
1. Origine et objectifs XML est issu de la Gestion de Documents (GED) Séparation du fond de la forme. Forme = présentation à partir de la structure (style) Fond = structure + données (contenu) 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! Origines 2
Présentation et Structuration Titre Auteur Section Paragraphe Paragraphe Paragraphe Section 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 Origines 3
Vue Balisée <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"> </Section> </Livre> Les balises (tags) peuvent porter plus ou moins de sémantique Origines 4
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 Origines 5
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 Origines 6
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. Origines 7
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 Origines 8
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 Origines 9
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 Origines 10
Forces de XML Séparation de la structure et de la présentation Questions? Moins confus que HTML Plus simple que SGML Idéal pour l'échange de données semi-structurées Utilisable entre machines Origines 11
2. SGML et HTML 1969 C. Goldfarb, E. Mosher, R. Lorie inventent GML chez IBM GML a été créé pour éditer des documents, les mettre en page et les partager au sein de systèmes de gestion éditoriaux 1978 Goldfarb prend la tête d un comité «Computer Language for the Processing of Text» au sein de l American National Standards Institute (ANSI). SGML 12
Qu'est-ce que SGML? Une norme internationale : Standard Generalized Markup Language ISO 8879-1989 Un métalangage de balisage de documents lisible par l être humain et traitable par une machine permet de définir des langages de balisage Les documents sont balisés conformément à la grammaire (la DTD) instances de DTD permet un balisage sémantique du fond. Implique la notion de validité d'un document SGML 13
SGML : objectifs Séparation du fond et de la forme possibilité de multiples présentations un seul document en SGML plusieurs formats : Postcript, HTML, etc. Support de traitements sur le contenu des documents sans prise en compte de la forme Proposition d un cadre défini pour l expression des modèles documentaires (validité, contrôle) Intégration d'un format de stockage et d échange normalisé SGML 14
SGML : critiques Très lourd et complexe pour la mise en œuvre de documents respectant ce format Une grande rigueur est demandée à l'entrée des documents Standard complexe et complet pour le traitement des documents Liens hypertextes possibles mais complexes SGML 15
HTML : présentation Proposé par le W3C comme format de documents sur le Web. Langage simple avec des balises standardisées permettant la mise en forme d un texte. Standard reconnu par tous les navigateurs. Langage très populaire sur le Web <HTML> <HEAD> <TITLE> Exemple </TITLE> </HEAD> <BODY> <H1>Contenu du document</h1> <A HREF = "http://www.server.fr/info /dir/test.html"> une référence externe </A> </BODY> </HTML> HTML 16
HTML : inconvénients Normalisation des différentes balises difficile : les constructeurs ont eu tendance à définir leurs propres balises pour répondre à leurs besoins (incompatibilité) HTML 4.0 boutons, tables, applets, objects, graphiques, maths,... styles, frames, protections,... Mises à jour difficiles : données utiles et mises en forme ; restructuration ou remise en forme de l ensemble des pages du site fastidieux. Mélange le fond et la forme méta-données avec la présentation Pages conçues pour 1 type de terminal HTML 17
Feuilles de style Introduite pour diversifier les présentations CSS (Cascading Style Sheet) mécanisme d'héritage entre nœuds une balise hérite de la parente seulement ce qu'elle spécifie est redéfini Recommandation W3C en décembre 1996 Mécanisme simple pour ajouter un style aux documents Web fonte, taille, couleur, etc. Utilisables avec XML HTML 18
Exemple de CSS <LINK REL="stylesheet" HREF="fichier.css"> @import "truc.css" BODY { color: #000 ;; background: #FBFBFF ;; margin-left: 9% 9% ;; margin-right: 6% 6% ;; font-family: "Helvetica", sans-serif ;; line-height: 1.35 1.35 ;; } [[......]] TD, TD, TH TH { font-family: "Helvetica", sans-serif line-height: 1.35 1.35 ;; } H1, H1, H2 H2 { margin-top: 1.2em ;; margin-left: -7% -7%;; color: #900 #900;; clear: both both ;; } [[......]] HTML 19
SGML et HTML : Résumé SGML langage de la GED plutôt complexe très utilisé dans l'industrie HTML spécialisation de SGML adapté à la présentation inadapté à l'échange entre programmes Questions? HTML 20
3. 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 ou aux navigateurs XML standardise la manière dont l'information est : échangée présentée archivée retrouvée transformée cryptée... XML 21
XML : exemple simple XML 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> 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 22
Concepts du modèle Balise (ou tag ou label) Marque de début et fin 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"> XML 23
Exemple complet 24
Modèle arborescent @Type @Catégorie Français *** Restaurant Nom Manager Le Moulin de Mougin Dupuis Adresse No Rue Ville 7 Des Vignes Mougin XML 25
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é XML 26
Présentation externe <prix>6.05</prix> XML 27
Espaces de noms Comment mixer des tags issus de différents langages? 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> Mécanisme intéressant pour l'intégration de contenus XML 28
Hyperliens: XLink et XPointer Exprimer des liens entre documents XML pointe sur une URL l'url peut inclure une partie XPointer tout élément peut être un lien Différents types de liens simple xlink:type = "simple" étendu xlink:type = "extended" De véritables associations 1-1 en simple, k-n en étendu avec rôles et comportements possibles XLink et plus 29
Exemples simples <Annotation xlink:type="simple" href="note1.xml">1</annotation> <Auteur xlink:type="simple" title="créateur" href="http://www.mysite.com/~georges/"> Victor Hugo</Auteur> <Image xlink:type="simple" href="logo.gif"/> XLink et plus 30
XPointer Permet de référencer un élément particulier d'un document le document est spécifié par Xlink le Xpointer est ajouté à l'uri séparée par # ou Pointeur absolue id() : référence un élément d'identifiant donné root() : pointe sur la racine d'un document html() : référence un document HTML Pointeur relatif = chemin XPath child, descendant, ancestor, preceding, following, Exemple : <vin2 xlink:type="simple" href="http://www.site.fr/ degustation#xptr(/child::degustation/child::vin[2])" XLink et plus 31
La galaxie de standards Dimension métiers ChessML cxml UBL VoiceML SVG Outils applicatifs OASIS W3C ebxml SMIL MatML XHTML Outils génériques Dimension technique XML XSL XSchema DOM SOAP WSDL BPEL RDF XML 32
4. Pourquoi XML? Définir vos propres langages d échange Commande, facture, bordereau de livraison, etc. Modéliser des documents et des messages Modèle logique de données Eléments typés agrégés (DTD, XML Schema) Passerelle avec Unified Modelling Language (UML) 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 Pourquoi XML? 33
"Lingua Franca" du 21 e 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 Pourquoi XML? 34
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» Pourquoi XML? 35
Publication multi-supports Middleware XMLizer XML Application de publication (XSL) Base de Données Pourquoi XML? Projet GIE Cartes Bancaires: publication des spécifications de protocoles pour réseau Carte Bancaires vers les fournisseurs et prestataires du GIE 36 TV Numérique
Échange de données: ETL Extractor Mapper JDBC JDBC BD relationnelle Datawarehouse Projet MEN : Echange de données avec les académies (remontée et descente) Datamining Pourquoi XML? 37
Gestion documents semistructurés Amendement HTTP GET Serveur d Applications Requêtes Requêtes HTTP POST Mapping XML-SQL SGBDR HTML généré Processeur XSL Feuille Feuille de de style de style style XSL XSL XSL 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 Pourquoi XML? 38
Échange B2B XML EDI XML EDI XMLizer Donneur d ordre Projet EDIXML : Expérimentation de la chaîne pour un grand donneur d'ordres Internet (SOAP) Fournisseur Pourquoi XML? 39
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 Parsing Coûteux en mémoire Instanciation Format compressé à l étude Pourquoi XML? 40
Conception et Manipulations des Documents 1. Introduction 2. DTD 3. Schéma 4. Outils
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 Introduction 42
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 Introduction 43
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 DTD 44
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> DTD 45
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) > Opérateur Signification Exemple + L'élément doit être présent au minimum une fois A+ * L'élément peut être présent plusieurs fois (ou aucune) A*? L'élément peut être optionnellement présent A? L'élément A ou B peuvent être présents (pas les deux) A B, L'élément A doit être présent et suivi de l'élément B A,B () Les parenthèses permettent de regrouper des éléments afin de leur appliquer les autres opérateurs (A,B)+ DTD 46
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> DTD 47
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 DTD 48
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"> DTD 49
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) > DTD 50
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> DTD 51
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> DTD 52
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">... DTD 53
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 PUBLIC "http://www.myweb.fr/fic.dtd"> DTD 54
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 DTD 55
Insuffisance des DTD Pas de types de données 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? DTD 56
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 Schema 57
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) Schema 58
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) Schema 59
Les types simples (1) string Confirm this is electric normalizedstring Confirm this is electric token Confirm this is electric 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 Schema 60
Les types simples (2) long -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 -INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN 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 Schema 61
Les types simples (3) 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 Schema 62
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 Schema 63
Les types complexes Définition d'objets complexes <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: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:attribute name="pays" type="xsd:nmtoken" fixed="fr"/> </xsd:complextype> Schema 64
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> Schema 65
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> Schema 66
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> Schema 67
XML Schema : exemple (2) <xsd:complextype name="produittype"> <xsd:sequence> <xsd:element name="produit" minoccurs="0" maxoccurs="unbounded"> <xsd:complextype> <xsd:sequence> <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:complextype> </xsd:element> </xsd:sequence> </xsd:complextype> </xsd:schema> <xsd:attribute name="num_prod" type="xsd:positiveinteger" use="required"/> Schema 68
Diagramme XML Spy Schema 69
Diagramme de type (XML Spy) Séquence Choix Tas Schema 70
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> Schema 71
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 Schema 72
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 Schema 73
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 SClasse1 Classe1 Attribut1 Attribut2 {exclusif} SClasse2 1..* Classe3 * Classe4 Schema 74
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... Schema 75
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..* (+) Schema 76
Exemple: Publier une BD Package Commandes Package Client Commande num int statut : char total : float 1..* 0..* passer Client code : int nom : text type : CCC livrer gérer Ligne 1..* quantite : int article : CCNNN statut : char total : FRF Magasin 0..* numero : int rue : text complement : text code_postal : int ville : text Schéma UML Schema 77
Vue hiérarchique Orientation des associations obtenir un arbre éviter les duplicats Génération des liens attributs IDREF externes ou hyperliens Package Commandes Commande num int statut : char total : float Client refid Magasin refid Ligne 1..* quantite : int article : CCNNN statut : char total : FRF Schema 78
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;> Schema 79
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> <ctotal>1000</ctotal> <Ligne> <article>212</article> <quantite>300</quantite> </Ligne> <Ligne> <article>412</article> <quantite>400</quantite> </Ligne> </Commande> </MESSAGE> Schema 80
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 Schema 81
HyperModel et Eclipse Schema 82
4. Les outils de développement IDE = Integrated Developement Environment Des éditeurs De texte XML, parfois avec structure séparée De schéma XML, avec interface graphique De règles XSL, avec moteur de transformation De requêtes XQuery, avec moteur sur document De description WSDL, avec wrapper Web Service Des interfaces XML Aux fichiers Aux bases de données Aux applications Le plus fameux : XML Spy (voir démo.) 83
Quelques outils de travail Editeur Outil Support Tibco Altova SyncRO Ltd. Data Junction Turbo XML XMLSpy Oxygen XML Junction DTD, XSL, XQuery Schéma DTD, Schéma XSL, XQuery DTD, Schéma XSL, XQuery Schéma Insight Soft. XML Mind XMLMate XMLMind Editor DTD, Schéma, XSL, XPath DTD, Schéma, XSL, XPath Schema 84
Stylus Studio Editeur graphique de XML et schéma XQuery requête, edition, debaugage et profilage Interrogation et mise à jour de BD relationnelles Support de XPath 2.0 Editeur et moteur XSLT Composeur d appel de Web service 85
Oxygen Editeur XML textuel et arborescent Editeur XSLT 2.0, validation, transformation, debogage, moteurs variés (Xalan, Saxon, XSLTProc, MSXML, ) Editeur XQuery, débogueur, moteur doc. Editeur et validateur XML Schema (diagramme), Relax NG (diagramme), NRL, DTD, Schematron. Moteur de validation multiples: Xerces, XSV, LIBXML, MSXML, MSXML.NET, Saxon, SQC XML Diff et Merge. 86
Principaux poduits de Altova Altova XMLSpy 2006 is the industry standard XML development environment for modeling, editing, debugging and transforming all XML technologies, then automatically generating runtime code in multiple programming languages. Altova MapForce 2006 is the premier data mapping and Web services implementation tool with the power to integrate any combination of XML, database, text, and/or EDI files, and build Web services by mapping between WSDL operations. Altova StyleVision 2005 is the ultimate electronic forms, database report, and stylesheet designer for transforming XML and database content into HTML, PDF and Word/RTF output. StyleVision supports XSLT 1.0/2.0, XSL:FO, and all major database Altova UModel 2006 is the starting point for successful software development. Visually design application models and generate Java or C# code, or reverse engineer existing programs into UML 2.1 diagrams. It is the simple, cost-effective way to draw on UML. Altova DiffDog 2005 is the dedicated differencing utility for developers and power users. This easy, powerful synchronization tool quickly compares files and folders then highlights differences and merges content via an elegant GU Altova Authentic 2005 is a FREE content editor that allows non-technical users to modify content in XML documents and databases. Just fill in electronic forms using the intuitive, word-processor style interface, and your data is instantly updated. 87
Bilan DTD, Schéma, IDE 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) mais suivi Un IDE est indispensable Et de moins en moins gratuit Questions? Schema 88