Abdallah.Haloui Page 1 Agence MICA Tour Crédit Lyonnais 129, rue Servient 69326 LYON Cedex 03 e-mail : mica@sully-group.fr XML Domaines d application Outils d intégration Stage du 05/06/2001 au 28/09/2001 PAR Abdallah HALOUI Responsable Sully-group : Pascal FAURE Responsable E.M.S.E : J.Francois CHAMBON
Abdallah.Haloui Page 2 Merci à Pascal FAURE pour m'avoir accueilli au sein de son agence MICA de Sully-group et pour m'avoir permis de mener à bien cette étude. Jean François CHAMBON pour ses précieux encadrements au sein de l Ecole Nationale Supérieure des Mines de Saint-Étienne. Je les remercie pour toute la confiance qu'il m'ont témoignée, pour leur entière disponibilité, et pour tous leurs conseils avisés. Stella TERRAT et Michel CHARRIN pour le temps précieux qu'ils ont consacré à cette étude et pour leurs entière disponibilité. Tous les membres du sully-group, et plus particulièrement Nathalie ROUX-THOMAS, Théodoric MEKONDONGO, Christian JUNDT, Jérôme POULY, Christophe CHAUDIER et Pascal HERAUD, pour tous les leurs encouragements et les bons moments que je continue à passer en leur compagnie
Abdallah.Haloui Page 3 Table des matières SULLY-GROUP... 5 1- PRESENTATION RESUMEE DE SULLY GROUP... 5 3- RENSEIGNEMENTS JURIDIQUES ET FINANCIERS... 6 3- LES PARTENAIRES SULLY GROUP... 7 1- INTRODUCTION ET PROBLEMATIQUE... 8 XML ET LE WEB... 8 OBJECTIF... 10 2- LES ORIGINES DE XML... 11 3-LES STANDARDS PROPOSES PAR XML... 12 DEFINITION... 12 A QUOI RESSEMBLE UN DOCUMENT XML... 12 LES ESPACES DE NOMMAGE :... 14 GRAMMAIRE XML:... 15 1.5.1 Une grammaire qu est ce que c est?... 15 1.5.2 DTD = Document Type Definition... 15 1.5.2.1 Exemple de DTD... 15 1.5.2.2 Référer à une DTD dans un document XML... 15 1.5.2.3 Les constituants d une DTD... 16 1.5.3 XML-Schema... 17 1.5.3.2 Référer à un XML-Schema dans une instance de document XML... 18 1.5.3.3 Les constituants d un XML-Schema... 18 1.5.4 Conclusion... 22 1.6.1. Langage de feuille de style : CSS... 22 1.6.2. Langage de feuille de style : XSL... 22 1.6.3. Langage de transformation : XSLT... 23 1.7. AUTRES LANGAGES ET STANDARDS... 23 1.7.1. Les langages de lien d'adressage : XPATH, XLINK et XPOINTER... 23 1.7.2. Mécanismes de manipulation des documents XML : API (interfaces de programmation applicatifs)... 28 1.7.2.1 DOM... 28 1.7.2.2 SAX :... 29 1.7.3 Autres standards dérivés... 30 4- LES DOMAINES D APPLICATION D XML... 31 4.1 LES NOUVEAUX BESOINS DU WEB :... 31 4-1-1 La gestion de contenu/ged :... 31 4-1-2 L interopérabilité des systèmes d information hétérogènes :... 31 4-1-3 Le commerce électronique/edi :... 31 4-1-4 La personnalisation de la relation client :... 32
Abdallah.Haloui Page 4 4.2 REPONDRE AUX BESOINS AVEC XML... 32 4-2-1 XML et la gestion de contenu/ged... 32 4-2-2 XML et l interopérabilité de systèmes d information hétérogènes... 33 4-2-3 XML et le commerce électronique/edi... 34 4-2-4 XML et la personnalisation de la relation client... 34 5-XML LES BASES DE DONNEES... 35 5.1 XML ORIENTE DOCUMENT OU DONNEES?... 35 5.2 STRUCTURES XML POUR LES BASES DE DONNEES EXISTANTES... 35 6- COMPARAISON DES DEUX EDITEURS TAMINO ET ORACLE :... 38 6-1 LES OUTILS PROPOSES PAR L EDITEUR :... 38 6.1.1 Oracle... 38 6.1.1.1 L'Utilitaire XML-SQL... 39 6.1.1.2 La XSQL Servlet... 40 6.1.2 Software AG... 42 6.1.2.1 Tamino XML Database... 42 6.1.2.2 X-Studio... 42 6.1.2.3 Tamino Integrator... 43 6-2 L INSTALLATION DE LA BASE :... 44 6-3 LA RECHERCHE DANS LA BASE :... 46 7- CONCLUSION... 49 ANNEXE A : LES EDITEURS XML... 50 ANNEXE B : LES PARSERS... 54 ANNEXE C : DB/XML TRANSFORM... 56 BIBLIOGRAPHIE... 60
Abdallah.Haloui Page 5 SULLY-GROUP 1- Présentation résumée de Sully group L'offre SULLY group est une offre complète qui couvre tout le cycle de l'ingénierie et du Conseil en Systèmes d'information : Cahier des charges, Etudes de conception, Réalisation, Intégration de systèmes, Tierce maintenance applicative. La stratégie de SULLY group est basée sur un positionnement fort sur des expertises de haut niveau : Technologies de l'internet. Systèmes ouverts et architectures Client/Serveur. Systèmes propriétaires : IBM MVS, IBM AS 400, HP 3000. Gestion électronique de documents, Groupware, knowledge Management. Domaines : Services et Opérateurs Publics, Industrie, Banque, Assurance, Transport et Logistique, Services, Administrations et Collectivités. Cette stratégie se décline par 4 offres majeures : La conduite du changement : Du système d'information (études préalables, cahier des charges, audit, aide au choix de solutions, apports stratégiques NTIC et GRC, apports méthodologiques, études d'impact EURO). Pilotage de projets (organisation, méthodologie, conduite de projet, assurance qualité,...) dans de nombreux domaines. Les e-solutions : Projets Intranet et Extranet (architecture objets distribués n-tiers, portails, serveurs applicatifs, services web, messagerie unifiée). Réseaux (architecture technique et logique). E-Business, solutions nomades, benchmarking, EDI / XML... La Gestion de la Relation Client : Etudes d organisation de centres de Contacts (centres d'appels, services clients, Help-Desk), choix et mise en œuvre de solutions GRC. Gestion de la connaissance et gestion documentaire. Informatique Décisionnelle (Datawarehouse, Datamining, Datamart, EIS, SIAD). L'ingénierie et l'intégration de systèmes : Conception et développement (Client / Serveur, Visual Basic, C ++, COBOL et RPG, Interfaces avec ERP, E-business...). Tierce Maintenance Applicative.
Abdallah.Haloui Page 6 Migration et administration des systèmes et réseaux. Support technique Systèmes, SGBD et Bureautique. L'Excellence Professionnelle de SULLY group s'appuie sur quelques règles simples, mélange de tradition et de modernité : Certification ISO 9001 pour les activités d Ingénierie (certificat n 54409). Cycle Projet court : prototypage et réalisation. Mobilisation et engagement professionnel de tous les acteurs. SULLY group, les atouts du succès : 160 collaborateurs professionnels solidaires : Consultants, Chefs de Projet, Ingénieurs d Etudes, Analystes-Programmeurs. Des partenariats industriels en complément de nos savoir-faire. Plus de 100 Clients. Une croissance saine et régulière. Un réseau interagences (LS, ADSL), 10 serveurs, plus de 100 PC et de nombreuses plateformes de développement : HP 9000, SUN, LINUX HP 3000, BULL DPS 6000 Plusieurs ateliers de Génie et Logiciels : JAVA / EJB DESIGNER 2000 / IAS WEB OBJECTS LOTUS NOTES COM + Et plusieurs SGBDR : ORACLE SQL 2000 INFORMIX EMPRESS TAMINO 3- Renseignements Juridiques et financiers Année de création : septembre 1994 R.C. Lyon B 399 091 339 N SIREN 399 091 339 Code NAF 722 Z Capital social : SA au capital de 1 137 600 Euros. Chiffre d affaires :
Abdallah.Haloui Page 7 1997 : 36.6 MF 5.58 M 1998 : 51.2 MF 7.81 M 1999 : 62.5 MF 9.53 M 2000 : 64.6 MF 9.85 M Siège Social : Tour Crédit Lyonnais - 129, rue Servient - 69326 LYON cedex 03 Direction Paris Ile de France : 33, rue de Miromesnil - 75008 PARIS Autres localisations géographiques: Grenoble : Bourgoin : 47 av. Marie Reynoard - 38100 GRENOBLE 10 rue du Tribunal - 38300 BOURGOIN JALLIEU Annecy : Centre Bonlieu, 1 rue Jean Jaurès - 74000 ANNECY Oberhausbergen : Effectif : 160 personnes Actionnaires de Sully Group Parc Tertiaire Valparc 16 rue du Parc. 67205 OBERHAUSBERGEN Sully Group est filiale à 100% de la Société SULLY-Group Partners - SA au Capital de 514 560 Euros. Siège Social : 129, rue Servient, 69003 Lyon. SULLY-Group Partners rassemble l'equipe de Direction de Sully Group et notamment Philippe RIEUNIER (PDG) et Robert COHEN (DG) qui détiennent la majorité. Nous signalons également que la Banque de France a attribué en 2000 à notre Société la cote financière F37. Il s'agit de la meilleure cotation pour l'ensemble des critères : Crédits et Paiement. Banques Lyonnaise de Banque : 10 rue Diet - 38 300 BOURGOIN JALLIEU Société Générale : 17 avenue Gambetta - 38300 BOURGOIN JALLIEU. 3- Les partenaires Sully group Depuis plusieurs années, SULLY group a noué de nombreuses alliances et partenariats dans différents domaines techniques ou sectoriels. Avec un certain nombre d'éditeurs prestigieux de logiciels de base : ORACLE France, en particulier pour les outils de conception, outils de développement ORACLE (programme ALLIANCE). APPLE NEXT, pour WebObjects, Contrat de Revendeur agréé (adhésion à Entreprise Alliance Programme). IBM et LOTUS, pour Lotus Notes. Contrat de Partenaire "Lotus Business Partner". MICROSOFT, pour tous les outils de Développement : IIS, SQL SERVER, MTS, VB6, FRONTPAGE,... Nous sommes partenaires agrées MCSP avec 6 collaborateurs certifiés MCSD et MCSE. Avec les sociétés suivantes : PSINet, provider Internet, pour l'hébergement DBG, pour l'infographie.
Abdallah.Haloui Page 8 1- Introduction et problématique XML et le Web L utilisation d Internet a considérablement augmenté ces dernières années et le Web a engendré un échange de documents électroniques à une échelle sans précédent et a atteint tous les publics, tant professionnels que particuliers. Cette croissance est à associer à la naissance de deux standards: HyperText Markup Language (HTML) : cette spécification décrit un langage associant des données et la manière de présenter ces données HyperText Transfer Protocol (HTTP) : cette spécification décrit un protocole de transport d informations sur internet. Contrairement au HTTP, le HTML est un standard qui a beaucoup évolué depuis son apparition. A l origine dans un document HTML il n y avait pas de prédominance entre les données et la présentation de ces données, un document était constitué à part égale entre les données et la présentation. Rapidement les normes successives de HTML ont laissé la présentation prendre de plus en plus de place dans un document HTML. Il est donc apparu nécessaire de définir un nouveau langage qui serait centré sur la description des données : extensible Markup Language (XML). Les limites du HTML Les différences entre l approche XML et l approche HTML peuvent être schématisées de la façon suivante : HTML Présentation Contenu Structure XML Contenu Présentation Structure Figure 1 : Différences entre un document HTML et un document XML Le succès et la simplicité du HTML ne peuvent plus aujourd'hui masquer ses faiblesses: il n'est pas flexible (les balises sont figées), il mélange la présentation avec le contenu, de simple, il s'est petit à petit compliqué, les pages sont alourdies par les balises (ce qui ralentit la consultation), il est peu adapté à l'échange de données entre applications, les balises fournissent uniquement des indications de présentation du contenu, mais aucune information sur sa nature, sa structuration et son importance, le contenu d'une page HTML ne permet pas un traitement automatique pour assurer la pérennité d'un document. Les apports d'xml
Abdallah.Haloui Page 9 XML est un langage universel d échange de données particulièrement performant : il est simple et peut être véhiculé grâce à des protocoles standards de transport Web comme HTTP (HyperText Transfer Protocol). Techniquement, XML résulte de la rencontre entre SGML et le Web. Pratiquement, il répond au besoin de l'échange de données généralisé, dans les entreprises comme sur Internet, et à la pression des besoins du commerce électronique car il présente l'avantage: d'être flexible (on peut définir les balises qu'on veut), de séparer le contenu de la présentation et de se concentrer sur la structure. La présentation est déduite de la structure (à partir d'un document on peut avoir plusieurs utilisations comme une présentation pour l'écran, une présentation pour un GSM via le protocole WAP, une impression papier, un enregistrement sur CD-ROM ou d'autres supports physiques (voir figure 2),...), d'être simple et lisible (c'est un langage auto descriptif, au format texte et présentant quelques règles de syntaxe), d'être adapté pour les échanges des données entre applications, d'assurer la pérennité Ordinateur Serveur web CD-ROM Document papier Document XML Figure 2 : GSM Tous les composants d un document XML sont délimités et explicités grâce à des balises. En clair, chacun d entre eux vient avec sa propre description, qui peut être structurée sous forme de métadonnées (c est-à-dire de données sur les composants). N importe quelle application peut interpréter un document XML en utilisant un interpréteur (ou parseur) et retirer l information qu il contient. En donnant une sémantique au contenu Web, XML remédie à de nombreuses insuffisances d HTML, tout en conservant la simplicité qui a fait son succès. Microsoft, en utilisant XML dans son navigateur Internet Explorer 5.0 et dans sa suite bureautique Office 2000, fait d XML une partie intégrante de sa stratégie produit Internet. Le géant de Redmond n est pas le seul sur la liste des fervents supporters d XML. Cette liste compte également les noms des plus influentes sociétés comme Sun Microsystems, Oracle, IBM, Hewlett Packard, Novell, SoftQuad et même Nokia. Grâce à la maturation rapide d XML et à la création d un certain nombre d autres standards qui lui sont reliés comme le DOM (Document Object Model), XSL (extensible Stylesheet Language) ou RDF (Resource Description Framework), il ne se passe pas un mois sans qu un éditeur de logiciels décline l un de ses produits «à la sauce XML». Voir autant d acteurs mobilisés en sa faveur donne un aperçu de son potentiel. Nous pensons que
Abdallah.Haloui Page 10 les entreprises qui l auront compris le plus rapidement excelleront dans la mise en oeuvre et l exploitation de leur stratégie Web. Les constructeurs de base de données ont pris vite conscience de la puissance et la flexibilité de XML et développent un support XML dans leurs produits, plusieurs éditeurs ont su rapidement commercialiser des technologies d intégration XML. Objectif L objectif de ce projet est de faire une étude comparative de ces outils de développement intranet et internet des deux éditeurs représentatifs de l offre XML, c est à dire Software AG avec sa base native Tamino et Oracle avec son kit de développement XDK (XML Developpement Kit). Nous allons suivre les démarches suivantes : Tout d abord, nous aborderons l origine de XML. Nous étudierons en suite les standards proposés par XML Etant donnée l importance de connaître les domaines d application de XML, nous passerons en revue certains des plus courants. Durant cette partie nous passerons à un aspect plus intéressant qui concerne XML et les bases de données. En fin nous terminerons par une étude comparative des deux offres Software AG et Oracle.
Abdallah.Haloui Page 11 2- Les origines de XML Une double origine : SGML et HTML : Des solutions techniques en vue d organiser l information ont été recherchées dès les années 60 avec le langage GML (Generalized Markup Langage), balisage généralisé, qui a donné naissance à SGML (Standard Generalized Markup Langage), norme existant depuis 1986, dont le domaine d application est resté limité à la documentation technique et à l informatique éditoriale. SGML est un langage de balisage normalisé, riche en sémantique mais relativement lourd à mettre en oeuvre et inadapté au Web : SGML (Standard Generalized Markup Language, ou langage normalisé de balisage généralisé - norme ISO 8879). Avec l arrivée du Web et l émergence du langage HTML (HyperText Markup Langage), un langage parfaitement adapté au Web (puisque développé uniquement pour cette application) mais dont les applications sont limitées par une bibliothèque de balises figée et réduite : HTML (Hypertext Markup Language, ou langage de balisage hypertexte). Un nouvel essor a été donné à SGML. Le besoin d un méta-langage adapté au web est à l origine de la création de XML, sous-ensemble de la norme SGML. XML est ainsi une double norme, en tant que recommandation du Consortium W3C et en tant que sous-ensemble d une norme ISO. Avec XML, on garde 80 % de la richesse de SGML et seulement 20 % de la complexité", explique Daniel Veillard, du W3C, qui travaille sur les capacités hypertextes de XML. 1998 XML 1990 HTML WWW SGML Internet GML
Abdallah.Haloui Page 12 3-Les standards proposés par XML Depuis que XML est devenu une spécification du consortium W3C, divers développements y ont été ajoutés pour étendre les possibilités d XML. On observe notamment que les développeurs se diriges dans des domaines très variés. En effet, plusieurs recommandations ont été approuvées ou sont en cours d approbation concernant la présentation des données (CSS, XSL, XSLT), les liens hypertextes(xlinks,xpointers), les schémas (DTDS, XML Schema), les interfaces de programmation (SAX, DOM) et bases de données (XQL, XML-QL, QUILT, etc.). Définition XML (extensible Markup Language) est une recommandation du W3C. Sous partie de SGML, XML est un langage à balise définissant un format universel de représentation des données. Un document XML contient à la fois des données et les indications sur le rôle que jouent ces données. Ces indications permettent de déterminer la structure du document. Ce sont des balises. XML est une sous partie de SGML (Standard Generalized Markup Langage) définit par l ISO (ISO 8879). XML - Les dix principes fondateurs de XML : XML doit être utilisable sur Internet. XML doit supporter un large champ d applications. XML doit être compatible avec SGML Les programmes qui manipulent XML doivent être simples à écrire. Les fonctionnalités optionnelles de XML doivent être réduites au minimum. Les documents XML doivent être clairs et compréhensibles par l'homme. La conception du XML devra être préparée rapidement. La conception du XML devra être formelle et concise. Les documents XML doivent être faciles à créer. La concision du langage XML n'est pas une priorité A quoi ressemble un document XML Toute personne ayant déjà vu un document HTML sera familiarisée avec les documents XML. Voici un exemple simple de document. Il s agit d un document XML décrivant un annuaire simple : une liste d entrées, chaque entrée étant composée d un nom de personne et d un numéro de téléphone. <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE annuaire SYSTEM "C:\Documents and Settings\haloui1\Bureau\Expo\Rapport\ex1.dtd"> <annuaire type="pages blanches"> <entree> <nom>agence MICA</nom>
Abdallah.Haloui Page 13 <telephone>06 03 02 01 00</telephone> </entree> <entree> <nom>agence ORSI</nom> <telephone>06 00 01 02 03</telephone> </entree> </annuaire> Le document commence par une entête. Cette entête n est pas obligatoire. Elle contient des informations sur la version de XML et le jeu de caractères utilisés. L entête peut aussi faire référence à une DTD (Déclaration de Type de Document - Document Type Definition). Une DTD est une grammaire qui définit la structure d un document XML. Elle permet de valider que chaque composant d un document XML est à la bonne place. Les DTD sont par exemple utilisées pour valider les flux XML entrants d'un programme. Le document XML suit l'entête. Ce document est composé d un ou plusieurs éléments. Les limites des éléments sont marquées soit par des balises ouvrantes (< >) et fermantes (</ >), soit, pour les éléments vides, par une balise d'élément vide (< />). Chaque élément est identifié par un nom. Il peut contenir des attributs. Exemple d élément vide avec attribut : <expert nom= Improve /> Exemple d élément non vide sans attribut : <telephone> 04 78 63 60 55 </telephone> Exemple d élément non vide avec attribut : <annuaire type= pages blanches > <entree> <nom>agence MICA </nom> <telephone>04 78 63 60 55</telephone> </entree> <entree> <nom>agence ORSI</nom> <telephone>04 78 63 60 55</telephone> </entree> </annuaire> Un document XML doit toujours être bien formé. S'il n est pas bien formé, par définition ce n est pas un document XML. Pour être bien formé un document XML est composé de six types de balisage : les balises (balises ouvrantes, balises fermantes et balises d'éléments vides), les appels d'entité (entity reference), les commentaires, les délimiteurs de section CDATA, les déclarations de type de document, et les instructions de traitement. Il existe d autres règles définissant un
Abdallah.Haloui Page 14 document XML bien formé. Pour en avoir une Description complète se reporter à la recommandation du W3C : http://www.lexum.umontreal.ca/internet99/p1c4.html Les espaces de nommage : Les "espaces de nommage" (XML Namespaces) sont spécifiés dans une recommandation du W3C. Ils permettent : de mélanger du vocabulaire XML provenant de plusieurs grammaires, d identifier de manière unique les balises XML. Pour illustrer l utilisation des espaces de nommage, prenons le cas d une entreprise décrite par deux documents XML. Un document qui contient les informations générales à l entreprise : <entreprise> <nom> Sully-group </nom> <adresse> </adresse> </entreprise> Un document qui contient les informations sur le personnel de l entreprise : <personnes> <personne> <nom> <nomdefamille>faure</nomdefamille> <prenom>pascal </prenom> </nom> <fonction>directeur </fonction> <telephone>0478636055</telephone> </personne> </personnes> La description de l organisation de l entreprise dans un document XML à partir de ces deux documents nécessite l utilisation des espaces de nommage. En effet l élément «nom» se retrouve dans les deux documents avec des significations différentes. Le document XML décrivant l organisation de l entreprise est alors : <organisation xmlns:entreprise=http://www.entreprise.org xmlns:personne ="http://www.personne.org"> <entreprise:nom>sully-group</entreprise:nom> <personne:nom> <personne:nomdefamille>faure</personne:nomdefamille> <personne:prenom>pascal </personne:prenom> <personne:fonction>directeur </personne:fonction> </personne:nom> </organisation>
Abdallah.Haloui Page 15 L URL de l espace de nommage peut être fictive : elle n est pas vérifiée, toutefois elle est généralement sur la grammaire de l'espace de nommage. Grammaire XML: 1.5.1 Une grammaire qu est ce que c est? Une grammaire définie la syntaxe d un langage. En XML le langage est la liste des balises qui sont utilisable, la syntaxe correspond à l organisation de ces balises. Par conséquent, un document XML est compréhensible si sa grammaire est définie. Les documents DTD et XML-Schema permettent de décrire des grammaires de documents XML. Ce sont deux approches différentes, les DTD étant plus simples à mettre en place mais décrivant un document XML de manière moins complète. Si deux documents XML respectent la structure définie dans un DTD ou un XML-Schema, on dit qu ils respectent la même grammaire. 1.5.2 DTD = Document Type Definition DTD signifie Document Type Définition (ou définition de type de document), c'est la grammaire historique des documents XML. La puissance de description des DTD est faible : un DTD permet uniquement de décrire la structure d'un document XML (liste des balises et organisations des balises), et non la typologie des données contenues (chaîne de caractère, date, entier, etc.).. Les DTD sont donc à utiliser lorsque la typologie des données contenues dans le document XML est sans importance. On appelle validation le mécanisme qui vérifie qu un document XML respecte une DTD. 1.5.2.1 Exemple de DTD Dans l exemple ci-dessous, le document XML (1) est valide par rapport à la DTD (2) : 1) <entree> <nom>abdallah HALOUI </nom> <telephone>0477804703</telephone> </entree> 2) <!DOCTYPE ENTREE [ <!ELEMENT entree (nom+,telephone*)> <!ELEMENT nom (#PCDATA)> <!ELEMENT telephone (#PCDATA)> ]> Il est possible de préciser la cardinalité des données. «nom+» signifie qu une entrée contient un et un seul élément nom, «telephone*» signifie qu une entrée contient 0 à n numéros de téléphone. Par contre, on ne peut pas typer les données : «telephone» est censé être un champ numérique et non une chaîne de caractères, mais il n est pas possible de modéliser cette contrainte dans une DTD. 1.5.2.2 Référer à une DTD dans un document XML
Abdallah.Haloui Page 16 Un document XML peut préciser qu il respecte une DTD. Cette information doit être insérée dans l entête du document : <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE annuaire SYSTEM "C:\Documents and Settings\haloui1\Bureau\Expo\Rapport\ex1.dtd"> <annuaire> </annuaire> On fait référence à la DTD par son nom et son URL. Les parseurs XML pourront alors la retrouver et valider ou non ce document (c est à dire vérifier que le document respecte la grammaire fixée par la DTD). Notons que seul les parseurs dit «validant» peuvent valider un document par rapport à sa DTD (Voir Annexe ). 1.5.2.3 Les constituants d une DTD Déclaration : l entête du document DTD précise son nom. Toutes les déclarations se font dans cet élément. Par exemple : <!DOCTYPE ANNUAIRE [... ]> Types de données : Les DTD définissent 10 types de données. Les deux types les plus fréquemment utilisés sont : PCDATA et CDATA : PCDATA signifie Parsed Character Data (ou chaîne de caractères parsée). C est le texte contenu dans un élément. Dans l élément suivant : <element>texte</element>, «texte» est du type PCDATA. CDATA signifie Character Data ou chaîne de caractères. Il s agit de chaîne de caractères qui ne seront pas parsées lors de la validation. On les utilise dans les attributs : par exemple dans l élément: <element attribut= <hello/> >, <hello/> est du type CDATA et sera donc traitée comme une chaîne de caractère, et non une balise XML. Eléments : Les éléments XML sont définis dans une balise <!ELEMENT>. La syntaxe de base est <!ELEMENT nom (contenu)>. Un élément peut être vide, contenir une chaîne de caractères, ou contenir des sous éléments. On peut déclarer la cardinalité des sous éléments : <!ELEMENT element (s1)> signifie que le sous élément s1 peut avoir une et une seule occurrence. <!ELEMENT element (s1*)> signifie que le sous élément s1 peut avoir 0 à n occurrences. <!ELEMENT element (s1?)> signifie que le sous élément s1 peut avoir 0 ou 1 occurrence. <!ELEMENT element (s1+)> signifie que le sous élément s1 doit avoir au moins 1 occurrence. Attributs : Les attributs sont tous décrits dans une balise <!ATTLIST>. La syntaxe de base est: <!ATTLIST nom-element nom-attribut1 type valeur-par-defaut nom-element nom-attribut2 type valeur-par-defaut...> Il existe de nombreux types possibles pour l attribut. On utilise généralement CDATA (Character Data, ou chaîne de caractères), ou une énumération de valeurs possibles.
Abdallah.Haloui Page 17 Entités : les entités peuvent être considérées comme des variables. Elles sont déclarées et non mutables, et peuvent être utilisées dans tout document XML respectant cette DTD. Elles peuvent être internes ou externes (c est à dire faire référence à un autre document par le biais d une URI). Leur déclaration est contenue dans l élément <!ENTITY>. 1.5.3 XML-Schema XML-Schema est une recommandation du W3C, au même titre que XML et que les espaces de nommage. Les documents XML-Schema permettent de décrire la structure d'un document XML d'une façon beaucoup plus complète que les DTD. Il est par exemple possible de spécifier la typologie des données (String, Decimal, etc..) que va contenir le document XML décrit par le XML-Schema. Attention toutefois, sous le terme XML-Schema se cache plusieurs "normes". Dans la mesure du possible préférer celle du W3C car elle suit un processus de standardisation ouvert et clair. 1.5.3.1 Exemple de document XML-Schema : Pour exemple, modélisons l élément <entree> de l annuaire précédemment décrit à l aide de XML- Schema. Nous pouvons ici préciser le type des informations contenues dans les éléments <nom> (string) et <telephone> (decimal). Le document XML : Le document XML-Schema : <entree> <nom>abdallah HALOUI</nom> <telephone>0477804703</telephone> </entree> <xsd:schema xmlns:xsd="http://www.w3.org/2000/10/xmlschema"> <xsd:element name="entree"> <xsd:complextype> <xsd:sequence> <xsd:element name="nom" type="xsd:string" minoccurs= 1 maxoccurs= 1 /> <xsd:element name="telephone" type="xsd:decimal"/> </xsd:sequence> </xsd:complextype> </xsd:element> </xsd:schema> XML-Schema permet de gérer les occurrences d un attribut, les types complexes, etc. De plus, un document XML-Schema respecte la syntaxe XML, à l inverse des DTD pour lesquels il faut apprendre une nouvelle syntaxe. Par contre, comme on peut le remarquer sur l exemple précédent,
Abdallah.Haloui Page 18 un document XML-Schema est généralement plus volumineux et plus difficile à lire qu une DTD (pour un opérateur humain). Les opposants à cette norme lui reprochent sa trop grande complexité. Il existe des initiatives pour créer un langage plus facile d utilisation et aussi complet (nous pouvons par exemple citer TREX de James Clark). 1.5.3.2 Référer à un XML-Schema dans une instance de document XML Un document XML peut préciser qu il respecte un XML-Schema. Cela se fait dans l entête de ce document : <entree xmlns ="http://www.annuaire.org" xmlns:xsi="http://www.w3.org/2000/10/xmlschema-instance" xsi:schemalocation="http://www.annuaire.org/entree.xsd"> <nom>abdallah HALOUI </nom> <telephone>0477804703</telephone> </entree> L espace de nommage xsi correspond aux instances de documents XML respectant les contraintes définies dans un document XML-Schema. Le W3C a défini une librairie de balises et attributs pouvant être utilisés par ces documents. 1.5.3.3 Les constituants d un XML-Schema Comme nous l avons déjà précisé, XML-Schema est une norme assez complexe. Nous n entrerons donc pas autant dans les détails que pour les DTD. Déclaration : l élément <xsd:schema> permet de déclarer un document XML-Schema. Son attribut targetnamespace permet de préciser l espace de nommage de ce type de documents. L attribut elementformdefault précise si les documents XML respectant cette grammaire doivent référer à cet espace de nommage. <xsd:schema xmlns:xsd="http://www.w3.org/2000/10/xmlschema" targetnamespace="http://www.annuaire.org" xmlns="http://www.annuaire.org" elementformdefault="qualified"/> Types de données : XML-Schema définit plus de 40 types de données, et fournit un mécanisme de définition de types de données complexes. Parmi ces types définis par XML-Schema on retrouve string, integer, date, year, CDATA, float, double, binary, ENTITIES, token, byte, etc. Pour définir ses propres types de données, il est possible de créer un type de données totalement nouveau, de restreindre ou d étendre un type de données existant. Note : une déclaration de type est visible par tous les descendants du noeud dans lequel il a été déclaré. Par exemple, un type qui a été déclaré sous le noeud <xsd:schema> sera par voie de conséquence visible dans tout le document. Pour créer un nouveau type de données, il faut utiliser la balise <xsd:complextype>. Créons par exemple un type de données entree : <entree> <nom>string</nom> <telephone>decimal</telephone> </entree> On utilise la syntaxe suivante :
Abdallah.Haloui Page 19 <xsd:complextype name= typeentree > <xsd:sequence> <xsd:element name= nom type= xsd:string /> <xsd:element name= telephone type= xsd:decimal /> </xsd:sequence> </xsd:complextype> Pour l utiliser dans une déclaration d élément on utilise la syntaxe suivante : <xsd:element name= entree type= typeentree > 1. Restriction de type existant : utilisation de <xsd:simpletype> Le type de données string comprend 6 attributs optionnels : pattern, enumeration, length, minlength, maxlength, whitespace. Si on désire définir un type de string représentant un choix (oui/non) : <xsd:simpletype name="choixouinon"> <xsd:restriction base="xsd:string"> <xsd:enumeration value= oui /> <xsd:enumeration value= non /> </xsd:restriction> </xsd:simpletype> Pour utiliser ce type de données dans une déclaration d élément, on utilise l attribut type : <xsd:element name= choix type= choixouinon /> Une instance de cet élément : <choix>oui</choix> Il est possible d empêcher la restriction d un type lors de sa déclaration : <xsd:complextype name="choix" final="restriction">... 2. Extension d un type de données existant : utilisation de <xsd:complexcontent> Il est aussi possible de créer des types dérivés, ajoutant des éléments aux structures déjà créées. Reprenons le type «entree» défini précédemment. Il est possible de créer un type dérivé entreeavecadresse contenant en plus du nom et du numéro de téléphone une adresse sous la forme d un string : <xsd:complextype name="entreeavecadresse"> <xsd:complexcontent> <xsd:extension base="entree" > <xsd:sequence> <xsd:element name="adresse" type="xsd:string"/> </xsd:sequence> </xsd:extension> </xsd:complexcontent> </xsd:complextype> Il est possible d empêcher la dérivation d un type lors de sa déclaration (type final): <xsd:complextype name= choix final= extension >... Pour empêcher l extension et la dérivation d un type : <xsd:complextype name= choix final= #all >...
Abdallah.Haloui Page 20 Eléments : la définition d éléments se fait dans une balise <xsd:element>. Il existe deux possibilités pour définir un élément : 1. Définir un type de données et l utiliser dans la définition de l élément. Par exemple, on modélise l élément <entree> d un annuaire : XML : <entree> <nom>abdallah HALOUI</nom> <telephone>0477804703</telephone> </entree> Modélisation en XML-Schema : <xsd:complextype name= entree > <xsd:sequence> <xsd:element name= nom type= xsd:string /> <xsd:element name= telephone type= xsd:decimal /> </xsd:sequence> </xsd:complextype> <xsd:element name= entree type= entree > L avantage de cette solution est que le type «entree» est réutilisable dans le reste du document XML-Schema où la déclaration du type est visible. 2. Définir le type de données à l intérieur de l élément <xsd:element name= entree > <xsd:complextype> <xsd:sequence> <xsd:element name= nom type= xsd:string /> <xsd:element name= telephone type= xsd:decimal /> </xsd:sequence> </xsd:complextype> </xsd:element>. XML-Schema permet de gérer la cardinalité des éléments beaucoup mieux que les DTD, mais de manière plus verbeuse. L élément <xsd:element> possède deux attributs optionnels minoccurs et maxoccurs qui précisent respectivement le nombre minimal et maximal d occurrences d un élément. Par exemple, on désire modéliser que l élément <element> possède un certain nombre de sous éléments <s1/> : Tableau Attributs : la définition d attributs associés à un élément se fait dans un élément <xsd:attribute>. Chaque élément <xsd:attribute> possède les attributs suivants : name : nom de l attribut type : type de l attribut. Par exemple xsd:string, xsd:boolean,... use : permet de préciser si l attribut est obligatoire ou optionnel. Valeurs possibles : required (obligatoire), implied (optionnel), fixed (valeur fixe) ou default.
Abdallah.Haloui Page 21 value : valeur par défaut de l attribut. Exemple : <element att= hello at2= true /> On souhaite modéliser cet élément dans un XML-Schema. L attribut att est optionnel et a comme valeur par défaut «a». L attribut at2 est obligatoire et a comme valeur par défaut «true». <xsd:element name= element > <xsd:complextype> <xsd:attribute name= att type= xsd:string use= implied value= a /> <xsd:attribute name= at2 type= xsd:boolean use= required value= true /> </xsd:complextype> </xsd:element> Il est aussi possible de définir des attributs plus complexes, en utilisant les possibilités qu offre XML-Schema pour la définition de types. <xsd:attribute name="choix" use= required > <xsd:simpletype> <xsd:restriction base="xsd:string"> <xsd:enumeration value="oui"/> <xsd:enumeration value="non"/> <xsd:enumeration value="ne sait pas"/> </xsd:restriction> </xsd:simpletype> </xsd:attribute> L attribut choix peut alors uniquement prendre 3 valeurs : «oui», «non», et «ne sait pas». Notons qu il est possible de définir des attributs globaux pouvant être utilisés dans la déclaration de plusieurs éléments : Déclaration de l attribut : <xsd:attribute name="attribut"> <xsd:complextype> <xsd:any/> </xsd:simpletype> </xsd:attribute> On utilise ensuite cet attribut dans la déclaration d un élément : <xsd:element name= element > <xsd:complextype> <xsd:attribute ref= attribut use= required /> </xsd:complextype> </xsd:element>
Abdallah.Haloui Page 22 1.5.4 Conclusion La DTD permet de définir facilement et rapidement des grammaires simples. XML-SCHEMA permet de définir de manière plus formelle et complète une grammaire, mais c est au prix d une importante complexité. Langages de présentation et de transformation des documents. A partir des mêmes informations de base, il est en effet possible de définir, par exemple, de multiples messages, formulaires, transferts de données, affichage dans le Web. Les serveurs qui vont se développer auront de plus en plus accès non seulement à des bases de données et documents mais à des répertoires de feuilles de style. Elles leur permettront de générer aussi bien un message qu'une présentation sur un site Web, en tenant compte de la génération des navigateurs. Le même message XML pourra être traité automatiquement par une application mais aussi affiché dans une forme utilisable par un humain, à la demande. Plus encore, l'utilisation de ces mécanismes de mise en forme va permettre de gérer des environnements acceptant des messages dans des langages XML différents. C'est ce qui est évoqué plus loin avec XSLT. 1.6.1. Langage de feuille de style : CSS Le langage CSS est un langage déclaratif simple pour mettre en forme des pages HTML ou des documents XML. CSS n'est pas en syntaxe XML. CSS permet de préciser les caractéristiques visuelles et sonores de présentation d'un document : les polices de caractères, les marges, les interlignes, les bordures, les couleurs, le volume du son, etc. Exemple : Commentaire : id Titre {font-size: 24pt; font-weight: bold; color: blue; } Aura pour résultat : Titre Le terme de "Cascading" Style Sheets sous-entend qu'un document peut faire référence à des feuilles de style en "cascade" et de différentes sources pour produire la présentation finale d'un document. En particulier, il est possible de définir un style pour une page puis, à l'intérieur de cette page, de fournir des informations plus précises ou différentes pour présenter certains éléments. Il existe deux versions du langage CSS, CSS1 et CSS2. Le CSS2 est simplement une nouvelle version du premier avec des caractéristiques complémentaires de présentation. 1.6.2. Langage de feuille de style : XSL http://www.w3.org/tr/2000/wd-xsl-20000112/ XSL, Extensible Stylesheet Language est un langage de conception de feuilles de style. XSL comporte deux parties : Un langage de transformation de document XML,
Abdallah.Haloui Page 23 Un vocabulaire XML pour spécifier les éléments sémantiques de mise en forme. La deuxième partie de la spécification va donc permettre de construire des documents XML axés non plus sur le contenu mais sur la présentation c'est-à-dire un HTML qui serait puissant, bien formé et ne mélangeant pas contenu, logique et présentation. La première partie indique comment une feuille de style va indiquer aux outils de manipulation comment traduire un document XML, en général structuré en fonction du contenu, en un document XML visant à la présentation. C'est à dire que ce langage va devoir identifier quels contenus (un item, une adresse, un titre) va jouer tel ou tel rôle dans la structure de mise en forme et quelles caractéristiques typographiques ou autres vont lui être appliquées. Remarque : cette transformation peut d'ailleurs permettre de passer d'une feuille de style à une autre, puisqu'une feuille XSL est un document XML 1.6.3. Langage de transformation : XSLT http://www.w3.org/tr/xsl/ XSLT, Extensible Stylesheet Language Transformation, est un langage de transformation de documents XML en d'autres documents XML. XSLT a fait l'objet d'une recommandation du W3C en novembre 1999. Cette transformation va permettre de transformer une structure XML en une autre un arbre devenant un autre arbre. Elle est d'autant plus nécessaire que de nombreux langages professionnels ou scientifiques vont se développer qui traiteront de problèmes similaires mais avec des structures d'organisation des informations différentes. Ce que fait un moteur XSLT, c'est de lire l'arbre XML en se référant à des règles de transformation. XSLT n'effectue pas de mise en forme, mais il est conçu pour travailler, entre autres, en association avec XSL (par exemple pour passer d'un document XML vers un autre lui-même traitable avec une feuille XSL de présentation associée). En fait, les outils qui se construisent en utilisant XSLT vont souvent dépasser l'objectif initial et manipuler l'arbre XML pour obtenir des structures fondamentalement différentes. C'est ainsi que des produits permettent de générer des fichiers PDF à partir de XML (PDF faisant lui-même une partie du chemin). 1.7. Autres langages l et standards 1.7.1. Les langages de lien d'adressage : XPATH, XLINK et XPOINTER
Abdallah.Haloui Page 24 Les liens d'adressage font référence aux mécanismes permettant de "surfer" sur le Web. Ces liens d'adressage sont aussi appelés "liens hypertextes". Ils permettent de mettre en relation différentes ressources sur le Web. Par la richesse de ses capacités de référencement et de gestion des liens, XML représente une très puissante extension (et non une simplification) par rapport à SGML. Xpath http://www.w3.org/tr/1999/rec-xpath-19991116 Xpath, n'est pas à proprement parler un langage de lien d'adressage. C'est un langage de description de la structure d'un document, de son arborescence hiérarchique et de ses nœuds (nodes) permettant d'adresser des parties d'un document XML. Il est conçu pour être utilisé par XSLT (XML Stylesheet Transformation) et Xpointer. Xpath a fait l'objet d'une recommandation du W3C le 16 Novembre 1999. Xpath utilise une syntaxe non XML. XPath: Sélectionner des Fragments XML XPath est fondé sur une représentation arborescente (DOM) du document XML Objectif : référencer nœuds (éléments, attributs, commentaires,...) dans un document XML XPath est utilisé par: XML Schéma pour créer des clés et références XLink pour créer des liens entre documents/fragments XML XSL pour sélectionner des règles de transformation QXL pour l accès aux bases de données XPath : patterns de base : Elément Exemple d un Exemple d un match Syntaxique pattern tag nom d élément project <project>... </ project> / sépare enfants direct project/ title <project>< title>... / (correspond à l élément racine) // descendant project// title <project>< problem>< title>... * "wildcard" */ title.< bla>< title> et <bli>< title> opérateur "ou" title head <title>...</ title> ou <head>...</ head> * / @* (tous les éléments: les enfants, la racine et les attributs de la racine)../ élément supérieur../ problem <project> @ nom d attribut @id <project id=" test"...>... </ project> project/@ id @attr= type list[@ type= ol ] <list type=" ol">... </ list> Xlink http://www.w3.org/tr/1999/wd-xlink-19991220/ Xlink fournit une syntaxe permettant de définir les liens XML, semblables aux liens HTML mais avec des fonctions que HTML n offre pas. Pour définir un lien, Xlink utilise un certain nombres d attributs globaux pour être attachés à tout élément XML. Exemple :
Abdallah.Haloui Page 25 <entree xmlns= http://www.sernaferna.com/nom > <prenom>abdallah </prenom> <nom>haloui</nom> </entree> Il est possible de créer une application qui renvoie le document XML sous ce format et l affichage dans un navigateur. Supposons que Abdallah HALOUI possède une page d accueil à cette adresse : www.sernaferna.com/homepages/haloui, que nous voulons relier à notre document relier à notre document XML. Pour ce faire nous ajoutons des attributs Xlink à l élément <entree>, comme ceci <entree xmlns= http://www.sernaferna.com/nom > xmlns:xlink= http://www.w3.org/1999/xlink <prenom>abdallah </prenom> <nom xlink :type= simple xlink :herf= www.sernaferna.com/homepages/haloui >HALOUI</nom> </entree> Xpointer http://www.w3.org/tr/xptr Xpointer est une extension du langage Xpath. Langage simple, Xpointer fournit un mécanisme permettant de spécifier un point précis dans un document XML en fonction d'une localisation source pour y sélectionner des éléments. Il opère sur la structure arborescente et les nœuds des documents. Il peut être utilisé par Xlink pour établir des liens au sein même d'un document XML. Les fonctionnalités de Xpointer permettent aux liens Xlink de pointer vers un point précis d'un document qui peut être un élément, un texte ou une partie d'un document. Accès aux bases de données : XQL (XML Query Language)? http://www.w3.org/style/xsl/group/1998/09/xql-proposal.html Comme XML a prétention à être utilisé comme un format universel d'échange d'information, il a été envisagé de disposer d'un langage universel de requêtes pour accéder à ces informations. XQL a été conçu comme un langage de requête pour XML, adapté à la recherche d'information dans un document XML. C'est une extension de la syntaxe XSL Pattern permettant de pointer sur des éléments spécifiques d'un document XML et de rechercher des nœuds d'un document ayant des caractéristiques particulières. Un langage de requête pour documents structurés permet de rechercher des informations présentes dans le document en se basant sur la structure logique de ce document. Une recherche peut se faire de quatre manières distinctes ou complémentaires : 1. par contenu (rechercher les parties du document contenant un mot ou une expression particulière) ; 2. par localisation dans un arbre en utilisant un chemin parcourant en profondeur ou en largeur la structure arborescente représentant un document (rechercher les deux premières phrases des paragraphes du premier chapitre d un livre,...). 3. plus généralement par élément (rechercher tous les paragraphes d un texte) ; 4. par attribut et/ou valeur (rechercher toutes les parties du document contenant l attribut type ou le couple attribut valeur type="inline", rechercher tous les paragraphes en Anglais lang="en"); Afin de mieux cerner la portée du langage XQL, nous proposons dans le tableau, ci-après, une comparaison entre le langage de requête SQL des bases relationnelles "classiques", et XQL. Pour
Abdallah.Haloui Page 26 chacun des deux langages, le tableau précise la définition de "base de données", "langage de requête", "Entrée" et "Résultat" d'une requête. Concept SQL XQL Base de données Un ensemble de tables Un ensemble d'un ou plusieurs documents XML. Langage de requête Entrée d'une requête Enoncé du résultat SQL : Langage de requête utilisant les tables comme modèle de base. La clause FROM détermine les tables examinées par la requête. Le résultat est une table contenant un ensemble de rangs répondant à la requête. XQL : Langage de requête utilisant la structure des documents comme modèle de base. Précise en entrée un ensemble de nœuds d'un ou plusieurs documents, et examine ces nœuds et leurs descendants. Le résultat est un ensemble de nœuds de documents XML, qui peuvent être regroupés à partir d'un nœud racine pour créer un nouveau document XML bien formé. Exemple : Voici un exemple de document XML : <?xml version="1.0"?> <auteur> <prenom>victor</prenom> <nom>hugo</nom> <oeuvre genre="roman"> <titre>les Misérables</titre> <publication>1861-11-17</publication> </oeuvre> <oeuvre genre="roman"> <titre>notre Dame de Paris</titre> <publication>1831-02-27</publication> </oeuvre> </auteur> <auteur> <nom>voltaire</nom> <oeuvre genre="nouvelle"> <titre>zadig ou la Destinée</titre> </oeuvre> <oeuvre genre="usuel"> <titre>dictionnaire Philosophique</titre> <publication>1764-11-26</publication> </oeuvre> <oeuvre genre="roman"> <titre>candide</titre>
Abdallah.Haloui Page 27 </oeuvre> <oeuvre genre="essais"> <titre>traité sur la Tolérance</titre> <publication>1763-01-06</publication> </oeuvre> </auteur> Son contenu est une véritable base de données et sa structure ressemble à une arborescence. auteur prenom nom oeuvre titre publication Voici quelques requêtes XQL utilisant l'exemple ci dessus : Rechercher toutes les œuvres : Requête XQL : //oeuvre Réponse : <xql:result> <oeuvre genre="roman"> <titre>les Misérables</titre> <publication>1861-11-17</publication> </oeuvre> <oeuvre genre="roman"> <titre>notre Dame de Paris</titre> <publication>1831-02-27</publication> </oeuvre> <oeuvre genre="nouvelle"> <titre>zadig ou la Destinée</titre> </oeuvre> <oeuvre genre="usuel"> <titre>dictionnaire Philosophique</titre> <publication>1764-11-26</publication> </oeuvre> <oeuvre genre="roman"> <titre>candide</titre> </oeuvre> <oeuvre genre="essais"> <titre>traité sur la Tolérance</titre> <publication>1763-01-06</publication> </oeuvre> </xql:result> Rechercher les auteurs dont le prénom est Victor Requête XQL : //auteur[prenom = 'Victor'] Réponse : <xql:result> <auteur>
Abdallah.Haloui Page 28 <prenom>victor</prenom> <nom>hugo</nom> <oeuvre genre="roman"> <titre>les Misérables</titre> <publication>1861-11-17</publication> </oeuvre> <oeuvre genre="roman"> <titre>notre Dame de Paris</titre> <publication>1831-02-27</publication> </oeuvre> </auteur> </xql:result> Rechercher toutes les oeuvres publiées entre 1764 et 1835 : Requête XQL : //oeuvre[publication >= date("1764-01-01") $and$ publication <= date("1835-12-31")] Réponse : <xql:result> <oeuvre genre="roman"> <titre>les Misérables</titre> <publication>1861-11-17</publication> </oeuvre> <oeuvre genre="usuel"> <titre>dictionnaire Philosophique</titre> <publication>1764-11-26</publication> </oeuvre> </xql:result> 1.7.2. Mécanismes de manipulation des documents XML : API (interfaces de programmation applicatifs) 1.7.2.1 DOM Définition : Le DOM (Modèle Objet de Document) spécifie un jeu d interfaces de programmation pour les documents XML et HTML. Il définit la structure logique d un document ainsi que la façon dont une application peut y avoir accès et le manipuler. Il présente un document comme une hiérarchie de noeuds (nodes) qui implémentent d autres interfaces plus spécialisées. Exemple : <adresse> <identitee> <nom>haloui</nom> <prenom>abdallah</prenom> </identitee> <adresse_postale> <rue>keufer</rue> <code_postale>42100</code_postale> <ville>saint-etienne</ville> </adresse_postale> </adresse>
Abdallah.Haloui Page 29 adresse Elément racine Adresse postale identite élément rue code postal ville nom prenom Collection d éléments Figure 2 : Représentation d un annaire grâce au DOM Grâce au DOM, des développeurs peuvent construire des documents, parcourir leur structure, ajouter, modifier ou détruire certains de leurs éléments et de leur contenu. 1.7.2.2 SAX : SAX (Simple API For XML) a été créé par Meginson Technologies. Le projet est hébergé par OASIS. SAX est une API pour la manipulation de documents XML ne prenant pas en compte la structure d arbre d un document. Des événements sont renvoyés à chaque fois que le parseur rencontre une nouvelle balise. Le programmeur définit le traitement à effectuer en implémentant un «handler» (ou «écouteur») qui récupère les événements. L avantage de cette méthode est le gain de mémoire par rapport à un parseur de type DOM qui construit un arbre en mémoire. SAX1 versus SAX2 : SAX2 ajoute un support pour les espaces de nommage, et des options de configuration. Il y a eu de grands changements dans l API. Pour éviter les problèmes de migration, il existe une API d adapteurs pour que les applications utilisant SAX1 puissent interopérer avec SAX2. Le tableau suivant résume les caractéristiques de ces deux API : DOM SAX Origine Norme du W3C David Megginson Version Level 1 1998 Level 2 2000 SAX 1.0 SAX2 2000 Mode de traitement Avantage Inconvénient - Parcours d une arborescence de nœuds - navigation dans l arborescence du document - construction de l arborescence avant touts Mode évènementiel - Nécessite peu de mémoire - Rapidité de traitement - Ne garde pas en mémoire la structure du document
Abdallah.Haloui Page 30 traitements (rapidité?) - mémoire utilisée dans le cas de documents XML volumineux XML - Adaptée pour la lecture des données, pas leurs modifications 1.7.3 Autres standards dérivés XML est un méta-langage générique (syntaxe) qui permet de définir des langages spécialisés (dialectes) dédiés à un métier : SMIL Synchronized Multimedia Integration Language (vidéo, sons,...) MathML (calcul formel, notations mathématiques,...) CML Chemical Markup Language (molécules chimiques) BSML Bioinformatic Sequence Markup Language (séquences génome) CDIF CASE Data Interchange Format (modèles 3D pour la CAO) OMF Weather Observation Definition Format (météo) SAE J2008 Society of Automotive Engineers (automobile) RDF Resource Description Framework (catalogue biblio. des sites web) SVG Scalable Vector Graphic (langage de dessin vectoriel pour le web) XMI XML Metadata Interchange (notation UML Unified Modeling Language) P3P Platform for Privacy Preferences Project (protection vie privée W3C) CDF Channel Definition Format (technologie «push» de Microsoft) CPEX Customer Profile EXchange (portrait/profil consommateur) SyncML synchro des données fixes/mobiles (IBM, Motorola, Nokia, Psion, Palm, ) ebis-xml de la BASDA (commandes, facturation, ) ebxml e-business XML organisation qui regroupe l'onu et Oasis GCIP Global Commerce Initiative Protocol tpaml d'ibm (contrat électronique) UDDI les pages jaunes du B2B WSDL Web Services Description Lang. (IBM, Ariba, UDDI, Microsoft, ) XHTML = HTML 5 ou réécriture de HTML 4 en XML balises classiques du HTML (compatibilité ascendante pour le web) prévu pour des supports tels que les assistants personnels,... certaines méta-balises de XML (lisibilité par une application XML) emprunts à SMIL (multimédia) et à MathML passerelle (ou passage) entre HTML et XML?
Abdallah.Haloui Page 31 4- Les domaines d application d XML Pour mettre en évidence les domaines d application d XML, nous examinons d abord les nouveaux besoins du Web à travers quatre visages: la gestion de contenu, l interopérabilité des systèmes d information hétérogènes, le commerce électronique et EDI, la personnalisation de la relation client. Nous montrons ensuite comment XML permet de répondre à ces besoins. 4.1 Les nouveaux besoins du web : 4-1-1 La gestion de contenu/ged : On est aujourd hui amené à gérer des documents de plus en plus complexes, comprenant d importants volumes d informations. Les techniques traditionnelles d organisation ont atteint leurs limites : il devient difficile d assurer la cohérence et la mise à jour du contenu de ces documents. Les besoins de personnalisation s opposent à la gestion d un contenu statique : la présentation de l information doit pouvoir être adaptée dynamiquement à chacun des utilisateurs. La richesse et le dynamisme de la présentation rendent encore plus difficile la recherche d une information noyée à la fois par son volume et sa présentation. 4-1-2 L interopérabilité des systèmes d information hétérogènes : Le Web est avant tout une infrastructure de communication entre systèmes. Plus que toute autre architecture, il contribue à rendre les systèmes informatiques interopérables en les connectant grâce à des protocoles communs. L interopérabilité entre systèmes n est pas un besoin nouveau : des modèles d architecture ont été conçus au cours de ces dernières années pour permettre de créer des applications interopérables. Certains de ces modèles se sont positionnés comme architecture possible pour les applications Web. Cependant, quelles que soient leurs qualités, aucune de ces architectures n a su concilier à la fois simplicité et indépendance avec une plate-forme, un langage ou une implémentation. En effet, Corba limite la diffusion des applications qui sont basées sur elle du fait de sa complexité, les EJB sont indissociables du langage Java et DCOM de la plate-forme Microsoft. Un certain nombre de problèmes limitent par ailleurs leur utilisation pour le développement d applications Web. Ces technologies présentent donc des aspects qui les éloignent de leurs objectifs initiaux d ouverture et d indépendance. 4-1-3 Le commerce électronique/edi : Les applications de commerce électronique ont besoin d extraire les données du Web pour les retraiter (par exemple pour rechercher un produit ou un service, comparer des offres concurrentes ). Cette opération est complexe car l information est mélangée à sa présentation. Les applications actuelles, aussi sophistiquées soient-elles, sont impuissantes à comprendre et à
Abdallah.Haloui Page 32 analyser le contenu d une simple page HTML : de nouvelles techniques sont donc nécessaires pour satisfaire ce besoin. Partager l information entre applications nécessite bien souvent de la convertir d un format à un autre, ce qui réduit l efficacité et augmente les risques d erreurs. Le besoin est de définir des formats d échanges communs rendant les applications interopérables. Pour les entreprises, l enjeu est d étendre les échanges EDI avec leurs partenaires. Le Web et son infrastructure permettent d envisager des solutions simples et peu coûteuses à mettre en oeuvre. Bien sûr, le savoir-faire métier de l EDI et des normes utilisées telles que EDIFACT doit être préservé, et une sécurité adaptée à la nature des échanges doit être assurée. Le dernier aspect est de réussir l intégration avec la chaîne informatique commerciale et d éviter les ressaisies et conversions dans le traitement des commandes, de la facturation, de la production, des livraisons, etc 4-1-4 La personnalisation de la relation client : Le Web permet d atteindre de nouveaux clients, mais la difficulté est de les conserver. Les besoins de fidélisation des clients ne sont ni nouveaux ni spécifiques au Web, mais ils sont, fortement amplifiés par l attitude versatile des utilisateurs, et par le volume de l offre proposée, qui la rend difficile à différencier. Il faut donc pouvoir construire une relation directe avec chaque client, comprendre ses besoins et ses préférences, et suivre dynamiquement son profil en constante évolution. Ce profil dynamique permet de cibler et d optimiser l information qui lui est présentée, et de mettre en oeuvre une démarche de vente personnalisée, en essayant d'anticiper ses besoins, par exemple grâce à des campagnes de promotion personnalisées. Cette relation étroite doit se construire dans un climat de confiance, et pour être acceptée doit garantir la confidentialité des des informations échangées. 4.2 Répondre aux besoins avec XML L utilisation de XML est possible en tout point de l architecture d une application web. Examinons les possibilités offertes par les techniques XML et les solutions concrètes proposées pour répondre aux nombreux besoins que nous avons définis précédemment et qui sont repris dans le schéma suivant : Extranet Commerce électronique E.D.I Présentation de relation client XML Gestion de contenu G.E.D Intégration de système d information hétérogènes Figure 4 : Domaines d'application d'xml 4-2-1 XML et la gestion de contenu/ged
Abdallah.Haloui Page 33 L idée de base pour résoudre la complexité des sites et applications Web d aujourd hui est de séparer les données de leur présentation. Pour mettre en oeuvre cette technique, deux approches sont possibles : 1. La première consiste à convertir et maintenir l ensemble des données du site sous forme de documents XML. La parfaite complémentarité entre HTML et XML permet de réaliser cette étape sans rupture et sans remise en question des informations HTML existantes. 2. La deuxième approche consiste à limiter la production de documents XML au nouveau contenu. Une fois qu on dispose d une information sous forme de documents XML, sa publication passe par une étape de conversion en pages HTML à l aide de feuilles de styles XSL. Cette conversion vers HTML paraît inévitable dans la mesure où il n existe encore aujourd hui que peu de navigateurs visualisant les objets de présentation de XSL. Cette transformation sera donc réalisée la plupart du temps côté serveur, en mettant en oeuvre une étape de conversion des documents XML en pages HTML en mode différé (batch), ou en utilisant une conversion à la demande à l aide d une page active. Cette transformation peut être réalisée côté navigateur, lorsqu il dispose d un moteur XSL comme celui de Microsoft Internet Explorer 5.0. La séparation entre données et présentation permet de proposer plusieurs présentations pour une même information et facilite la mise en oeuvre de personnalisations du site, sans en alourdir la gestion. La seconde idée est l utilisation de sources de données XML. Le principe est de stocker les informations du site mais aussi d autres documents dans une base de données (souvent cette information y figure déjà) et de réaliser des procédures d extraction pour délivrer l information au format XML. La mise en oeuvre de ces bases de données XML est aisée et peut se faire avec les outils existants. Le principe est identique à l extraction des données de la base pour les convertir en format HTML et les outils conçus pour HTML sont en général adaptés pour produire du XML. De nouveaux outils XML directement intégrés aux bases de données permettent aujourd hui de créer des procédures stockées réalisant l extraction de l information directement au format XML, comme le module DBXML d Oracle 8i.L approche source de données XML résout les problèmes de cohérence de l information et de ses mises à jour. Les sites peuvent être organisés pour gérer d importants volumes de données avec les techniques éprouvées et robustes apportées par les bases de données. Enfin, les travaux en cours sur XML proposent des moyens d organisation complémentaires. Ce sont RDF (Resource Description Framework) et ses applications, CDF (Channel Definiton Format) et ICE (Information and Content Exchange). 4-2-2 XML et l interopérabilité de systèmes d information hétérogènes Le Web a rendu les systèmes informatiques interopérables en les reliant grâce à des protocoles communs. L idée de pourvoir aux besoins simples et nombreux d échanges entre applications en utilisant l infrastructure du Web prend tout son sens lorsque l on utilise XML comme format d échange. On dispose alors d un modèle de communication comparable à l émission d un formulaire sur le Web, qui consiste à utiliser une requête POST du protocole HTTP pour transmettre un message XML d une application à une autre, et récupérer une réponse en retour. La simplicité de mise en oeuvre d un tel échange, bien souvent possible avec les outils Web existants, fait souvent de HTTP+XML une alternative à Corba, EJB (Enterprise Java Beans) ou ActiveX/DCOM. Ses atouts sont d utiliser une infrastructure disponible, déjà mise en place pour le Web, avec les mêmes outils de sécurité : SSL, pare-feu, proxy HTTP identique au Web. La flexibilité du modèle permet son utilisation pour des échanges entre navigateur et serveur ou entre deux serveurs : par exemple entre un serveur d application Web et un serveur de données. Enfin, une réelle indépendance avec les plates-formes, langages et implémentations en garantit l interopérabilité. Des initiatives complémentaires confirment l intérêt d XML pour assurer l intéropérabilité des systèmes : des mécanismes de sérialisation d objets utilisant XML sont en
Abdallah.Haloui Page 34 cours de définition tels que BML (Bean Markup Language) d IBM alphaworks, et les principaux progiciels proposent aujourd hui ou annoncent des interfaces XML pour étendre l ouverture de leur produit (par exemple SAP). 4-2-3 XML et le commerce électronique/edi Les outils de commerce électronique utilisés sur le Web ne peuvent évoluer que s ils ont la possibilité d extraire les données du Web pour les retraiter. Cette fonction permet ainsi d automatiser pour l utilisateur les étapes de recherche et de comparaison des marchandises disponibles, et de retrouver un article correspondant à son budget et à ses critères de choix. Une information au format XML structurée et séparée de la présentation rend possible la réalisation de tels outils. La description des sites avec RDF permet d aiguiller les recherches vers les sites marchands commercialisant les produits et services adéquats. XML a un rôle important à jouer comme format d échange sur le Web pour rendre l EDI (Echange de Données Informatisées) accessible à toutes les entreprises. Tout d abord, XML permet de préserver le savoir-faire métier de l EDI en proposant la définition de formats d échanges XML fondés sur les normes EDIFACT. Les travaux du groupe XML/EDI, et en particulier de l ECA (Electronic Commerce Association) et de l ANA (Article Number Association), permettent aujourd hui de disposer des représentations XML des messages SIMPL- EDI, version simplifiée de UN/EDIFACT. Ces travaux définissent les messages de commandes, de factures, d avis d expéditions, de comptes rendus, ainsi que d ordres de paiement nationaux et internationaux. Intégrer Internet à l EDI est un facteur de succès qui s explique tout d abord par le coût et la simplicité de mise en oeuvre d une solution XML/EDI ; ensuite la flexibilité d'xml permet d assouplir les normes et de prendre en compte les particularités des entreprises. Un second facteur d évolution est la normalisation des échanges commerciaux sur le Web. L initiative OTP (Open Trading Protocol) définit le rôle des acteurs d un échange commercial sur Internet et le format des échanges sous forme de messages XML. Les échanges spécifiés concernent le déroulement d un achat entre un consommateur et un marchand, l'encaissement du paiement du consommateur par un organisme financier pour le compte du marchand, la livraison du produit commandé au consommateur pour le compte du marchand, et enfin l assistance au consommateur en cas de difficulté. 4-2-4 XML et la personnalisation de la relation client Mettre en oeuvre une démarche de vente personnalisée nécessite tout d abord de cibler la présentation de l information. La technologie XSL de feuille de styles d'xml permet d atteindre cet objectif tout d abord par l utilisation de styles personnalisés pour chaque utilisateur, et ensuite par la possibilité d extraire, à l aide du langage XSL de transformation de documents XML, l information nécessaire à un utilisateur. XML permet également de gérer des profils dynamiques de clients. La flexibilité d XML permet de stocker des profils d utilisateur de structure variable, capables d'évoluer dynamiquement. Les styles de présentation de chaque utilisateur peuvent être construits et modifiés dynamiquement par l application elle-même en fonction de l évolution de leur profil. En effet, un style XSL est avant tout un document XML, manipulable par programme avec l API du DOM. Les applications mettant en oeuvre des fonctions de marketing personnalisé disposent avec XML d outils faciles à utiliser leur permettant de proposer aux utilisateurs une interface complètement dynamique et construite selon leurs préférences. Enfin, P3P (Platform for Privacy Preferences Project) garantit à l utilisateur la confidentialité des informations qu il fournit au serveur.
Abdallah.Haloui Page 35 5-XML les bases de données 5.1 XML orienté document ou données? Les deux types classique de bases de données sont : Les bases de données documentaires qui sont caractérisées par: Mélange de sémantique et données Recherche plein texte, multicritères par indexation. Les bases de données relationnelles sont caractérisées par : Absence de sémantique Recherche définie par la structure de stockage. XML prend le meilleur des deux mondes : il permet la séparation nette entre la sémantique et données. Recherche Structurée et plein texte, multicritères par indexation. <?xml version="1.0"?> <!DOCTYPE rapport-meteo SYSTEM MeteoStandard.d td"> <rapport-meteo> <date> 2000-10-21T10:00 </date> XML le meilleur des 2 mondes 5.2 Structures XML pour les bases de données existantes Dans cette partie nous allons présenter des méthodes 1 permettent de transformer une base de données relationnelles existante en XML. Sachant q un grand nombre de donnés commerciales sont stockées dans des bases de données relationnelles, plusieurs raisons justifient leur exploration vers XML : 1. Le partage de ces données avec l autre systèmes ; 2. L interopérabilité avec des systèmes incompatibles ; 3. L utilisation de données réelles par des applications faisant appel à XML ; 4. Les transaction entre entreprises ; 5. La pérennité des objets grâce à XML 6. Le regroupement de données éparses.
Abdallah.Haloui Page 36 Il s agit de convertir les tables relationnelles en document DTD ou en SchemaXML. Voici quelques règles pour le développement de structures XML à partir de base de données relationnelles existantes : Règle 1 : Choisir les données à inclure. En fonction des besoins que le document XML doit satisfaire, nous déterminons les tables et les colonnes de notre base de données relationnelle à insérer dans notre document. Règle 2 : Créer un élément racine. Nous l ajoutons à notre DTD dans laquelle nous déclarons tous les attributs nécessaires au stockage d information sémantique supplémentaires. Règle 3 : Modéliser les tables de matières. Il s agit de créer un élément dans la DTD pour chaque table de contenu à modéliser et de déclarer à l aide du mot-clé EMPTY pour le moment. Règle 4 : Modéliser les colonnes de clé non étrangères. Créer un attribut pour chaque colonne que nous avons choisie d inclure dans notre document XML, sauf dans le cas de colonnes de clés étrangères. Il devrait apparaître dans la déclaration!attlist de l élément correspondant à la table dans laquelle il figure. Règle 5 : Ajouter des attributs ID aux éléments. Déclarer un attribut ID pour chacun des éléments créés dans la structure XML (à l exception de l élément racine). Utiliser le nom de l élément suivi par ID pour le nom du nouvel attribut. Déclarer l attribut comme étant de type ID, et #REQUIRED. Règle 6 : Représenter les tables de référence. Pour chaque clé étrangère destinée à nos structures XML renvoyant à une table de référence : 1.créér un attribut de l élément représentant la table dans laquelle la clé étrangère figure ; 2.donner le même nom que la table à laquelle la clé étrangère se rattache et spécifier #REQUIRED si celle-ci n accepte pas NULL ou #IMPLIED dans la cas contraire ; 3.Définir l attribut du type liste énumérée. Ajouter les valeurs autorisées pour l énumération sous une forme compréhensible par l homme en fonction de toutes les lignes de la colonne «Description» de la table de référence. Règle 7 : Ajouter un contenu d élément racine. Pour chaque table modélisant le type d informations que nous souhaitons représenter dans notre document, insérer un ou plusieurs éléments fils au contenu autorisé de l élément racine. Règle 8 : Insérer des relations via l imbrication. Pour chaque relation définie, si la relation est 1..1 ou 1..n dans le sens de la navigation et si aucune autre relation ne conduit à l enfant à l intérieur du sous-ensemble choisi ajouter alors l élément fils, en tant que contenu de l élément père, avec la cardinalité correspondante. Règle 9 : Introduire des liens grâce à IDREF/IDREFS. Identifier chaque relation n..1 dans la sens déterminé ou dans laquelle le fils est un enfant dans plusieurs relations. Pour chacune de ces relations, ajouter un attribut IDREF ou IDREFS à l élément côté parent qui point vers l ID de l élément côté enfant. Règle 10 : Ajouter les éléments manquants. Insérer chaque élément visé par un pointeur dans la structure dans la structure créée à ce stade. Ajouter le comme contenu de l élément racine et définissez-le avec le suffixe de cardinalité *. Règle 11 : Supprimer les attributs ID superflus. Supprimer ceux qui n ont pas les attributs IDREF ou IDREFS comme référence dans les autres structures XML. Il existe des outils permettant de convertir une bases de données relationnelle en XML et offrant une outil de requête basé sur une structure d arbre. Parmi ces outils DB/XML Transform développé par DataMirror http://www.datamirror.com/ (figure 1).
Abdallah.Haloui Page 37 Database XML Text Files Text Files Database XML
Abdallah.Haloui Page 38 6- Comparaison des deux éditeurs Tamino et oracle : Parmi les éditeurs qui ont su rapidement commercialiser des technologies d intégration XML: Technologies XML d Oracle : Oracle offre un grand nombre d Oracle offre un grand nombre d outils fonctionnant avec XML, grâce aux kits de développement XML (XML Developer s Kit, XDK). (http://technet.oracle.com/tech/xml/content.html). Technologies XML de Microsoft : Microsoft offre MSXML (Microsoft Developer Network) regroupe de nombreuses informations sur XML. Ces dernières figurent à l adresse suivante : http://msdn.microsoft.com/xml/default.asp. Il existe également le support XML intégré à SQL Server, le système de gestion de base de données relationnelles de Microsoft. Mais la commercialisation de ses outils d intégration s avèrent plus lente, à la différence d Oracle. Il existe d autre éditeurs qui ont développer des bases de données native XML telles que : Tamino de Software AG (www.softwareag.com) excelon (www.exceloncor.com) Nous allons consacrer cette partie à une étude comparative des outils de développement intranet et internet des deux éditeurs représentatifs de l offre XML, c est à dire Software AG avec Tamino et Oracle avec son kit XDK. Pour cette étude nous avons choisi les critères de comparaisons les plus significatifs tels que : 1. Les outils proposés par l éditeur 2. L installation de la base 3. L administration de la base 4. Le chargement et la recherche dans la base 5. La productivité et les outils de développement 6. Le problème l ouverture et de l intégration. 6-1 Les outils proposés par l éditeur : 6.1.1 Oracle Nous allons présenter les outils fournis par le SGBD ORACLE, dès la version 8i (8.1.xx), permettant de réaliser des échanges entre SGBD et XML. Nous porterons une attention toute particulière sur les outils JAVA suivants: le XSU : XML-SQL Utility, utilitaire permettant d'assurer des échanges entre XML et un SGBD (pas nécessairement ORACLE) la XSQL Servlet : outils intégré permettant de générer du XML directement à partir de requêtes SQL. Notons aussi que les outils proposés par ORACLE sont bien plus vastes, ils comprennent également : Des parseurs XML pour JAVA et C++, Un transformateur XSL,
Abdallah.Haloui Page 39 Un processeur de Schémas XML, Un générateur de classes JAVA... 6.1.1.1 L'Utilitaire XML-SQL 1. Résultat de requête SQL sous format XML ORACLE fournit une bibliothèque de fonctions JAVA (et C++) permettant de réaliser des échanges entre le monde XML et les bases de données. Cet utilitaire, le XSU ou XML-SQL Utility permet à une application d envoyer des requêtes SQL et d obtenir le résultat sous forme XML, comme le suggèrent les 2 figures ci-dessous. La lecture sur la base de données ORACL. XSU permet la génération automatique d'un arbre XML à partir d'une requête SQL et le stockage en base du XML. SQL. La structure des données est basée sur celle des tables de la base de données. Considérons la requête SQL simple suivante : SELECT NOM, EMAIL FROM CLIENT WHERE CLIENTID = 1212 ; Le résultat sera le document XML suivant : <?xml version= "1.0"?> <ROWSET> <ROW id= "1" > <NOM>dupont</NOM> <EMAIL>dupont@emse.fr</EMAIL> </ROW> </ROWSET> La racine du document XML est ROWSET et chaque nœud ROW correspond à une ligne de la Réponse. 2. Stockage de données XML dans des tables de données Des classes utilitaires permettent de stocker des documents XML dans une table objet d une base Oracle.
Abdallah.Haloui Page 40 L'écriture sur la base de données ORACLE. XSU réalise la validation et l'import des données. Le principe est le suivant : - Un élément devient une colonne et sa valeur celle de la colonne. - Un élément avec des sous-éléments se transforme en un type objet. - Une liste d éléments devient une collection. - Les données non structurées sont stockée en tant que CLOB (Character Large OBject). 6.1.1.2 La XSQL Servlet ORACLE fournit un utilitaire de type Servlet (accompagné en standard du moteur de Servlet JServ) qui permet de réaliser des échanges entre XML et n'importe quel SGBD disposant d'une interface JDBC, cela sans coder quoique ce soit. La servlet joue un rôle de "middleware" de type PHP, qui interprète une syntaxe XML encapsulant une (ou plusieurs) requête SQL, la convertit en ordre SQL puis génère un fichier XML en sortie. Le schéma ci-dessous détaille le fonctionnement de la Servlet.
Abdallah.Haloui Page 41 (1) le client accède au service de la servlet via un browser. Il indique dans l URL le fichier.xsql à exécuter et peut éventuellement passer en paramètre le nom de la feuille de style à appliquer au résultat. La requête du client parvient au serveur http qui la transmet au conteneur de servlet qui à son tour la transmet à la servl et XSQL. (2) La servlet XSQL transmet le fichier.xsql au parseur XML pour Java d Oracle. Il parse le fichier XML et crée l API d accès aux données du fichier XML. (3) Le processeur de page SQL utilise cette API pour passer les requêtes SQL aux classes utilitaires SQL. Il passe aussi les données XSL au processeur XSLT (4) Les classes utilitaires SQL après avoir réalisé la requête SQL, transmettent au processeur XSLT le résultat sous la forme de données XML (5) Le processeur XSLT peut alors éventuellement transformer les données XML à l aide de la feuille de style XSL (6) Le processeur retourne le résultat au navigateur du client.
Abdallah.Haloui Page 42 6.1.2 Software AG L allemand Software AG (http://www.sofwareag.com/xml), bien connu dans le monde des grands systèmes pour son offre de système de gestion de base de données Adabas, son L4G Natural et son middleware d intégration EntireX, propose une offre logicielle complète conçue pour la mise en œuvre d applications d e-business dans la plupart des environnement. Cette offre s appuie sur l environnement de développement Java Bolero et le serveur de données XML Tamino. L offre Tamino hérite de l expérience acquise de Adabas et propose un serveur de données spécialement conçu pour les applications Internet. Software AG propose sur les composants suivants : 6.1.2.1 Tamino XML Database Le serveur Tamino (Transaction Architecture for Internet for Internet Object) fournis par Software AG, permettant de stocker, gérer et de chercher des données structurées au format XML comme les données non structurées (images, sons, etc.) Client business électronique Consumer (e.g. (ex. navigateur) XML, requêtes World Wide Web XML, HTML, WML,... HTTP Parser XML & Interpréteur de requêtes Processeur d objet & composeur d objet X-Tension Applications existantes et nouvelles SDK I n f o s BD XML natif X-Node Adabas Office SQL / SGBDR 6.1.2.2 X-Studio Environnement de construction d applications XML, incluant des modules applicatifs prêts à l emploi et une boîte à outils XML complète pour gérer des schémas de données, des feuilles de style XSL etc.., au sein d un environnement de développement intégré.
Abdallah.Haloui Page 43 Application Wizard XML XML < > Java Mapping API vers Tamino X-Bridge Outils de développement, ex. XM Editeurs de sshéma Editeurs XML Editeurs XSL Outils partenaires XM autres sources XML Processeurs XSL Editeurs HTML 6.1.2.3 Tamino Integrator X-Node : Connecteurs aux sources de données existantes pour délivrer l information extraite ne format XML, inclus dans l offre Tamino. X-Bridge : Middleware basé sur XML permettant la communication entre applications s exécutant sur des systèmes hétérogènes. Règles feuilles de style Partenaire business Consumer (e.g. XML World Wide Web HTTP Routage en fonction du contenu (CBR) Transformation Messaging XML Consumer (e.g. e-service XML XML
Abdallah.Haloui Page 44 6-2 L installation de la base : 6.2.1 Identification et installation de la base Tamino: Pour travailler efficacement notre système doit répondre aux exigences de configuration minimum énumérées dans la table ci-dessous : Système d'exploitation Processeur MÉMOIRE VIVE Espace disque Browser de HTML NT 4,0 de Microsoft Windows avec le paquet 5 de service ou le professionnel de Windows 2000. Processeur de Pentium-classe d'intel ou compatible (300 minimum de MHz; 500 MHz est recommandés). 256 minimum de mb, le mb 512 sont recommandés. Approximativement. mb 800 librement. Microsoft Internet Explorer 5,01 ou plus haut; ou Netscape Navigator/Communicator 4.x ou plus haut. Identification : Composition de l offre Tamino Version 2.2.1.2* Plate-forme de déploiement Windows NT4 Editeur SoftWare AG Outils de développement de Tamino X-Studio1.1.1* XML Web serveur Apache WebServer 1.3.12* Servlets Apache Jserv1.1 ou plus* Kit de développement de Java JSDK 2.0* Servlet Java JRE1.22* * Tous ces produits sont disponibles pour l'installation sur le kit. Des conseils d installation sont livrés avec la base de données Tamino dans le repertoire : D:\Windows\ino\install.txt sur le CD d installation. L'installation du composant de base de données de Tamino XML comprend les étapes suivantes: 1. Installation De la Base de données De Tamino Xml 2. Test de la base de données
Abdallah.Haloui Page 45 3. Créer une Base de données 4. Définir Le Schéma De Tamino 6.2.2 Installation de la base Oracle 8i: Configurations machine La table suivante contient les configurations machine pour le serveur d'application d'oracle8i. Hardware Items CPU Memory Disk Space Requirements An Intel compatible 486 or higher processor 128 MB Minimal: 640MB Standard Edition: 1.60 GB Enterprise Edition: 3.20 GB Installation et configuration de KDK La première étape est d'éditer la configuration du module de Jserv de sorte qu'elle puisse utiliser les nouvelles classes de Java que nous avons installées. Éditez C:\Program Files\Apache Jserv 1.1\conf\jserv.properties et nous avons insérer les lignes suivantes : # Added by me # Oracle XSQL Servlet wrapper.classpath=g:\xdk\lib\oraclexsql.jar # Oracle JDBC (8.1.6) wrapper.classpath=g:\oracle\ora81\jdbc\lib\classes12.zip # Oracle XML Parser 2 wrapper.classpath=g:\xdk\lib\xmlparserv2.jar # Oracle XML SQL Components for Java #wrapper.classpath=g:\xdk\lib\oraclexmlsql.jar wrapper.classpath=g:\xdk\lib\xsu12.jar # XSQLConnection.xml File Location wrapper.classpath=g:\xdk\xdk\admin\ wrapper.classpath=g:\xdk\lib Ensuite nous avons édité C:\Program Files\Apache Jserv 1.1\conf\jserv.conf et ajouter la ligne suivante : ApJServAction.xsql /servlets/oracle.xml.xsql.xsqlservlet
Abdallah.Haloui Page 46 G:\XDK\xdk\admin\XSQLConfig.xml Contient des informations sur des connexions de base de données employées par le XDK ainsi nous avons copié et édité une des entrées existantes de telle sorte qu'elle ressemble la deuxième version cidessous : <connection name="your_sid"> <username>your_username</username> <password>your_password</password> <dburl>jdbc:oracle:thin:@localhost:1521:orcl</dburl> <driver>oracle.jdbc.driver.oracledriver</driver> </connection> 6-3 La recherche dans la base : Nous allons consacré cette partie à l étude comparative de la performance des deux bases. Nous avons choisi de convertire en structure XML une base relationnelle existante Structures XML pour la base relationnelle existante : Il existe plusieurs méthodes de conversion ; il s agit de convertir le modèle relationnel en DTD XML. Nous avons utilisés DB/XML Vision pour convertir la base relationnelle nommée XOOLOO en base XML pour tester les performances des deux bases. Voici donc le modèle de données de cette la base relationnelle XOOLOO:
Abdallah.Haloui Page 47 Copain email: string idcopain: number idenfant: number pseudocopain: string 1 0..* SessionInBase idenfant: number connected: number derniereconnexion: date url idurl: number agemax: number agemin: number codecat: number dsaisie: date dverif: date dcreation: date iddomaine: number idee: string res: string sexe: string supprimer: boolean type: number valide: boolean interdit: boolean addr: string 1 1 Enfant idenfant: number adresse: string centrepostal: string codepostal: string club: string datenaissance: date codecarte: string nom: string prenom: string pseudo: string sexe: string telephone: string MotsCles idmc: number libmc: string parent: number activiteenfant idenfant: number idactivite: number compteur: number Parent idenfant: number idparent: number mail: string nommere: string nompere: string prenommere: string prenompere: string associer idmc1: number idmc2: number 1 0..* Renvoyer idmc: number 0..* idurl: number 1 0..* 1 1 1..* 1 categorie 0..* 1 1 codecat: number frequence: number activite ID_activite: number adresseactivite: string adressenews: string imageactivite: string libelle: string libelleune: string motcle: String priorite: number rubrique sexeactivite: string agemaxactivite: number ageminiactivite: number browserlb: string club: string datecreation: date datedebut: date datedispo: date datefin: date Domaine iddomaine: number libdomaine: string login: number CreationEnfant datecreation: date pseudo: string Un seul enregistrement Mise en oeuvre de la serction critique lors de la creation d'un enfant Avec DB/XML Transform nous avons obtenu la base XML nommée dbxv_tree par défaut est dont le shemasxml de la base est la suivante : 0..* 1
Abdallah.Haloui Page 48 En suite nous avons chargé cette base dans le serveur Tamino pour les testes de performance. Recherche dans la base : Le tableau suivant regroupe les résultat obtenu a partir de quelques requêtes simples: Oracle 8.1.6 (1) Temps de réponse Tamino 2.2.1.2 (2) Temps de réponse Select * from Mots_Cles 38 s //Mots_Cles 1mi n 13s Select * from Mots_Cles where ID_MC between 6000 and 7000 14 s //Mots_Cle[ID_MC between 6000,7000] 24s Select * from Mots_Cles where lib_mc= LUSOPHONIE 1s 45 //Mots_Cle[lib_MC= LUSOPHONIE ] 2s 30 Select * from Mots_Cles where lib_mc!= LUSOPHONIE 2s //Mots_Cle[lib_MC! = LUSOPHONIE ] 4s 35 (1) http://host/qsql/nom_fichier.xsql (2) http://host/tamino/nom_base/ino:etc?_xql=/objet(xpath)
Abdallah.Haloui Page 49 7- Conclusion Dans la première partie de ce travail nous avons présenter la galaxie XML dans sa globalité de l origine de XML jusqu aux domaines application en passant par les standards proposés par XML. Dans la partie XML et les bases de données nous avons comparer les technologies d intégration XML des deux constructeurs de bases de données Oracle et Software AG. Pour une application XML l offres Software AG présente l avantage de la première plateforme native XML. Les tests de performance nous ont permet de constater que les bases relationnelles se révèlent bien meilleures en matière de requêtes et qu une éventuelle conversion vers XML est justifié pour d autres raisons : 1. Le partage de données avec d autres systèmes ; 2. L interopérabilité avec des systèmes incompatibles ; 3. L utilisation des données réelles par des applications faisant appel à XML ; 4. Les transactions entre entreprises ; 5. La pérennité des objets grâce à XML ; XML ne remplacera jamais les bases de données, mais ces deux technologies vont être de plus en plus liées (elles sont complémentaires).
Abdallah.Haloui Page 50 Annexe A : Les éditeurs XML Si les avantages liés à XML sont nombreux et incontestables, encore faut-il pouvoir créer des documents XML valides et bien formés. Cela n'est pas nécessairement aisé. Pour y arriver, il faut utiliser un bon éditeur, capable d'éviter des erreurs de formatage de documents. Qui dit éditeur pense le plus souvent à traitement de texte. Or dans la pratique, passer d'un encodage classique à un encodage XML nécessite de remettre en question la logique même de l'encodage. Là où le traitement de texte permet finalement de faire tout et son contraire, un bon éditeur XML n'autorisera aucune fantaisie et visera avant tout à produire un document cohérent et respectant les règles générales d'xml et de la DTD liée à ce document. Ainsi, les éditeurs XML actuels demandent encore un apprentissage réel. Ils évoluent continuellement pour proposer de nouvelles fonctionnalités. Actuellement, ils ne sont pas encore des produits mûrs et complets. Voici une liste, non exhaustive, d'éditeurs XML disponibles sur le marché: Xmetal (payant ) de softquad (www.softquad.com) Xeena de IBM (gratuit) (www.alphaworks.ibm.com) XML Notepad de Microsoft (gratuit) (msdn.microsoft.com) Merlot de ChannePoint (open source gratuit) (www.merlotxml.org) XML Writer de Wattle Software (payant) (www.xmlwriter.net) Web Writer de Stilo (payant) (www.stilo.com) XML SPY de Icon Information Systems (payant) (www.xmlspy.com) XML Pro de Vervet Logic (payant) (www.vervet.com) Morphon de Lunatech Research (payant) (www.morphon.com) Exemple d utilisation de XML SPY :
Abdallah.Haloui Page 51 XML Spy est un éditeur payant (achat d une licence), mais on peut obtenir une version d évaluation sur Internet. Cet éditeur permet l édition et la validation d un document XML, ainsi que les schémas et DTD associés. Il permet aussi l édition et la transformation de feuilles XSL. XML Spy permet de visualiser les documents XML sous formes graphiques et schématiques. XML Spy se définit comme un environnement de développement intégré (IDE) pour XML. Il présente 3 vues principalement sous forme : de grille (pour une vue structurée du document), d'une table (comme celles produites par les bases de données), de code source avec coloration syntaxique. A l ouverture d un nouveau document, l éditeur nous demande automatiquement d associer une DTD ou un Schéma. Si la DTD n est pas existante, annulez pour la créer plus tard. XML Spy peut valider un document associé à une DTD donnée. Il permet aussi de générer une DTD à partir d'un exemple de document. Cet éditeur permet donc de travailler avec une DTD interne au document ou une DTD externe.
Abdallah.Haloui Page 52 La DTD externe peut ainsi être utilisée pour d autres documents. Dans le cas de l utilisation d une DTD externe il suffit d y faire appel dans le document : XML Spy est un éditeur efficace, pratique et simple d utilisation qui permet de créer et visualiser des documents XML rapidement. Avec ses trois vues, à la manière de Front Page pour le HTML, la visualisation du document est facilitée.. Cette disposition permet de visualiser l arborescence du document. Les flèches montantes et descendantes permettent de naviguer dans l arborescence
Abdallah.Haloui Page 53 Cette disposition en table, permet là encore de visualiser l arborescence du document ainsi que la structure balisée de celui-ci. Visualisation du document en code source
Abdallah.Haloui Page 54 Annexe B : Les parsers Qu'est-ce qu'un parser? Dans le domaine SGML, tout était admis comme simple! Un document ne pouvant être lu sans son modèle, un parserétait supposé lire le document SGMLet le valider en fonction de son modèle. Naturellement, ce n'était que le sens commun donné à une spécification ardue à lire qui, cependant, précisait les notions de "validating SGMLparser", de façon indépendante de celles de "SGMLapplication". Quoi qu'il en soit, décider qu'un parserdoit reporter des erreurs conformément à une spécification de validation est plus difficile à réaliser dans le domaine XML. Ceci est lié, d'une part, à la double vision que l'on peut avoir d'un même document (il est bien forméou valide) et, d'autre part, à l'arrivée d'une recommandation concurrente aux DTDd'XML: les Schema. Du coup, qu'est-ce qu'un parser? Parser: a computer program that breaks down text into recognize strings of character for further analysis. Webster OnLine Un parser serait donc un petit module de programme, dont le seul objectif serait de découper un flux d'entrée en un ensemble de "mots" (token) qui seront ensuite proposés à d'autres applications. Un parsern'est donc pas un programme en soi : il est associé à un module de traitement et c'est la nature de ce module qui prime. La spécification XML parle alors de "processeur XML". Un processeur XMLinclut des notions de validation lexicale et structurelle de document. Il propose aussi son module de traitement ad hoc, basé sur une représentation de l'information contenue dans le document (fichier) lu. Aujourd'hui, la représentation utilise soit l'interface SAX, soit des interfaces définies dans le "coeur" de DOM. Figure : "Architecture d'un processeur XML" Construire une application XMLrevient donc à utiliser des parsers pour des outils fonctionnels différents : Validation XML Ce sont des outils dont le rôle est de parser un document et d'en définir leur validité, pour savoir s'ils sont "valides" et/ou "bien formés". Valide s'entend aujourd'hui au regard d'une DTD; ce sera, demain, valide aussi au regard d'une DTDet/ou d'un Schema. Du coup, on est en droit de penser que l'architecture de ce type d'outil différenciera le parsing de la fonction de validation. Chargeur de document XML Outil logiciel assurant la fonction de parsing, de validation et la fonction de fournir une représentation du contenu du document à d'autres modules fonctionnels. Dans les implémentations actuelles, les représentations utilisées sont celles nécessaires à DOMou SAX; n'importe quelle autre représentation est possible, par exemple une implémentation basée sur les Infoset. Processeurs XML Ce sont des modules fonctionnels qui parsentet utilisent l'information parsée. Y en aura-t-il beaucoup, packagés en tant que tels, sans utiliser des couches de validation et de chargement externes? Certainement, ils existeront, mais dans des cas bien précis, d'environnements de développement peu ouverts (par exemple, ceux utilisés dans les téléphones portables). Sinon, ces outils utiliseront des chargeurs de documents. C'est ainsi que bon nombre d'implémentations de XSLT existantes sont basées sur une interface SAX, pour la lecture des documents XML. Comprendre comment peuvent s'architecturer ces composants logiciels est encore une autre affaire. On se référera avec profit à l'article de Simon Saint-Laurentsur le sujet [4]. Pour lui, il est nécessaire de construire une véritable architecture logicielle en couches allant du parsing jusqu'à la représentation de l'information.
Abdallah.Haloui Page 55 Documents bien formés et documents valides Un document est bien formé s il obéit aux règles syntaxiques du langage XML. Un tel document sera correctement traité par un programme adéquat, comme un parseur XML. Si le document n est pas bien formé son traitement provoquera un message d erreur ou un arrêt de l application qui le traite. Un document valide est forcément un document bien formé mais il obéit en plus à une structure type définie dans une DTD (Document Type Definition). Nous aborderons les DTD ultérieurement. Notons dès maintenant que : un document valide peut être distribué dans un système d information sans sa DTD ou sans référence à cette DTD, sous réserve de procéder au remplacement des références à des entités par leur valeur. Le document apparaît dans ce cas comme un document bien formé. les navigateurs XML sont capables de visualiser et d imprimer, sous le contrôle d une feuille de style, des documents bien formés non valides. la définition ou l utilisation d une DTD n est absolument pas imposée par les éditeurs XML. Les parsers validants : Java Project X de Sun extension à Java, interfaces DOM et SAX Oracle XML Parser for Java écrit en Java, interfaces DOM et SAX, disponible pour C et C++ MS-XML in Java de Microsoft destiné à être remplacé par XJParser XJParser de Microsoft et DataChannel écrit en Java, normes XML et XSL, interfaces DOM et SAX XML4J for Java d'ibm interfaces DOM et SAX, disponible pour C++
Abdallah.Haloui Page 56 Annexe C : DB/XML Transform Le téléchargement d une version dévaluation de DB/XML Transform se trouve dans l adresse suivante :http://www.datamirror.com/ Après l installation de DB/XML Transform, il faut définir une connexion avec les paramètre de configuration correspondants ; Ces captures d écran permettent de suivre les étape pour une application complète : 1. Définir la connexion : 2. Se connecter à la base oracle définie 3. Choix des tables à convertir en XML (cliquer sur XML/Tree-Structure Query):
Abdallah.Haloui Page 57
Abdallah.Haloui Page 58 4. Choix des paramètres XML : 5. Visualiser le fichiers de sortie : 6. Voici le fichier de sortie après la confirmation (cliquer sur file/save) :
Abdallah.Haloui Page 59
Abdallah.Haloui Page 60 Livres BIBLIOGRAPHIE Initiation à XML. D.Huter, C.Cagle, N. Ozu, J. Pinnock, Spence. Eyrolles, Paris 2000. XML et les bases de données. K. Williams, M.Brundage, P. Dengler, J. Gabriel, A Hoskinson, M. Kay, T. Maxwell, M. Ochoa, J. Papa, M. Vanme. Eyrolles, Paris 2001. XML et Java, J.-C Bernadac, F. Knab, F. Lepoivre, F. Rivard, Sannier. Eyrolles, Paris 2000. Sites Bases de données : http://cedric.cnam.fr/vertigo/cours/valeur-c/exposes2001/expo_tamino.pdf http://otn.oracle.com/docs/products/ias/doc_library/1022nt_doc_otn/install/apache.htm#1194095 http://www.infres.enst.fr/~talel/cours/bddo/marais/bddo.html www.softwareag.com/ http://cgi-serv.inrialpes.fr/intech/2000-01-20/xml3/index.html http://www.oracle.com/fr/education/ http://www.datamirror.com/ http://doug.burns.tripod.com/xml3.html XML, DTD, XML Schema, XSL, Xpath, Xql,.. www.w3c.com http://xmlfr.org/ portail.inist.fr/dilib/local/cours/dess.html http://perso.wanadoo.fr/bruno.menetrier/ http://xmlfr.org/w3c/tr/xpath/ http://sqlpro.multimania.com/avenir/sql_avenir.htm http://www.chez.com/xmlmisi/dossiers/xmlschema1.html#schemas http://www.mutu-xml.org/xml-base/slides/pub-schema-fr.pdf http://renoir.esigetel.fr/vas/commun/ http://babel.alis.com/web_ml/xml/rec-xml.fr.html http://webgi.fil.univ-lille1.fr/html/savoir_faire/veille/veille0001/sitexml/main/rapport.html http://www.chez.com/xml/index.htm http://www.mutu-xml.org/xml-base/articles/pub-edfstd-fr.pdf