XML: Plan I. Origines et base 3 II. DTD et Schéma 47 III. XSL et présentation 87 IV. Web Services 141
XML: Plan V. Bases de Données XML
I. 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
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 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 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 437 membres industriels en novembre 2007 Président: Tim Berners-Lee, inventeur du web 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 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 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. 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 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 SGML et 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
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
Forces de XML Séparation du contenu 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 applications hétérogènes Questions ? Origines
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
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 DTD document instances de DTD permet un balisage sémantique du fond Syntaxe plus permissive que XML Analyseurs (parsers) plus complexes SGML
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
HTML : présentation Proposé par le W3C comme format de documents sur le Web Langage avec des balises fixes standardisées permettant la mise en forme d’un texte Standard reconnu par tous les navigateurs, très populaire sur le Web Langage remplacé progressivement par XHTML 1.1, HTML épuré conforme aux règles XML Nouvelle version en cours de standardisation XHTML 2.0, pour le web 2.0 <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
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 et extractions difficiles : données utiles et mises en forme mixées ; remise en forme de l’ensemble des pages d’un site fastidieuse. Mélange le fond et la forme : méta-données avec la présentation pages conçues pour un type de terminal HTML
Feuilles de style CSS Objectifs CSS (Cascading Style Sheet) spécifier la présentation (les polices, les couleurs, les marges, …) d'un document structuré HTML ou XML CSS (Cascading Style Sheet) mécanisme d’attachement de style aux balises une balise hérite de la parente seulement ce qu'elle spécifie est redéfini Recommandation W3C en 1996 (CSS1) puis 1998 (CSS2) HTML
Où placer le code CSS ? Méthode 1 (attribut style) Méthode 2 (élément style) Méthode 3 (Externe) 20 HTML
Exemple de CSS: Mise en forme de la police Police.html : Police.css : HTML
SGML et HTML : Résumé SGML HTML Questions ? langage de la GED plutôt complexe très utilisé dans l'industrie HTML spécialisation de SGML adapté à la présentation autonome ou en conjonction avec CSS inadapté à l'échange entre programmes Questions ? HTML
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
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 XML
Concepts du modèle Balise (ou tag ou label) Elément de données 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
Exemple complet XML
Quiz (1) Le W3C est une fondation américain ? XML est un format d'échange interopérable ? SGML ne standardise pas un modèle interne ? XML est un sur-ensemble de SGML ? Les DTD sont issues de SGML ? HTML est défini par une DTD SGML ? Un message HTML est en moyenne 2 fois plus compact qu'un message XML ? CSS permet d'associer des attributs de présentation aux tags HTML et XML ? Un élément de données peut contenir des tags ? Deux attributs d'une même balise peuvent porter le même nom ?
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 Adresse Des Vignes Rue Ville Mougins XML
Présentation textuelle <Restaurant Type="Français" Categorie="***"> <Nom>Le Moulin de Mougins</Nom> <Manager ... >Dupuis</Manager> <Adresse> <No> 7</No> <Rue>Des Vignes</Rue> <Ville>Mougins</Ville> </Adresse> </Restaurant> Arbre sérialisé XML
Le préfixe permet de retrouver le langage Espaces de noms (1) Permet de distinguer des tags de même nom Mécanisme intéressant pour l'intégration de contenus préfixe = balise Le préfixe permet de retrouver le langage <fus:Guide xmlns:fus= "http://www.myGuide.com" 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> </fus:Guide> XML
Espaces de noms (2) Identifié par une URI (Uniform Resource Identifier) L’URL n’a pas nécessité d’exister Référence souvent le schéma Un namespace déclaré sans préfixe devient le namespace par défaut de tous les éléments descendants Les éléments non qualifiés appartiennent au namespace le plus interne <Livre xmlns=“www.bookstuff.org/bookinfo”> <Titre>Tout sur XML</Titre> <Auteur>Joyeux l’analyste</Auteur> <Editeur xmlns:pub=“urn:publishers:publinfo”> <Nom>Microsoft Press</Nom> </Editeur> </Livre> URLs and URNs for namespaces do not have to be “live” – they only need to be unique strings. XML
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
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
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
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 … XML
Les langages techniques XML (1) Extensible Markup Language Defines XML documents Infoset Information Set Abstract model of XML data; definition of terms DTD Document Type Definition Non-XML schema XSD XML Schema XML-based schema language XDR XML Data Reduced An earlier XML schema CSS Cascading Style Sheets Allows you to specify styles XSL Extensible Stylesheet Language Language for expressing stylesheets; consists of XSLT and XSL-FO XSLT XSL Transformations Language for transforming XML documents XSL-FO XSL Formatting Objects Language to describe precise layout of text on a page XML
Les langages techniques XML (2) XPath XML Path Language A language for addressing parts of an XML document, designed to be used by both XSLT and XPointer XPointer XML Pointer Language Supports addressing into the internal structures of XML documents XLink XML Linking Language Describes links between XML documents XQuery XML Query Language (draft) Flexible mechanism for querying XML data as if it were a database DOM Document Object Model API to read, create and edit XML documents; creates in-memory object model SAX Simple API for XML API to parse XML documents; event-driven Data Island XML data embedded in a HTML page Data Binding Automatic population of HTML elements from XML data XML
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 ?
"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 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 » 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 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) Pourquoi XML ?
Gestion documents semistructurés Amendement Serveur d’Applications HTTP GET Requêtes Requêtes HTTP POST Mapping XML-SQL SGBDR Feuille de style XSL Processeur XSL Feuille de style XSL Feuille de style XSL HTML généré Avantages: Saisie en base normalisée Diffusion multi-supports Recherche plein texte puissante 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 ?
É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 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 Parsing Coûteux en mémoire Instanciation Format compressé à l’étude XML Binaire Un choix stratégique de direction Pourquoi XML ?
Quiz (2) Un parser transforme un document XML texte en arbre étiqueté ? L'unicode est un code multi-facette ? Une instruction de traitement peut invoquer un processeur de style particulier ? Les espaces de nommage sont des domaines de discours caractérisés par une URI ? L'espace de nom le plus interne est appliqué par défaut ? Un XLink peut référencer plusieurs documents XML ? Un XPointeur remplace un XLink ? Il existe des centaines de jargons XML métiers ou techniques ? Il faut utiliser XML pour les échanges si l'on ne veut pas être ringard ? XML c'est du semi-structuré ?
II. Conception et Manipulation 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
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
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
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
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) > 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> 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 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"> DTD
Exemple de DTD <!DOCTYPE Restaurant [ <!ELEMENT Restaurant (Nom, Adresse, (Telephone | Manager), Menu?) > <!ATTLIST Restaurant categorie CDATA #REQUIRED type CDATA #FIXED "francais" > <!ELEMENT Nom (#PCDATA)> <!ELEMENT Adresse (No, Rue, Ville)> <!ELEMENT No (#PCDATA)> <!ELEMENT Rue (#PCDATA)> <!ELEMENT Ville (#PCDATA)> <!ELEMENT Telephone (#PCDATA)> <!ELEMENT Manager (#PCDATA)> <!ELEMENT Menu EMPTY> <!ATTLIST Menu Nom CDATA #REQUIRED> ] 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
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 XML-schema du W3C Questions ? DTD
Quiz (3) Il est possible de définir une DTD et un schéma de structures différentes pour un même document XML ? Une DTD externe définit une grammaire commune à plusieurs documents ? Une balise peut être composée d'autres balises groupées obligatoirement en séquences ? Un attribut peut être à la fois clé unique (ID) et référence (IDREF) ? #REQUIRED signifie que l'attribut ne peut être nul ? Une ENTITE paramètre est un groupe d'éléments réutilisable ? Les DTD permettent de bien modéliser la structure mais mal les types de données ?
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
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
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
Les types simples (1) string normalizedString token byte unsignedByte Confirm this is electric normalizedString Confirm this is electric 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 Schema
Les types simples (2) boolean time dateTime duration date gMonth gYear 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 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
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 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 Schema
Les types complexes <xsd:complexType name="Addresse"> 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="Addresse"> <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" /> </xsd:complexType> 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 : <xsd:complexType name="AdresseC"> <xsd:complexContent> <xsd:extension base="Adresse"> <xsd:sequence> <element name=“continent” type=“xsd:string”/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> 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> 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> Schema
XML Schema : exemple (2) Schema <xsd:complexType> <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> Schema
Diagramme XML Spy Schema
Diagramme de type (XML Spy) Choix Séquence Tas 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> Schema
Autres possibilités ... Target Namespaces & Unqualified Locals 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
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 les données avec UML (classes et relations) complémenter le modèle (types, attributs ou éléments) générer un modèle logique hiérarchique (messages) transformer en schéma XML Schema
Quelques règles d'écriture Modularité définir dans des types séparés les parties réutilisables Précédence Regrouper les déclarations de types en tête Abstraction Utiliser des entités ou types pour les modèles de contenus Spécificité Éviter les types trop généraux Simplicité Découper les schémas ou DTD trop complexes Schema
Exemple de 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
HyperModel et Eclipse Schema
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.) IDE
Quelques outils de travail DTD, Schéma, XSL, XPath XMLMind Editor XML Mind XMLMate Insight Soft. Schéma XML Junction Data Junction DTD, Schéma XSL, XQuery Oxygen SyncRO Ltd. DTD, Schéma XSL, XQuery XMLSpy Altova DTD, XSL, XQuery Turbo XML Tibco Support Outil Editeur IDE
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 IDE
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. IDE
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. IDE
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 ? IDE
Quiz (4) Un schéma c'est comme une DTD avec en plus des types de données simples, composés et extensibles ? Les types complexes se construisent avec les constructeurs liste et tableau ? Le type simple anyURI désigne une URL ? La commande < xsd: complexType> permet de déclarer un type composé nommé ? L' héritage de type s'effectue par ajout de contraintes ? Il est facile d'étendre un schéma existant ? Passer d'un modèle UML à un modèle XML nécessite d'orienter les associations ? Altova XMLSpy est sans concurrent ?
III. Publication et Traitement avec XSL XPATH XSLT XSL-FO Traitement de documents Conclusion
1. XPath : l'adressage XML XPath Expressions de chemins dans un arbre XML Permet de sélectionner des nœuds par navigation Document XML ? XPath
XPath XML Path Language Expressions de chemins communes à : recommandation W3C pour expressions de chemins acceptée le 16 novembre 1999 version 2 acceptée depuis janvier 2007 Expressions de chemins communes à : XSL Xpointer (liens) XQuery (queries) Xpath permet de rechercher un élément dans un document d'adresser toute sous partie d'un document XPath
XPath - Parcours d'arbre XPath opère sur l'arbre d'un document racine section livre Bonaparte chapitre Neige Les chatiments titre @auteur "Hugo" <livre auteur = "Hugo"> <titre>Les chatiments</titre> <chapitre> <section>Buonaparte </section> <section>Neige</section> </chapitre> … </livre> XPath
XPath - Expression de chemins Une expression de chemins spécifie une traversée de l'arbre du document : depuis un nœud de départ vers un ensemble de nœuds cibles les cibles constituent la valeur du cheminement Un chemin peut être : absolu commence à la racine /étape1/…/étapeN relatif commence à un nœud courant étape1/…/étapeN XPath
Syntaxe et sémantique Cheminement élémentaire direction::sélecteur [predicat] Directions parent, ancestor, ancestor-or-self child, descendant, descendant-or-self preceding, preceding-sibling, following, following-sibling self, attribute, namespace Sélecteur nom de nœud sélectionné (élément ou @attribut) Prédicat [Fonction(nœud) = valeur] XPath
EXEMPLES Sections d'un chapitre Texte du chapitre 1 section 2 /child::livre/child::chapitre/ child::section /livre/chapitre/section Texte du chapitre 1 section 2 /descendant::chapitre[position() = 1] /child::section[position() = 1] /child::text() //chapitre[0]/section[1]/text() Remonter à l’auteur du livre parent::section/ancestor::livre/ child::@auteur ancestor::livre/@auteur racine section livre Bonaparte chapitre Neige Les chatiments titre @auteur "Hugo" XPath
XPath - Synthèse XPath
XPath 2.0 Types des schémas et séquences supportés Elimination des « Result Tree Fragments » Support des groupes de noeuds Introduction de fonctions d'agrégats Support des boucles For et des conditions Support des expressions régulières Documents multiples en entrée et sortie Nouvelles fonctions et opérateurs Intégration de fonctions utilisateurs possible XPath
2. XSLT : la présentation Permet de transformer un document régulier ou irrégulier de XML à XML, XHTML est un cas particulier De XML à présentation (HTML, texte, rtf, pdf, etc.) Un document est un arbre Le processeur XSL parcourt l'arbre et applique les règles de transformations vérifiées (à condition vraie) aux nœuds sélectionnés Un document est produit en sortie XSLT
Format (XML) pour Word, Excel Publications avec XSL Plusieurs formats de publication pour un contenu XSL permet la présentation sur des terminaux variés XSL Processor XML Document Format ( Postcript) Format (XML) application e.Commerce format (WML) Browser (XHTML, DHTML, HTML) Format (XML) pour Word, Excel Stylesheet XSLT
Architectures HTML XML Affichage S E R V E U R Programme XML HTML ASP ou JSP S E R V E U R Programme XML HTML Processeur XSL Affichage Fichier XML XML Affichage Traitement Processeur XSL Base de données XSLT
Transformation par Jscipt côté client <html> <body> <script type="text/javascript"> // Load XML var xml = new ActiveXObject("Microsoft.XMLDOM") xml.async = false xml.load("exemple.xml") // Load XSL var xsl = new ActiveXObject("Microsoft.XMLDOM") xsl.async = false xsl.load("exemple.xsl") // Transform document.write(xml.transformNode(xsl)) </script> </body> </html>
Les feuilles de style Une feuille de style XSL est un document XML de racine <xsl:stylesheet> contient une liste de règles de transformation de l'arbre d'entrée en arbre de sortie <xsl:template> Chaque règle (<xsl:template>) précise: Une condition spécifiant le sous-arbre du document d’entrée auquel elle s’applique (match=) Une production spécifiant le résultat de l’application de la règle (contenu) Il s'agit de règles de production classiques If <condtition> then <production> Codées en XML avec espace de nom xsl: XSLT
Exemple de document <?xml version="1.0" ?> <Guide> <Restaurant Categorie="**"> <Nom>Le Romantique</Nom> <Adresse> <Ville>Cabourg</Ville> <Dept>Calvados</Dept> </Adresse> </Restaurant> <Restaurant Categorie="***"> <Nom>Les TroisGros</Nom> <Ville>Roanne</Ville> <Dept>Loire</Dept> </Adresse> </Guide> XSLT
Exemple de feuille de style XSL <?xml version="1.0" ?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/xsl"> <xsl:template match="/"> <html><head><B>ESSAI XSL</B></head> <body><xsl:apply- templates/></body></html> </xsl:template> <xsl:template match="Guide"> <H1>BONJOUR LE GROUPE XML</H1> <H2>SUIVEZ LE GUIDE</H2> <xsl:apply-templates /> <xsl:template match="Restaurant"> <P> <I>Restaurant :</I> <xsl:value-of select="Nom"/></P> </xsl:template> </xsl:stylesheet> XSLT
Les règles de production Définition des règles par <xsl:template …> Attributs match: condition de sélection des nœuds sur lesquels la règle s'applique (XPath) name: nom de la règle, pour invocation explicite (en conjonction avec <call-template>) priority: priorité, utilisé en cas de conflit entre deux règles ayant la même condition Exemples <xsl: template match="/"> <xsl: template match="auteur" name="R1" priority="1"> XSLT
La génération du résultat Le contenu de l'élément <xsl:template> est la production: Les éléments du namespace xsl sont des instructions qui copient des données du document source dans le résultat Les autres éléments sont inclus tels quels dans le résultat Instructions pour: Parcourir l'arbre du document source Copier le contenu du document source dans le résultat Parcours de l'arbre: <xsl:apply-templates>, <xsl:for-each> Copie du contenu du nœud sélectionné: <xsl:value-of select= … > XSLT
Résumé des commandes <xsl:template> définir une règle et son contexte <xsl:apply-templates /> appliquer les transformations aux enfants du nœud courant <xsl:value-of select … /> extrait la valeur d'un élément sélectionné à partir du nœud courant <xsl:for-each> définir un traitement itératif <xsl:pi> générer une instruction de traitement <xsl:element> générer un élément <xsl:attribute> générer un attribut <xsl:if> définir un traitement conditionnel XSLT
Processeurs XSLT Processeurs XSLT conformes à la spécification: Apache Group (www.apache.org): Xalan Oracle XDK (www.oracle.com): XML Parser/ XSLT Proc. MSXML et System.xml (www.microsft.com/xml): packages .NET James Clark (www.jclark.com): XT Saxon XML (saxon.sourceforge.net): XSLT Proc. libXML, libXSLT (Unix C) Browsers Microsoft IE 5 ou plus Netscape depuis la V6 Mozilla Firefox depuis la V1 Opera depuis la V7 XSLT
Quelques éditeurs StylusStudio : www.stylusstudio.com Edit, Map, Debug XSLT Stylesheets Visual, Easy-to-Use Tools for XSLT! EditiX : www.editix.com XSLT Debugger XML XSD XSL SVG XSL-FO MoreMotion : www.moremotion.com Fast XSLT Stylesheet Development With High-End Wysiwyg Editor Oxygen XSLT Editor : www.oxygenxml.com Edit and debug your XSL stylesheets Transform XML using XSLT and FOP Altova Style Vision : www.altova.com Visual stylesheet design from databases XSLT
Editeur XSLT (Sonic)
Mapper XSLT à XSLT (Sonic)
Bilan XSLT XSLT est un langage très puissant de transformation d'un arbre XML en un autre XSLT permet en particulier de publier des données XML sur le Web par transformation en un document XHTML standard XSLT est très utilisé : Pour publier des contenus XML Pour transformer des formats (EAI, B2B) XSLT
Quiz (5) XPath permet d'adresser tous les descendants d'un nœud ? XPath permet d'appliquer des fonctions standards sur un nœud et de comparer le résultat à une valeur ? XPath permet de joindre deux arbres XML sur valeur de feuilles ? XSL est basé sur le paradigme "règle conjonctive" ? Un moteur XSL est nécessaire sur un serveur d'entreprise ? JavaScript n'a rien à voir avec XSL ? Un template XSL est appliqué quand il est appelé par un autre template ? Deux templates à conditions vraies s'annulent ? Une production XSLT peut incorporer l'appel à des commandes XSLT et à des fonctions Java ?
3. XSL-FO : le formatage Nommé officiellement XSL Standard depuis octobre 2001 Permet les mises en pages sophistiquées sur écran, papier, ... Génération de PDF ou RTF Applique des objets de mise en forme aux données XML Utilisé notamment pour la PAO XSL-FO
Complémentaire à XSLT Peut s'appliquer aux résultats des feuilles XSLT XSL-FO
Organisation du document Un document FO est formé d'un élément fo:root qui comprend deux parties distinctes une description des modèles de pages fo:layout-master-set une description du contenu fo:page-sequence Le contenu comporte : Des flux contenant les données mêmes du document Des éléments statiques dont le contenu se répète sur les pages (en-têtes courants, no de page, etc.) XSL-FO
Structure de la feuille fo:root <?xml version="1.0" encoding="ISO-8859-1"?> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> <fo:simple-page-master master-name="A4"> <!-- Template de page ici --> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="A4"> <!-- Contenu de la page ici --> </fo:page-sequence> </fo:root> Définition des masques de pages (1 à N) Définition des contenus de chaque page XSL-FO
Modèle de page Page découpée en régions Les régions ont des marges Fixées par des attributs dans le masque de page Les flux de données sont envoyés les régions XSL-FO
Objets de formatage Les objets de formatage sont multiples : <fo:block> utilisé pour les blocs de textes, paragraphes, titres… <fo:display-rule> ligne de séparation <fo:external-graphic> zone rectangulaire contenant un graphisme (SVG) Ils possèdent de nombreuses propriétés Pour un block on peut définir la marge gauche et droite l’espace avant et après le paragraphe la couleur du texte ………... XSL-FO
XSL-FO: hello World <?xml version="1.0" encoding="iso-8859- 1"?> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/F ormat"> <fo:layout-master-set> <fo:simple-page-master master- name="my-page"> <fo:region-body margin="2 cm"/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="my- page"> <fo:flow flow-name="xsl-region-body"> <fo:block>Hello, world!</fo:block> </fo:flow> </fo:page-sequence> </fo:root> Element Root Permet de définir le namespace XSL-FO Layout master set Permet de déclarer une ou plusieurs page masters (masque) et page sequence masters pour définir la structure des pages (ici une de 2 cm de marges) Page sequence Les pages sont groupées en séquences et structurées selon la référence au masque. Flow C'est le container du texte utilisateur dans le document. Le nom du flot lit le texte à une zone de la page définie dans le masque. Block C'est le bloc de formatage qui inclut un paragraphe de texte pouvant être produit pas XSLT. XSL-FO
Fonctionnalités Pages portrait ou paysage Pages recto-verso Page de tailles variées Marges multiples Colonnes multiples Entête et pieds de page Caractères unicode Formatage multi-langages Tables des matières générées Multiple directions d'écritures Numérotation des pages Graphiques et SVG Tables, avec entêtes, lignes et colonnes fusionnables Listes Zones flottantes Tris à l'édition Notes de bas de pages XSL-FO
Les processeurs XSL-FO FOP (Apache Group) Open Source Formating Object Processor Génère du PDF http://www.apache.org JFOR (Sourceforge) Open Source Génère du RTF http://sourceforge.net/projects/jfor XSL Formatter Antenna House http://www.antennahouse.com RenderX Génère du PDF http://www.renderx.com StyleVision Altova http://www.altova.com/products_xsl.html Scriptura InventiveDesigners http://www.inventivedesigners.com/scriptura Autres Arbortext, Adobe, Xinc, XMLPDF, APOC, XSL-FO to TeX XSL-FO
Bilan XSL XML = format pour la production de publications échangeables sur le web : production d’une source unique en XML ; XSLT = génération automatique de présentations multiples ; XSL-FO = génération de présentations soignées avec pages maîtres et blocs formatés. XSL peut être vu comme le langage de programmation de XML … Questions ? XSL
4. XML: le traitement par programme XML Schema (ou DTD) Manipulation de l'arbre XML <ville>Paris</ville> <pays>France</pays> <temp echelle="C">18</temp> Format interne Structures de données XML DOM Parser Bien formé Valide événements – call back <ville>Paris</ville> SAX XSL Stylesheet Mal formé/Invalide XSLT XSLFO (X)HTML <city>Paris</city> <temp degree="F">65</temp> WML XML PDF RTF, Word Parser
L'interface DOM Standard du W3C fait pour HTML et XML Structure d'objets pour représenter un document Résultat d'un "parser" Arbre d'objets reliés entre eux Interface objet pour naviguer dans un document Orientée objet Peut être utilisée en: Java, C++ C#, VB Python, PHP Parser
Principaux parseurs API générique J2EE JAXP J2EE (Sun JDK) Oracle Document XML API générique J2EE JAXP J2EE (Sun JDK) Oracle SDK Oracle Microsoft MSXML Apache (Java, C++) Xerces Parseur DOM Arbre DOM API DOM Application Parser
Exemple d'arbre DOM <Guide> </Guide> Document Racine du document NodeList <Guide> Element NodeList <Restaurant> <Bar> <Guide> <Restaurant id="R1">Le meilleur restaurant</Restaurant> <Bar/> </Guide> Element Element NamedNodeMap Attr Id="R1" NodeList Text Le meilleur restaurant Parser
Quelques interfaces de base Document createElement (Nom_Element): créer un élément avec le nom spécifié en paramètre. createComment (commentaire): créer une ligne de commentaires dans le document. createAttribute (Nom_Attribut): créer un attribut avec le nom pris en paramètre. getElementsByTagName (nom_Tag): retourne tous les descendants des éléments correspondants au Nom_Tag. Nœud insertBefore (Nouveau_Noeud, Noeud_Reference): insère un nouveau nœud fils avant le " nœud référence" déjà existant. replaceChild (Nouveau_Noeud, Ancien_Noeud): remplace le nœud "Ancien_Noeud" par le nœud "Nouveau_Noeud". removeChild (Nœud): supprime le nœud entré en paramètre de la liste des nœuds. appendChild (Nouveau_Noeud): Ajoute un nouveau nœud a la fin de la liste des nœuds. hasChildNodes(): Retourne vrai si le nœud possède un enfant Parser
Autres interfaces Interfaces fondamentales Interfaces étendues XML DOMImplementation Document Comment DocumentFragment Element Attr(ibute) NamedNodeMap CharacterData Text Interfaces étendues XML ProcessingInstruction DocumentType CDATASection Notation Entity EntityReference Parser
Exemple d'utilisation Document: <nom ville ="Paris"> Public class ExempleDOM public static main (String argc[]) throws IOException, DOMExcetion {XMLDocument xmlDoc = new XmlDocument(); // creation des nœuds ElementNode nom = (ElementNode) xmlDoc.createElement("nom"); ElementNode prenom = (ElementNode) xmlDoc.createElement("prenom"); ElementNode nomfam = (ElementNode) xmlDoc.createElement("nomfam"); // creation de l'arbre xmlDoc.appendChild(nom); nom.appenChild(prenom); prenom.appendChild(xmlDoc.createTextNode("Jean"); nom.appenChild(nomfam); nomfam.appendChild(xmlDoc.createTextNode("Dupont"); // positionnement d'un attribut nom.setAttribute("ville", "Paris"); // sortie System.exit(0); } } Document: <nom ville ="Paris"> <prenom> Jean </prenom> <nomfa> Dupont </nomfa> </nom> Parser
Bilan DOM Une interface objet standard Performance limitée DOM 2.0 Navigation dans l'arbre XML Traitements spécifiques Performance limitée Place mémoire importante Traitement à la fin de l'analyse DOM 2.0 API indépendante de la structure mémoire DOM Level 3 : XPath Support direct de XPath Définition d'un XPath Evaluator Events Modèle d'événements Associés à un nœud Propagés dans l'arbre Style Accès aux styles Mapping complet Load and Save Stockage de l’arbre Parser
L'interface SAX SAX (Simple API for XML) Types d'événement : modèle simplifié d'événements développé par un groupe indépendant. Types d'événement : début et fin de document ; début et fin d'éléments ; attributs, texte, … . Nombreux parseurs publics XP de James Clark, Aelfred, Saxon MSXML3 de Microsoft Xerces de Apache JAXP de SUN Parser
Principe de fonctionnement Méthodes utilisateur Evénement startDocument Parser Document XML Stream XML Evénement startElement …. Evénement endDocument Content Handler Parser
Les méthodes essentielles XMLReader setContentHandler setErrrorHandler parse ContentHandler startDocument endDocument startElement endElement characters ErrorHandler fatalError error warning Parser
Exemple SAX et DOM startDocument () startElement (personne) startElement (nom) characters (Cover) endElement (nom) startElement (prenom) characters (Harry) endElement (prenom) startElement (adresse) startElement (rue) characters (Stendhal) endElement (rue) startElement (ville) characters (Paris) endElement (ville) endElement (adresse) endElement (personne) endDocument () <personne> <nom> Cover </nom> <prenom> Harry </prenom> <adresse> <rue> Stendhal </rue> <ville> Paris </ville> </adresse> </personne> personne nom prenom adresse rue ville #text: Cover #text: Paris #text: Stendhal #text: Harry Parser
DOM versus SAX DOM utilise SAX pour la construction de l’arbre d’un document XML SAX est plus léger que DOM Au-dessus de DOM, il est possible d ’implémenter un « method caller » ... Parser
Integration : API JAXP Java API for XML Parsing Objectif JAXP est une d'API standard J2EE permettant d'effectuer des traitements XML qui englobe : SAX (SAX 2.0) DOM (DOM Level 2) la manipulation de transformations XSLT Objectif Fournir une couche d’abstraction permettant d’utiliser n’importe quel analyseur SAX/DOM ou processeur XSL JAXP 1.3 est inclus dans le JDK de Sun Java WSDP 2.0, Java SE 5.0, disponible sur Java.Net Parser
Le mapping objet (Data Binding- JAXB) Définition Mapping entre un document XML et un graphe d’objets métier C++ ou Java Développements manuels Interface générée à l’aide d’outils de Data Binding Objets C++ Objets Java Objets Java Parsing Xerces C++ Parsing XDK Java Binding Java XML XML XML Mapping 136
Principes Compilation du schéma en classes Java Traduction des documents en objets Possibilité de publier les objets en XML compile Schema Classes instance of conforms unmarshal Objects Documents marshal Mapping
Avantages L’activité de développement "parsing" est réduite Gain en coût de développement des interfaces Les applications peuvent se concentrer sur le fonctionnel Les développeurs n'ont pas à se soucier du mapping XML Les Systèmes Techniques sont simplifiés Capitalisation sur l’interface (utilisation, évolution, …) Gain en terme de fiabilité (fin de l’utilisation de parseurs variés, parfois écrits à la main) Les performances de l’interface sont optimisées Les outils de mapping sont intégrés aux serveurs J2EE = JAXB .NET = mapper Mapping
5. Conclusion Un ensemble d’outils pour traiter du XML: Questions ? Processeurs XSLT/XSLFO Analyseurs validants Intégrés aux serveurs d’applications J2EE = JAXP .NET = MSXML En évolution permanente Questions ?
Quiz (6) XSLFO formate du XML comme CSS formate du HTML ? Avec XSFO, une page est divisée en 4 marges et 8 régions ? Une feuille de style <fo:root> projette un flux XML dans un modèle de page écrit en XSLT ? SVG est un standard du monde XML pour les cartes 3D ? Un paser DOM produit un flux d'événements alors qu'un parser SAX produit un arbre d'objets ? Les objets DOM sont des éléments ou des documents ? Parser et valider un flux XML à la volée est impossible ? JAXP est une API de Microsoft ? JAXB évite le travail de mapping en projetant le XML sur des objets métiers ?
IV. Web Services Objectifs Architecture Protocole web (SOAP) Composition et de services web Position du marché Conclusion
1. Besoins des Applications Web Le Web classique (1.0) Conçu pour les applications à interactions humaines Partage d'information publiée par les serveurs E-commerce de type B2C Extensions nécessaires Accès à l'information depuis des programmes Accès par le Web à des applications existantes Interopérabilité entre applications sur Internet/Intranet Processus de e-commerce B2B automatisés Sociétés et clients doivent pouvoir travailler ensemble Eviter le danger de « mort par isolation » Introduction
Principes des services Web Proposer une plate-forme de traitement distribuée autour d'Internet/Intranet Permettre l'interopérabilité totale entre composants Offrir un modèle de composants simple Modules avec interface composée de fonctions Paramètres structurés et diversifiés en place des URL longues contraignantes (ASCII, plats, 4K) Permettre de découvrir dynamiquement les services Annuaire de services et service de recherche Offrir des outils d'intégration de composants A l'échelle de l'Internet ou de l'Intranet Introduction
Exemple d'applications Diffusion d'information horaires, incidents, états de stocks cours de bourse, entrées d'annuaires, etc. Contrôle d'information autorisation de cartes de crédits authentification d'un client Mise à jour de logiciels Documentation automatique présentation, marketing, veille technologique librairie électronique, manuels, maintenance, etc. communication et "knowledge management" Commerce électronique présentation, sélection, transaction, médiation, etc. Introduction
2. Architecture Web Services SERVEUR Service Provider SERVEUR Service Provider Request Publish Publish Service Registry SERVEUR Service Provider Request Publish SERVEUR Publish Request Find Service Provider SERVEUR Request WEB-HTTP Service Requester CLIENT Architecture
Qu'est ce qu'un Web Service ? Définition [W3C] Un Web service est un composant logiciel identifié par une URI, dont les interfaces publiques sont définies et appelées en XML. Sa définition peut être découverte par d'autres systèmes logiciels. Les services Web peuvent interagir entre eux d'une manière prescrite par leurs définitions, en utilisant des messages XML portés par les protocoles Internet. Exposition Langage WSDL utilisé pour décrire le service Similaire à IDL mais basé sur XML Activation Protocole Web au-dessus de HTTP (RPC XML, SOAP) Autres protocoles possibles … Architecture
Les constituants Service Provider (Fournisseur de service) Application s'exécutant sur un serveur et comportant un module logiciel accessible par IxxNet en XML Service Registry (Annuaires de service) Annuaire des services publiés par les providers (UDDI) Géré sur un serveur niveau application, entreprise ou mondial Service Requester (Demandeur de service) Application cliente se liant à un service et invoquant ses fonctions par des messages XML (SOAP) Architecture
Description of providers Vue d'ensemble Interface Service Provider Application Find? W S D L Description of providers and services UDDI Category Provider WSDL Service Publication Encodeur SOAP Interface client XML Service Call Translateur HTTP/S Architecture
Description des services: WSDL Elément Type Types des paramètres (schéma XML) Elément Message Appel et retour d'opération Elément Port type Groupe d'opération Elément Binding URL de l'opération Type de protocole Service Port (e.g. http://host/svc) Port Binding (e.g. SOAP) Binding Abstract interface portType operation(s) inMessage outMessage Architecture
Description en WSDL <definitions name = "..." xmlns: …> <types> <!--Définition des types de données; basés sur ceux des schémas --> … </types> <message> <!--Déclaration des messages (entrées et sorties)--> … </message> <portType> <!--Déclaration des opérations (par association des messages)--> … </portType> <binding> <!--Définition de la liaison WSDL – SOAP (noms d'actions et codages)--> </binding> <service name= " … " > <!--Déclaration des ports (groupes d'opérations et protocoles d'accès)-->… </service> </definitions> Architecture
Exemple: GetLastTradePrice <?xml version="1.0"?> <definitions name="StockQuote"> <types> <schema> <element name="TradePriceRequest"> <complexType> <all> <element name="tickerSymbol" type="string"/> </all> </complexType> </element> <element name="TradePrice"> <complexType> <all> <element name="price" type="float"/> </all> </complexType> </element> </schema> </types> <message name="GetLastTradePriceInput"> <part name="body" element="xsd1:TradePriceRequest"/> </message> <message name="GetLastTradePriceOutput"> <part name="body" element="xsd1:TradePrice"/> </message> <portType name="StockQuotePortType"> <operation name="GetLastTradePrice"> <input message="tns:GetLastTradePriceInput"/> <output message="tns:GetLastTradePriceOutput"/> </operation> </portType> <binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="GetLastTradePrice"> <soap:operation soapAction="http://example.com/GetLastTradePrice"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="StockQuoteService"> <documentation>My first service</documentation> <port name="StockQuotePort" binding="tns:StockQuoteBinding"> <soap:address location="http://example.com/stockquote"/> </port> </service> </definitions> Architecture
Annuaire des services: UDDI Universal Description, Discovery and Integration Annuaire des services décrit par un document WSDL, spec. EJB, autre … Accessible en SOAP Fonctions Enregistrer votre société Enregistrer des services Enregistrer des opérations Découvrir des services … Annuaire UDDI Annuaire UDDI Gérant de requêtes Enveloppe + Document Dde de Service Programme Architecture
Contenu de l’annuaire Pages blanches (businessEntity) BusinessKey Name Description CategoryBag BusinessServices Pages jaunes (businessService) ServiceKey BindingTemplates Pages vertes (bindingTemplates) BindinKey AccessPoint Contenu défini par un schéma XML Spécifications pour réplication BusinessEntity tModel Spécifs d’interfaces et taxonomies BusinessService Publisher Assertion Binding Templates Relations entre deux parties Infos techniques Architecture
Principaux fournisseurs IBM UDDI Registry Un registre UDDI avec des fonctionnalités de recherche www-3.ibm.com/services/uddi/ Microsoft UDDI Business Registry (UBR) uddi.microsoft.com/default.aspx SAP UDDI Business Registry Public pour l'instant Systinet Registry Support complet de UDDI V3 www.systinet.com/products/sr/overview Oracle Application Server UDDI Registry otn.oracle.com/tech/webservices/htdocs/uddi/ Architecture
Client Web de Recherche Architecture
3. SOAP Inspiré du RPC DCE adapté à XML Appel de procédure distante sur Internet Appelant Stub ou Proxy Appelant Skeleton ou Listener Appelé Souche Réseau d'interconnexion Souche Appelé SOAP
Qu'est-ce-que SOAP ? Simple Object Access Protocol Ni simple, ni objet … Invocations de fonctions en XML au-dessus de HTTP : Pour accéder services, objets et serveurs Indépendant de toute plate-forme Codage universel XML par opposition aux spécifiques : DCOM - DCE/NDR CORBA - IIOP/CDR JAVA - RMI/JRMP RDA - XDR Résolution des problèmes de session, sécurité, transaction … Associé à WSDL pour publication d'interfaces SOAP
Un échange type SOAP Messages SOAP Appel Application Cliente HTTP Port de connexion (URL) Pare-feu Pare-feu Messages SOAP Procuration d'interface Appel Translateur SOAP Application Cliente HTTP RPC local Réponse Parser XML Parser XML Serveur d'application CLIENT SERVEUR SOAP
Eléments d'un message Envelope Header Body Élément pouvant contenir des déclarations d'espaces de noms ou des sous-éléments Header Élément optionnel fils de Envelope Permet des extensions telles que authentification, session, etc. Body Élément obligatoire fils de Envelope Définit la méthode appelée, contient les paramètres Peut contenir un élément Fault en cas d'erreur SOAP
Structure d'un message SOAP Protocol Headers Entête de protocoles (HTTP, SMTP, …) SOAP Envelope <Envelope> SOAP Header <Header> SOAP Body <Body> SOAP
Exemple www.stockquoteserver.com float GetLastTradePrice (Symbol) Le dialogue : Application Application SOAP Request Interface Interface Reply SOAP SOAP HTTP HTTP Error www.xquark.org www.stockquoteserver.com SOAP
La requête POST /StockQuote HTTP/1.1 Host: www.stockquoteserver.com Content-Type: text/xml; charset="utf-8" Content-Length: nnnn SOAPAction: "Some-URI#GetLastTradePrice" <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap"> <SOAP:Body> <m:GetLastTradePrice xmlns:m="Some-URI"> <symbol>DIS</symbol> </m:GetLastTradePrice> </SOAP:Body> </SOAP:Envelope> Standard HTTP SOAP
La réponse HTTP/1.1 200 OK Content-Type: text/xml; charset="utf-8" Content-Length: nnnn <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap"/> <SOAP:Body> <m:GetLastTradePriceResponse xmlns:m="Some-URI"> <Price>34.5</Price> </m:GetLastTradePriceResponse> </SOAP:Body> </SOAP:Envelope> Standard HTTP SOAP
Exemple: Google Search requests Cache requests Spelling requests Soumet une requête avec un ensemble de paramètres à Google Web APIs service et reçoit en réponse un ensemble de résultats de recherche. Cache requests Soumet une URL à Google Web APIs service et reçoit en réponse le contenu de l'URL lors de la dernière visite du crawler Google. Spelling requests Soumet une requête à Google Web APIs service et reçoit en réponse une suggestion de correction orthographique pour la requête. SOAP
Bilan SOAP Protocole d’invocation de services Web Lisible et extensible Au-dessus de HTTP Description en WSDL Possibilité d’attachements MIME (PDF, GIF, BIN, …) Pousser par Microsoft, IBM, BEA, … CORBA ou DCOM « killer »? Associé à nomination des objets Véritable échange de messages entre objets Performance ? Questions ? SOAP
Quiz (7) Le Web classique est basé sur HTTP qui ne supporte pas directement l'échange de données typées et composites ? La démarche composant objet est reprise telle quelle dans les WS ? Pour être utilisable, un WS doit être répertorié dans un annuaire UDDI ? WSDL permet de décrire un WS comme un type abstraits lié ? Les paramètres d'un WS sont typés avec les types des DTD ? Un annuaire UDDI est un méta-service ? SOAP permet d'invoquer un WS par un message XML avec header ? SOAP est le concurrent de HTTP ? SOAP est lourd et gagne a être remplacé par HTTP en Web 2.0 ? L’architecture REST propose un autre protocole pour invoquer des WS ? SOAP supporte cryptage, session et transaction ?
4. Composition de Services Web Objectifs Modéliser des processus métiers (business process) Composer des services Web distribués Piloter l'exécution Orchestration d'activités Echanges XML sûrs Gestion de transactions Business Process Management Workflow d’activité Exemple : réservation Début Réserver Avion Louer Voiture Train Hotel OK ? Echec Succès oui non BPM
Objectifs Alliances entre business pour offrir des services intégrés à valeur ajoutée en combinant des services existants Réutilisation et extension de services existants Support pour la planification, la définition et l'implémentation de services composés Développement d'applications distribuées composées de services web Fourniture d’outils avec interfaces graphiques permettant de déclarer les compositions sans programmer BPM
Les briques à standardiser Choreography - CDL4WS Business Processes Orchestration - BPEL4WS Transactions Quality of Service WS-Messaging WS-Security Notifications Quality Management UDDI Discovery WSDL Description Description SOAP Message XML HTTP, IIOP, JMS, SMTP Transport BPM
WS-Messaging Objectifs : Moyens Assurer le transfert fiable de messages en présence de pannes Identifier et tracer les messages S’intégrer aux en-têtes SOAP Moyens Numérotation des messages par séquences Accusés de réception BPM
WS-Transaction Objectifs Moyens : deux modèles intégrés Permettre l’atomicité des transactions courtes Gérer efficacement les transactions longues multi-sites Supporter des business process fiables Moyens : deux modèles intégrés Atomic transaction (AT) Utilisé pour assurer l’atomicité d’activités de courte durée Intégration du protocole de validation en deux étapes Business Activity (BA) Utilisé pour coordonner des activités de longues durées Intégration des sagas avec des compensations de fonctions Les messages de contrôle s’intègrent aux entêtes SOAP BPM
WS-Security : Fonctions de base Authentification: Qui a envoyé ce message ? Attestations (Credentials) Login/Password Certificat digital Autorisation: Que peut faire cet utilisateur ? Droits d’accès accordés aux utilisateurs Utilisation de rôles pour grouper les droits Confidentialité: Qui peut lire ce message ? Cryptage des données Clés secrètes ou couple publique/privée pour crypter/décrypter Intégrité: Quelqu’un a-t-il modifié ce message message? Signature digitale pour comparer messages envoyés et reçus BPM
WS-Security : Les standards XKMS (XML Key Management Specification) Gestion des clés publiques et privées Encapsule les architectures PKI XML Signature – W3C Ajoute une signature codée en XML au message La signature est le cryptage d’un digest par clé privé Le digestest obtenu par hachage du document signé XML Encryption – W3C et IETF Cryptage des messages Possibilité de crypter des fragments différemment Le fragment crypté est remplacé par du binaire base 64 BPM
WS-BPEL : Business Process Modelling Graphe acyclique d'activités modélisant un processus métier Les activités représentent les unités de traitement Les liens de contrôle définissent le flux d'exécution Les activités correspondent à des services Web [ WS] Les liens de données définissent le flux d'information. Les activités peuvent être d'autres business process BPM
WS-BPEL : Exemple Description du flux d’activité en XML <sequence> Receive <PO> <flow> Invoke <InventoryService> Invoke <CreditService> Reply <Invoice> </sequence> BPM
Les standards de l’OASIS WS-Messaging 1.1 Juin 2007 WS-Transaction 1.1 mai 2007 WS-Security Février 2006 WS-BPEL 2.0 Avril 2007 2000/05 XLang (Microsoft) 2001/03 BPML (Intallio et al) 2001/05 WSFL (IBM) 2001/06 BPSS (ebXML) 2002/03 BPEL4WS 1.0 (IBM, Microsoft) BPEL4WS 1.1 (OASIS) 2002/06 2003/01 WS-Choreography (W3C) 2003/04 WSCI (Sun et al) WSCL (HP) 2002/08 BPM
Bilan Processus Métiers Un domaine chaud Au cœur des architectures SOA Développements de nombreux outils BPEL s'impose comme un standard de l’OASIS Le W3C a des groupes de travail connexes Vers plusieurs standards pour la qualité de services WS-Messaging WS-Transaction WS-Security WS-Notification Questions ? BPM
5. Stratégie des constructeurs Au cœur des systèmes Microsoft Evolution de DNA vers .Net avec échanges en XML Visual Studio.Net et .Net Framework 2.0 SDK Permettent le développement de Web Services Génération de proxy client à partir de WSDL Publication et découverte facilitées en UDDI Utilisable depuis 20 langages de programmation Développement possible de pages ASP comme WS Invocables depuis les outils Office Version open source de .Net par Novell: Mono Stratégie
Common Language Runtime Common Language Specification Architecture .NET Operating System Common Language Runtime Base Class Library ADO.NET and XML ASP.NET Web Forms Web Services Windows Forms Common Language Specification VB C++ C# JScript J# Visual Studio.NET Stratégie
Extensions des Web Services Sécurité, routage et attachements binaires WCF (Windows Communication Framework) Implémentation des standards WS-* de ws-i.org Moteur de workflow de base Stratégie
Exemple de développement WS en ASP.Net <%@ WebService Language="VB" Class= "StockQuote" %> Imports System Imports System.Web.Services Public Class StockQuote :Inherits WebService <WebMethod()> Public Function GetLastTradePrice (ByVal tickerSymbol As String) As Float /* Calcul du prix Price */ Return Price End Function End Class Génération automatique du WSDL et du translateur SOAP Possibilité d’appel par client HTTP ou API SOAP générée Stratégie
Intérêt de la généralisation des WS Infrastructure Système Gestion des Données Infrastructure Applicative Infrastructure “Information Worker” Outils de développement Administration et Sécurité Pattern & Design, ASP.NET Web Matrix, ASP.NET starter kit, Communautés Applications Partenaires Web Services Unix AS400 Linux OS390 Stratégie
Produits J2EE Apache AXIS2 (Open Source) Servlet permettant de déployer les services à partir d’un fichier archive et d’un descripteur XML Génération automatique du WSDL Appel du servlet depuis SOAP par browser ou client riche Intégrés aux serveurs d'applications API JAX chez IBM, BEA, Oracle, SUN, … Equivalent de .NET dans le monde Java (JSP ~ ASP) Nombreux assistants et outils Large support expérimental de BPEL Stratégie
Architecture Type Stratégie
Java WS Developer Pack (Sun) Boite à outils logiciel gratuite pour construire, tester et déployer les applications Java/XML Supporte les dernières versions des technologies et standards Web Services Avec la dernière version Java WSDP 2.0, les développeurs : Develop and deploy using the latest XML and Web services technologies slated for inclusion into Sun's deployment platforms. Enhance Web services performance without revising WSDL files or application code with the refreshed Fast Infoset features from Java WSDP 1.6. Create XML and Web service-enabled applications that exploit the enhanced security features with enhanced XWSS features. Continue to enjoy Java interoperability and portability across different platforms and devices. Simplify and lower the cost of legacy application integration, data interchange, and publishing in a Web environment. Stratégie
Architectures inter-opérables HTML Serveur de présentation Visual studio XML XML WEB SERVICES .NET XML Java, C++, C#, Word, Excel, … … WEB SERVICES J2EE Stratégie
Position des constructeurs Composants métiers appelables par message XML Encapsulent les applications existantes Début du développement des architectures SOA Agilité du système d'information Développement des workflows de coopération Challengers Leaders Ability to Execute Microsoft IBM BEA Oracle SAP Fujitsu Sun HP CA Novell Siebel Peoplesoft Niche Players Visionaries Completeness of Vision Conclusion
Exemple d'application: Dollar Rent a Car 6e société US de location 400 sites dans 26 pays, 260 sites US; +75.000 véhicules $750MM de revenu en 2001 Réservation à travers GDS Une alternative à GDS: les services Web XML Lien direct avec les partenaires… 25 en 2 mois. Global Distribution Systems XML / SOAP NorthWest Sabre Worldspan On valorise un existant, ici VaxVMS On change de chaine de valeur On améliore la profitabilité Amadeus Galileo $4 Frontal WS ACMS XML / SOAP SouthWest VaxVMS Conclusion Dollar Rent a Car
Ligue de Football Professionnel Ligue de Football Professionnel (CA 990M Euros) rebâtit son système de billetterie en .NET: Système dimensionné et validé pour 8000 ventes/minutes Un nouveau système qui simplifie le développement de nouveaux canaux/ partenariat : Interopérabilité via Services Web avec les réseaux TicketNet et France Billet 8000 ventes/minutes : de quoi remplir le stade Vélodrome de Marseille (60 000 places) en 8 min Le système est déployé dans les grands clubs de foot (premier déployement au Stade Lyonnais,) avec pour étape suivante de se connecter aux réseaux de distribution TicketNET et France Billet. L’approche Service Web et le potentiel d’intéropérabilité on convaincu la LFP : le système pourra potentiellement permettre aux clubs qui le souhaite de mettre en place une boutique en ligne (promotions pour les supporters, etc) mais aussi s’interfacer avec le reste du SI de chaque club. Ligue Nationale de foot http://www.microsoft.com/france/net/temoignages/info/info.asp?mar=/france/temoignages/2003/p_liguefootpro_1103.html&xmlpath=/france/temoignages/xml/microsoft_net.xml&rang=0 Conclusion
SNCF: Fidélisation clients (CRM) Aujourd'hui, la filiale Chargée de la gestion des programme de fidélité (cartes seniors, 12/25 ans ou grand voyageur) s'appuie sur plus de 30 modules Siebel dont les principaux sont Loyalty, pour la gestion de la fidélité pure, Call Center, Analytics (reporting et tableaux de bords) et Gestion des campagnes marketing. Il dispose d'une douzaine de sites de production dont l'outil interne de fidélisation de la SNCF, auquel il se connecte régulièrement pour mettre à jour ses données. Enfin, deux centres d'appels relaient les besoins clients liés à l'aspect fidélisation. "Après 3 mois de mise en production, nous disposons d'un système qui fonctionne bien. Nous distribuons plus de 30 000 primes par mois, dont 30% par nos services Internet. Nous envoyons nos premiers mailings depuis trois semaines", ajoute Cyril Garnier. A terme, de nouvelles fonctions viendront encore enrichir l'offre de services Web tels le relevé de points à distance, l'achat de cartes, la modification de coordonnées clients ou la transformation des points en réservations. Extrait du JDNET du 07/11/2005 Conclusion
7. En résumé ... Invocation dynamique de services WEB décrits en WSDL SOAP est le protocole d'invocation (WP) sur HTTP Intégrité et typage des données (schémas XML) Possibilité de découvrir dynamiquement les services (UDDI) Lisibilité et sécurité renforcée (standard de cryptage) Indépendance des constructeurs (W3C) Intégration des workflows (BPEL) Ajout de contrôle qualité (transaction, sécurité) Questions ? Conclusion
Questions ?