Introduction à XMLperso.univ-mlv.fr/ocure/iidc_0910/introXML.pdféquivalent du 4ème plus gros pays...

Post on 12-Jul-2020

1 views 0 download

Transcript of Introduction à XMLperso.univ-mlv.fr/ocure/iidc_0910/introXML.pdféquivalent du 4ème plus gros pays...

O.Curé [1 ]

Introduction à XML

OlivierCuré [ocure@univ-mlv.fr]2

Contact

Olivier Curé

ocure@univ-mlv.fr

http://www.univ-mlv.fr/~ocure

Copernic 4B060

OlivierCuré [ocure@univ-mlv.fr]3

Ordre de grandeur

Ordre de grandeur :

1Mo : 1 gros roman

200à 500Mo : ce que mémorise un être humain dans sa vie.

900Mo : information contenue dans le génome d'une cellule humaine.

1To : estimation de la taille d'un HD en 2007. Toutes les conversations d'un être humain dans sa vie au format MP3.

20To : bibliothèque du congrès à Washington (que le texte), 20 millions d'ouvrages.

200To : archives du net en 2003 12 milliards de pages.

3Po : Bibliothèque du congrès scannerisée (textes + images).

100Eo : total du flux d'information dans le cerveau humain durant sa vie (Von Neumann).

Eo (Exa), Zo (Zetta) et Yo (Yotta).

OlivierCuré [ocure@univ-mlv.fr]4

Internet / Web

En 2007:

500 million d'adresses IP

1.17 milliard d'utilisateurs

18% de la population

109 million de sites Web

29.7 milliard de pages web

7.2 milliard de recherches/mois (3.9 pour Google)

OlivierCuré [ocure@univ-mlv.fr]5

Des chiffres

En 2006:

161 Eo (108 To) d'information ont été créés ou répliqués dans le monde

C'est plus que durant les 5000 dernières années

International Data Corporation (IDC) estime une croissance 6X d'ici 2010 (soit 988Eo/an)

Le volume de l'information technique double tous les 2 ans. Elle doublera toutes les 72 heures en 2010.

OlivierCuré [ocure@univ-mlv.fr]6

Encore des chiffres

2009: +de 250million d'utilisateurs sur Facebook: équivalent du 4ème plus gros pays au monde (entre les USA et l'Indonésie)

Myspace, environ 185million d'utilisateurs

En moyenne, une page MySpace est visitée 30 fois par jour pour accéder à

Des images (plus de 1 milliard)

De la musique (plus de 25 million)

Des vidéos (60To)

Sur 6000 serveurs web et 250 serveurs de BD

OlivierCuré [ocure@univ-mlv.fr]7

Encore..

Facebook:

1.8 milliard de photos

31 million d'utilisateurs

105 nouveaux utilisateurs par jour

1800 applications

YouTube

1.7 milliard de vidéos téléchargés/mois

1 million de streams/jour

Flickr (juin 2009)

3.6 milliard d'images

OlivierCuré [ocure@univ-mlv.fr]8

Pour finir

eBay dispose de 2 entrepôts de données (data warehouse):

Un de plus de 2Po

SGBD parallèle (Teradata)

Un autre de plus de 6.5Po

50To de nouvelles données par jour

SGBD parallèle (Greenplum)

96 noeuds

Compression de données à 70%

O.Curé [9 ]

Quelques chiffres● « Mobile devices in America are generating something

like 600 billion geo-spatially tagged transactions per day. Every call, text message, email and data transfer handled by your mobile device creates a transaction with your space-time coordinate (to roughly 60 meters accuracy if there are three cell towers in range), whether you have GPS or not. Got a Blackberry? Every few minutes, it sends a heartbeat, creating a transaction whether you are using the phone or not. If the device is GPS-enabled and you’re using a location-based service your location is accurate to somewhere between 10 and 30 meters. Using Wi-Fi? It is accurate below 10 meters. ».

● Jeff Jonas (http://jeffjonas.typepad.com/)

OlivierCuré [ocure@univ-mlv.fr]10

Objectifs du cours

Dans quoi stocke-t-on toutes ces informations ?

Comment pose-t-on des questions ?

Comment développer un site web de ce type ?

OlivierCuré [ocure@univ-mlv.fr]11

Dans quoi stocke-t-on toutes ces informations ?

Dans des bases de données

Une base de données (database) est un ensemble structuré et cohérent de données enregistrées avec le minimum de redondance pour satisfaire simultanément plusieurs utilisateurs de manière sélective et dans un temps opportun.

OlivierCuré [ocure@univ-mlv.fr]12

Système de gestion de base de données (SGBD)

Un ensemble de logiciels permettant la création et la maintenance de bases de données.

Un SGBD (database Management System -DBMS) doit permettre :

la description, l'organisation et la gestion des données sur les mémoires secondaires.

la recherche, la sélection et la modification des données.

la manipulation des représentations abstraites des données, indépendamment de leur organisation et de leur implantation sur les supports physiques.

OlivierCuré [ocure@univ-mlv.fr]13

Caractéristiques des SGBD

Structure (types et comportements des données).

Persistence des données (mémoire secondaire).

Accès aux données (langage déclaratif pour les requêtes, langage procédural de programmation).

Performance (accès et stockage des données).

Partage ( accès concurrentiel et transactions)

Volume important de données

Sécurité et reprise sur pannes

OlivierCuré [ocure@univ-mlv.fr]14

Modèle de donnéesUne BD exploite un modèle de données. Il existe de plusieurs types.

Un modèle de données est un ensemble de concepts permettant de décrire la structure d'une base de données : types de données, relations, des contraintes, des opérations (langage de définition et de manipulation des données) et la sémantique.

OlivierCuré [ocure@univ-mlv.fr]15

Quelques modèles de données

Evolution dans le temps :

système de fichiers (50s)

modèle hiérarchique( 60s) :IMS

modèle réseau (70s): Codasyl, IDMS

modèle relationnel (80s): Oracle, Sybase,DB2,..

modèle orienté objet (90s): Versant, Gemstone, O2

modèle objet-relationnel (90s) : Oracle, DB2, SQLServer, PostgreSQL

modèle semi-structuré (hétérogénéité, XML).

Le modèle relationnel est le plus populaire aujourd'hui.

OlivierCuré [ocure@univ-mlv.fr]16

Comment pose-t-on des questions ?

A l'aide d'un langage de requêtes.

Ils diffèrent suivant le modèle de données

Un langage de requêtes doit prendre en compte 2 aspects:

L'expressivité (la complexité des questions que l'on peut poser)

La difficulté du calcul de la réponse par l'ordinateur

En simplifiant, plus le langage est expressif plus le calcul sera long.

OlivierCuré [ocure@univ-mlv.fr]17

Comment développer un site web de ce type ?

Emergence du web : 1992

3 générations de sites Web : statique, dynamique et « intelligente ».

1ère génération : statique – 100% HTML

Les autres générations exploitent l'architecture client-serveur.

HTTP + CGI

HTTP + template + scripting

Serveur de présentation

OlivierCuré [ocure@univ-mlv.fr]18

Architectures du web

Web / DataProcessing

Technologies

Server-sideprocessing

Client-sideprocessing

Client-sidescripts

Compiled programs on client workstation

Compiled programs

HybridTechnologies

Server-Sidescripts

PERL

Active Server Pages

Cold Fusion

Java applets

JavaScript

VBScriptCGI ProgramsJava ServletsASP.NET

Java Server Pages

ASP.NET

INTEGRATING WEB SITES AND DATABASES, By Mike MORRISON, Joline MORRISON, and Anthony KEYS. Communications of the ACM September 2002 / vol 45, N°9

OlivierCuré [ocure@univ-mlv.fr]19

HTTP + CGI

CGI = Common Gateway Interface

Repose sur l'exécution de programmes sur le serveur en lui passant des arguments à travers l'URL.

Limites :

Montée en charge importante est difficile

Peu robuste.

Code source peu maintenable et lourd.

Exemples : Perl, Tcl, shells, etc..

OlivierCuré [ocure@univ-mlv.fr]20

HTTP + modèle + langage script serveur

Un modèle (template) est une page HTML contenant du code, écrit dans un langage script, exécuté du côté serveur.

Propose une séparation entre le code applicatif et la page HTML. Le serveur est chargé de la génération du code HTML.

Limites :

Caractère propriétaire des balises.

Réutilisabilité et structuration.

Ex : PHP et coldfusion

OlivierCuré [ocure@univ-mlv.fr]21

Serveur de présentation

Proche de la solution précédente mais avec une couche d'architecture plus globale et inclusion de composants.

Deux grandes solutions sont disponibles :

ASP.net (Active Server Pages)

ASP était la 1ère solution sur le marché.

Possibilité de développer dans de nombreux langages (VB, C#, etc..).

J2EE : Servlets, JSP (Java Server Pages) et java beans.

Indépendant de la plate-forme.

OlivierCuré [ocure@univ-mlv.fr]22

Serveur d'applications

Objectif : fournir une mise en oeuvre logique applicative sous la forme de composants. Ces derniers doivent être persistants et particulier à des transactions, de manière distribuée.

Ce middleware offre des fonctions techniques comme : l'équilibrage de charge, la tolérance aux pannes, la gestion de cache, service de nommage et de localisation => fonctions vitales dans le cadre d'applications Internet fortement centralisées.

OlivierCuré [ocure@univ-mlv.fr]23

J2EE

Architecture Java reposant sur l'orienté objet (héritage, encapsulation et polymorphisme).

Servlets, JSP, JavaBeans, JSTL (JavaServer Tag Libraries) => profite du modèle MVC (Modèle Vue Contrôleur).

Gestion des transactions (JTA).

Gestion des BD (JDBC).

Gestion des messages (JMS, JavaMail).

Gestion des objets distribués (RMI-IIOP).

Gestion de renommage des services (JNDI).

Solutions : BEA logic, Websphere, Enhydra, Jboss, Geronimo.

O.Curé [24 ]

Le Web● Le Web révolutionne l'accès à l'information.

● Des millions de sites, des milliards de pages et des technologies diverses : statique/dynamique, internet/ intranet/extranet .

● HTML est un support pour l'information distribuée à destination des êtres humains mais n'est pas adapté pour les applications, pourtant ce besoin devient incontournable.

O.Curé [25 ]

Constat du WebHTML (HyperText Markup Language) est un langage permettant de présenter l'information à l'écran (navigateur).

Pas d'échange de données

Pas de traitement de données en dehors de l'affichage

HTML est le support du Web actuel, un Web syntaxique.

Problèmes engendrés :

Moteur de recherche

e-commerce

Publication de services

O.Curé [26 ]

Contraintes du WebDomaine hétérogène : Machines, Systèmes, Environnement de développement

Grand nombre d'applications différentes

Indépendance données / application.

Transformation des données pour un transfert opérationnel.

XML est la réponse :

Contenu alphanumérique (format ASCII) (semi-)structuré avec des balises

Indépendant de l'application

Transformation facile (XSL)

O.Curé [27 ]

Objectifs de XML● Définir un contexte de structuration de données:

– conception concise et claire – utilisable facilement sur Internet – compatible avec SGML– développement de programmes associés facile – minimum d'option (flexibilité maximum) – le plus lisible possible (auto-documenté)– pas de contrainte particulière sur la syntaxe – faciliter et accélérer la préparation de documents

=> XML est un méta-langage universel pour les données. Le modèle de données est fondé sur des arbres et le langage de représentation est basé sur le balisage.

O.Curé [28 ]

XML est d'actualité● Car il répond bien à différent besoins:

– Structuration aisée des données– Échange facile sur le WWW

● Car il “généralise” certaines technologies existantes:– HTML, WAP, iMode, PDA, etc..– “SGBD texte”

● Car il peut être omniprésent– Format de données– Protocoles

O.Curé [29 ]

Historique● Descendant de SGML (ISO 8879, 1986)

– GML (Generalized Markup Language) en 1969 (Goldfard, Mosher, Lorie; IBM)

– SGML = Standard Generalized Markup Language– Invention: 1970’s (avant le WWW)– Spécification = 150 pages – Tous les languages de “markup” (très puissant)– Application SGML connue : HTML– Très complexe (pas d’implémentation unifiée)

à lire : http:java.sun.com/xml/birth_of_xml.html

O.Curé [30 ]

Historique (suite)● 1990 : HTML 1 (Berners-Lee; CERN)

● 1994 : World Wide Web Consortium (W3C - www.w3.org)

● 1995 : HTML 2

● 1996 first draft de XML

● 1997 : HTML 3.2 en 1997

● 1998 : Publication de la recommandation XML

● 2004 : Publication de la recommandation XML 1.1.

O.Curé [31 ]

Famille XML● XML : Représentation de données● DTD (Document Type Definition): Structure du document● XSD (XML Schema Definition) = DTD en XML● XLink (XML Linking Language): Liens étendus ● XHTML = « HTML aux normes XML »● DOM (Document Object Model): Modèle de données● SAX (Simple API for XML): Parser● XPath: Structuration du parsing (parcours du DOM)● XSL (eXtended Stylesheet Language): Traitement● FO (Formatting Objects): Formattage de texte● XML Query Language: Requêtes (Quilt, XML-QL, XQL,etc)● SVG : Scalable Vector Graphics : Dessin vectoriel● ..

O.Curé [32 ]

Exemple XML

<?xml version="1.0" ?><personne><nom>Curé</nom><prenom>Olivier</prenom>

</personne>

O.Curé [33 ]

XML bien formé

● Contient un ou plusieurs éléments– Non vide

● Un seul point de départ – Racine– Début de son analyse unique

● Imbrication correcte (arbre)– Structure hiérarchique

● Fait référence à des entités bien formées– Références externes– Document distribué

O.Curé [34 ]

Syntaxe

● Similaire à HTML:– <balise attribut=“valeur”>contenu</balise>– <balise> : une balise d'ouverture– <balise/> : balise de fermeture – Pour un élément vide : <balise/>– élément = sous-arbre– élément vide: <balise attribut=“valeur”/>– attribut=“valeur” (Importance de

guillements!)● Commentaire:

– <!-- ceci est un <commentaire>, jusqu’ici -->

O.Curé [35 ]

Syntaxe (2)

● Respect de la casse pour les balises● Noms d’attributs en minuscules● Certains caractères interdits

– $, ... lié au traitement (XSL)● Certains caractères déconseillés

– +,-,… pour les noms des attributs (perturbe les calculs)

● Chaque attribut a un nom unique– valeur obligatoire– valeur entre guillemets

O.Curé [36 ]

Imbrication exemple

<personne>

<nom>Curé</nom>

<prenom>Olivier</prenom> Ok

</personne>

<personne>

<nom>Curé</nom>

<prenom>Olivier</personne> Pas Ok en XML

</prenom>

O.Curé [37 ]

Document XML

● Déclaration XML <?xml … ?>– Version version=“1.0”

● 1.0 ou 1.1– Encodage encoding=“ISO-

8859-1”● UTF-8, UTF-16, ISO-10646-UCS-2, ISO-10646-UCS-4, ISO-8859-1 à

ISO-8859-9, ISO-2022-JP, Shift_JIS, EUC-JP– Document indépendant ou non standalone=“yes”

● yes, no

● Instructions pour le traitement <?processing-instruction…?>– pour les applications qui traitent le document– Un document - plusieurs utilisations

O.Curé [38 ]

Document XML (2)

● Déclaration XML <?xml … ?>● Instructions pour le traitement <?processing-instruction…?

>

● Déclaration de type de document <!DOCTYPE racine …>– DTD / Schema– Attributs DTD

● SYSTEM (URL) ou PUBLIC (Details et URL)– Associe une structure au document

● Commentaire <!-- texte -->– Texte ignoré durant l’analyse

● Contenu <racine>…</racine>– Arborescence de balises avec/sans attributs– Contenus de balises

O.Curé [39 ]

Exemple<?xml version="1.0"  standalone="yes"?>

<adresses>

<personne>

<type statut= "mcf"/>

<nom>Curé</nom>

<prenom>Olivier</prenom>

<adresse>IFIS, Univ­mlv</adresse>

</personne>

<personne> .... </personne>

</adresses>

O.Curé [40 ]

Attribut "standalone"

● définir l'existence d'une DTD externe

● Si la valeur est "no", le document n'est pas standalone et dépend d'une DTD externe.

● Si la valeur est "yes", le document est standalone et il n'y a pas de DTD externe.

O.Curé [41 ]

Exemple XML (arbre)

Entête

adresses

personne

type nom prenom adresse

personne

type nom prenom adresse

O.Curé [42 ]

Modélisation XML● 2 approches pour la modélisation de

documents XML :

– Orientée donnée (data-centric) : structure régulière, ordre des éléments n'est pas important => stockage dans des SGBDR et SBGDOO.

– Orientée document (document-centric) : structure peu régulière, ordre des éléments est important => stockage NXD (Native XML Databases).

O.Curé [43 ]

Sections littérales● Il est interdit de placer dans le contenu des caractères comme "<",

">", "&".

● Le document suivant est incorrect :

<?xml version="1.0"?>

<code>if (i>5 && j<10)

</code>

● La section CDAta permet d'inclure du texte qui ne sera pas analysé par le parseur :

<?xml version="1.0"?>

<condition>

<![CDATA [if (i>5 && j<10) ]]>

</condition>

O.Curé [44 ]

URx● URI (Uniform Resource Identifier): Un identifiant

générique permettant de distinguer sur Internet des ressources concrètes et/ou abstraites.

● Les URIs proposent une syntaxe pour accéder à des ressources d'une manière indépendante du protocole (extension possible).

● Il existe 2 types d'URI :

– Les URL (Uniform Resource Locator) pour les ressources concrètes.

– Les URN (Uniform Resource Name) pour les ressources abstraites.

● Possibilité de spécifier des chemins complets ou relatifs.

O.Curé [45 ]

URx (2)● Une URI comprend 2 parties

séparées par ':' :

Schéma extrait du 'Dictionary of XML technologies and the Semantic Web", V. Goreimenko, Ed. Springer-Verlag. 2004

O.Curé [46 ]

URx (3)● Schema-name peut prendre les valeurs

suivantes : http, ftp, mailto, file, news.

● La notion d'URI est une base du Web Sémantique.

● Une URL (Uniform Resource Locator) est une localisation, un sous-ensemble d'une URI décrivant une ressource concrète,accessible sur Internet et localisée à une adresse (URL).

● Exemple : http://www.univ-mlv.fr/

O.Curé [47 ]

URx (4)● Une URN (Uniform Resource Name) est un

sous-ensemble d'une URI spécifiant le nom d'une ressource générique abstraite, généralement unique et sans localisation.

● Contrairement à une URL, une URN peut se référer à une chose qui n'existe pas sur Internet.

● Peut se référer à une "chose" du monde réelle : un chien ou un théorème.

● L'accès et la récupération ne passe pas forcément par un traitement informatique.

O.Curé [48 ]

URx (5)● Une URN permet de définir des noms avec une

syntaxe proche d'une URL mais ce n'est pas nécessairement une ressource Internet.

● Une URN est composée de 3 parties séparées par des ':' :

O.Curé [49 ]

XML namespaces

● XML Namespaces : – permet le mélange de vocabulaires. – offre les avantages suivants :

● "Marquer" les éléments et attributs avec des espaces de noms.

● Valider des documents contenant des éléments et attributs provenant de différénts espaces de noms.

● Version actuelle : Namespaces in XML 1.1 (Recommandation du 02/2004).

O.Curé [50 ]

Déclaration des espaces de noms

● Déclaration par une URI en associant à un préfixe, à l'aide de l'attribut xmlns.

● Déclaration :

<balise xmlns:préfixe="uri">

● Exemple

<recette xmlns:food="http://www.food.com">

● L'association n'est valable que dans les descendants de l'élément qui contient la déclaration.

● L'association est appliquée aux éléments et attributs.

O.Curé [51 ]

Utilisation des espaces de noms (suite)

● Une déclaration xmlns sans préfixe est considérée comme définissant l'espace de noms par défaut et est appliquée à l'ensemble des éléments de la zone.

● Utilisation d'un espace de noms : <préfixe:élément>

● Exemple :

<Books xmlns='http://www.oreilly.com' xmlns:Songline='http://www.songline.com'> <Book> 

<Title>XML Pocket Reference</Title> <ISBN>0­596­00133­9</ISBN> 

</Book> <Songline:CD>18231</Songline:CD> 

</Books>

O.Curé [52 ]

XML namespaces (fin)● En règle générale, on utilise une URL pour définir un

espace de noms mais cet URL ne doit pas nécessairement pointé sur un schéma (DTD, XML schéma) ou autres documents.

– Un espace de noms n'est pas une localisation Internet où réside des ressources physiques.

– C'est une méthode de création de noms uniques permettant d'éviter les collisions entre noms d'éléments.

O.Curé [53 ]

Noms qualifiés● Un nom qualifié (ou Qname) est un nom

d'élément ou d'attribut de la forme :

namespace_prefix : local_part

● Exemple :

book:title nom qualifié

person:title nom qualifié

title nom non-qualifié

O.Curé [54 ]

XHTML

● Reformulation de HTML en tant qu'application XML

● Avantages :– Syntaxe plus rigoureuse– Possibilité d'utiliser les applications

XML standard– Importation de fragments de

documents d'autres espaces de noms

O.Curé [55 ]

Conclusion

● XML est un conteneur:– Ne dit pas comment définir les balises– Ne dit pas comment structurer l'information

● XML est simple:– Texte– Peu de contraintes

● XML est standard:– Echange de document– Format "central"– Outil existants

● XML n'est pas:– Un language de programmation– Une solution miracle….