Vous êtes sur la page 1sur 111

XML: eXtensible Markup Language

Fondements, Modlisation, Prsentation et Programmation

Tarak CHAARI - Dpt Tlcommunications

XML - 1

Sommaire
Fondements de la technologie XML Modlisation et validation de documents XML Prsentation des documents XML Programmation en utilisant XML

Tarak CHAARI - Dpt Tlcommunications

XML - 2

XML: eXtensible Markup Language Partie 1:

Fondements et notions de base

Tarak CHAARI - Dpt Tlcommunications

XML - 3

Notion de document lectronique


Dfinitions
Objet qui joue un rle de mdiateur entre les hommes dans le temps et l'espace (change dinformation) Moyen de communication de la pense, de la connaissance, de l'information et du savoir Un document est un ensemble form par un support et une information (ISO TC-46) Se prsente sous la forme de textes, tableaux, dessins, photos, ... Un document a un contenu (structure logique) et un fond (structure physique)
Tarak CHAARI - Dpt Tlcommunications XML - 4

Modles de document
Structure logique
Dcrit le contenu dun document (information) Par exemple: Chapitre, section, paragraphes, figures, notes

Structure physique
Dcrit la forme et le support du document (formatage) Par exemple: tomes, pages, cadres, pavs, fentres

Caractristiques communes des 2 structures:


Composes ou lmentaires (molcule / atomes) Gnrique ou spcifique (date / le 29-11-2006)

Tarak CHAARI - Dpt Tlcommunications

XML - 5

Exemple dun document (article)


Titre Auteur Section Paragraphe
XML: eXtensible Markup Language
Wikipdia 1. Introduction XML (Extensible Markup Language, langage de balisage extensible ) est un langage informatique de balisage gnrique. Le W3C recommande XML pour exprimer des langages de balisages spcifiques (exemples : XHTML, SVG, XSLT). Son objectif initial est de faciliter l'change automatis de contenus entre systmes d'informations htrognes, notamment, sur Internet. XML est un sous-ensemble de SGML dont il retient plusieurs principes dont : la structure d'un document XML est dfinissable et validable par un schma, un document XML est entirement transformable dans un autre document XML. 2. Objectif initial L'objectif initial de XML tait de proposer un SGML simplifi. Cette technologie

Paragraphe

Section

Tarak CHAARI - Dpt Tlcommunications

XML - 6

Exemple dun document: Structure logique


<Article> <Titre> XML: eXtensible Markup Language </Titre> <Auteur>Wikipdia</Auteur> <Section titre = "Introduction"> <Paragraphe>XML (Extensible Markup Language, langage de balisage extensible ) est un langage informatique de balisage gnrique. Le W3C recommande XML pour exprimer des langages de balisages spcifiques (exemples : XHTML, SVG, XSLT). </Paragraphe> <Paragraphe> Son objectif initial est de faciliter l'change automatis de contenus entre systmes d'informations htrognes, notamment, sur Internet. XML est un sous-ensemble de SGML dont il retient plusieurs principes dont : la structure d'un document XML est dfinissable et validable par un schma, un document XML est entirement transformable dans un autre document XML. </Paragraphe> </Section> <Section titre= "Objectif initial"> </Section> </article>
Tarak CHAARI - Dpt Tlcommunications XML - 7

Exemple dun document: Structure physique


<Article> <Titre police="Times" taille="24" position="centr" format="gras"/> <Auteur police="Times" taille="20" position="centr" format="italique"/> <Section numero="1" police="Times" taille="18" position="centr" format=" gras "/> <Paragraphe police="Times" taille="18" position="justifi"/> </article>

Tarak CHAARI - Dpt Tlcommunications

XML - 8

World Wide Web Consortium


W3C - Fond en 1994 Consortium industriel international accueilli par diffrents sites
MIT/LCS aux Etats-Unis INRIA en Europe Keio University au Japon

448 membres industriels en septembre 2000 Accroitre le potentiel du WEB


Standards et Normes Techniques, langages et architectures pour lchange de documents sur le WEB
Origines
Tarak CHAARI - Dpt Tlcommunications XML - 9

Langages de reprsentation de documents


Par ordre chronologique:
SGML (Norme ISO 8879 en 1986, rvise en 1988 et 1994)
Mta-langage gnral

HTML (Standard W3C depuis 1989)


Structure gnrale fige

XML (Standard W3C depuis 1998)


Mta-langage simplifi compatible SGML
Tarak CHAARI - Dpt Tlcommunications XML - 10

SGML: prsentation
Une norme internationale :
Standard Generalized Markup Language ISO 8879 - 1989

Un mtalangage de balisage de documents


lisible par ltre humain et traitable par une machine permet de dfinir des langages de balisage

Les documents sont baliss conformment la grammaire (la DTD)


instances de DTD permet un balisage smantique du fond.

Implique la notion de validit d'un document


SGML
Tarak CHAARI - Dpt Tlcommunications XML - 11

SGML : objectifs
Sparation du fond et de la forme
possibilit de multiples prsentations un seul document en SGML plusieurs formats : Postcript, HTML, etc.

Support de traitements sur le contenu des documents sans prise en compte de la forme Proposition dun cadre dfini pour lexpression des modles documentaires (validit, contrle) Format de stockage et dchange normalis
SGML
Tarak CHAARI - Dpt Tlcommunications XML - 12

SGML : critiques
Trs lourd et complexe pour la mise en uvre de documents respectant ce format Une grande rigueur est demande l'entre des documents Standard complexe et complet pour le traitement des documents Liens hypertextes possibles mais complexes
SGML
Tarak CHAARI - Dpt Tlcommunications XML - 13

HTML : prsentation
Propos par le W3C comme format de documents sur le Web Langage simple avec des balises standardises permettant la mise en forme dun texte. Standard reconnu par tous les navigateurs. Langage trs populaire sur le Web
<HTML> <HEAD> <TITLE> Exemple </TITLE> </HEAD> <BODY> <H1>Contenu du document</H1> <A HREF = "http://www.server.fr/Info /dir/test.html"> une rfrence externe</A> </BODY> </HTML>

HTML

Tarak CHAARI - Dpt Tlcommunications

XML - 14

HTML : inconvnients
Normalisation des diffrentes balises difficile
les constructeurs ont eu tendance dfinir leurs propres balises pour rpondre leurs besoins (incompatibilit) HTML est ddi pour un seul type de terminaux

Mises jour difficiles


restructuration ou remise en forme de lensemble des pages du site fastidieux Incapacit dextension sans "plugins" cot client (formules mathmatiques, modlisations de molcules, scnes 3D)

Mlange de structures logique et physique


donnes utiles mlange avec la mise en forme Difficults trouver linformation recherche
HTML
Tarak CHAARI - Dpt Tlcommunications XML - 15

SGML et HTML : Rsum


SGML
lange puissant pouvant dcrire toute structure Documents difficile dfinir Documents difficiles utiliser
Tarak CHAARI - Dpt Tlcommunications

HTML
spcialisation de SGML adapt la prsentation inadapt l'change entre programmes

HTML

XML - 16

XML : Prsentation
XML= un nouveau langage d'change bas sur le balisage XML= plus simple que SGML XML= plus ouvert que HTML XML = dvelopp par XML Working Group dirig par le W3C (depuis 1996) XML 1.0 = recommandation officielle du W3C depuis le 10 fvrier 1998
Origines
Tarak CHAARI - Dpt Tlcommunications XML - 17

XML: objectifs fixs par le W3C (1)


XML doit pouvoir tre utilis sans difficult sur Internet XML doit soutenir une grande varit d'applications XML doit tre compatible avec SGML et HTML Il doit tre facile d'crire des programmes traitant les documents XML Le nombre d'options dans XML doit tre rduit au minimum, idalement aucune
Origines
Tarak CHAARI - Dpt Tlcommunications XML - 18

XML: objectifs fixs par le W3C (2)


Les documents XML doivent tre lisibles par l'homme Les documents XML doivent tre raisonnablement clairs La spcification de XML doit tre disponible rapidement La conception de XML doit tre formelle et concise Il doit tre facile de crer des documents XML
Origines
Tarak CHAARI - Dpt Tlcommunications XML - 19

Forces de XML
Sparation de la structure et de la prsentation Moins confus que HTML Plus simple que SGML Idal pour l'change de donnes semi-structures Utilisable entre machines htrognes
Origines
Tarak CHAARI - Dpt Tlcommunications XML - 20

XML: utilits (1)


XML est un Mta-langage universel pour reprsenter les donnes changes sur le Web qui permet au dveloppeur de dlivrer du contenu depuis les applications d'autres applications ou aux navigateurs XML standardise la manire dont l'information est :

XML

change prsente archive retrouve transforme crypte ...


Tarak CHAARI - Dpt Tlcommunications XML - 21

XML: utilits (2)


Dfinir vos propres langages dchange
Commande, facture, bordereau de livraison, etc.

Modliser des documents et des messages


Modle logique de donnes Elments typs agrgs (DTD, XML Schema)

Publier des informations


Neutre du point de vue format Mise en forme avec des feuilles de style

Archiver des donnes


Auto-description des archives (recherche dinformation)
Pourquoi XML ?
Tarak CHAARI - Dpt Tlcommunications XML - 22

Concepts de XML
Balise (ou tag ou label)
Marque de dbut et fin permettant de reprer un lment textuel Forme: <balise> de dbut, </balise> de fin

Elment de donnes
Texte encadr par une balise de dbut et une de fin Les lments de donnes peuvent tre imbriques
<producteur> <adresse> <rue>A. Einstein</rue> <ville>Villeurbanne</ville> </adresse> </producteur>

Attribut
Doublet nom="valeur" qualifiant une balise
<producteur no="160017" region="Rhne">

XML

Tarak CHAARI - Dpt Tlcommunications

XML - 23

Exemple 1 dun document XML

Tarak CHAARI - Dpt Tlcommunications

XML - 24

Exemple 2 dun document XML

Tarak CHAARI - Dpt Tlcommunications

XML - 25

Structure Arborescente dun document XML

Tarak CHAARI - Dpt Tlcommunications

XML - 26

La base dun document XML: llment

Quand utiliser les attributs? - Valeur unique de type simple (information monovalue) Quand utiliser les lments? - Valeur de type complexe (numrations, possde des proprits)
Tarak CHAARI - Dpt Tlcommunications XML - 27

Espaces de noms
Comment mixer des tags (ou balises) issus de diffrents langages? Un espace de noms est caractris par un prfixe
Le prfixe permet de retrouver le langage <!- dfinition des espaces de noms -> <tag xmlns:mic="http://www.michelin.com/2001/Guide", xmlns:pj="http://www.pagejaune.com/2001/Annuaire"> <! utilisation des espaces de noms -> <mic:Adresse><ville>Villeurbanne</ville><zip>69100</zip></mic:Adresse> <pj:Adresse>Villeurbanne 69 Rhne</pj:Adresse>

Mcanisme intressant pour l'intgration de contenus


XML
Tarak CHAARI - Dpt Tlcommunications XML - 28

XML: contextes dutilisation


Architectures N-tiers

Production de documents XML partir de services (couche mtier) Transformation de ces documents pour des formats daffichage, dimpression, de transfert..
Tarak CHAARI - Dpt Tlcommunications XML - 29

XML: contextes dutilisation


Stockage de donnes
Format spcifiques (exemple: SVG)

Tarak CHAARI - Dpt Tlcommunications

XML - 30

XML: contextes dutilisation


Stockage de donnes
Fichiers de configuration (exemple: JBOSS)
<?xml version="1.0" encoding = "ISO-8859-1"?> <!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN' 'http://java.sun.com/dtd/ejb-jar_2_0.dtd'> <ejb-jar> <enterprise-beans> <session> <ejb-name>LegoBlocksEJB</ejb-name> <home>legoBean.LegoBlocksSessionHome</home> <remote>legoBean.LegoBlocksSession</remote> <ejb-class>legoBean.LegoBlocksSessionBean</ejb-class> <session-type>Stateful</session-type> <transaction-type>Container</transaction-type> </session> </enterprise-beans> </ejb-jar>
Tarak CHAARI - Dpt Tlcommunications XML - 31

XML: contextes dutilisation


Echange de donnes
changes Business to Business, services web

Tarak CHAARI - Dpt Tlcommunications

XML - 32

Bases de donnes vs XML

Approche Donne
Structuration forte et simple Compatibilit SGBDR existants Mise jour en place Intgrit smantique Indexation exacte Adapt au transactionnel et dcisionnel Performances attendues moyenne forte pour une volumtrie moyenne

Approche Document
Structuration faible et complexe Systmes documentaires spcialiss Gestion de versions Recherche textuelle Indexation approche Accs type moteur de recherche Performances attendues moyenne pour une volumtrie forte
XML - 33

Pourquoi XML ?

Tarak CHAARI - Dpt Tlcommunications

Equivalences BD / XML
Une table dans une BD peut correspondre un document XML (elle correspond en rel une classe dobjets)
<class name="person">

Une ligne dans la table dcrit une instance dun objet. Elle correspond un lment XML
<instance id="Person_001">

Chaque colonne de la ligne correspond une proprit de lobjet


<property name="age">22</property>

Un autre contexte dutilisation de XML:


- Mapping relationnel/objet - Fusion de sources de donnes htrognes
Tarak CHAARI - Dpt Tlcommunications XML - 34

Ltat actuel de XML


Un standard d'change
Lisible : texte balis avec marquage Clair : sparation du fond et de la forme Extensible : supporte les volutions applicatives Scuris : pare-feu, encryption, signature

Dvelopp par le W3C


Pour le Web (Internet, Intranet) S'tend l'entreprise et ses partenaires

Support par les grands constructeurs


IBM, Microsoft .net, SUN, BEA, etc. Des outils gnriques et ouverts
Pourquoi XML ?
Tarak CHAARI - Dpt Tlcommunications XML - 35

Langages XML : une nbuleuse en expansion


Transformations / prsentation Les anctres Validation Les liens

DSSSL XSL CSS

SGML HTML XML-RPC

XML-Schema DTD WSDL

HyTime

XLink

XPointer
Besoins spcifiques

Programmation

JAXP MS-XML DOM SAX

SVG OWL XML Encyption

SMIL

XML

WAP SOAP

MathML CML ThML


Interfaces utilisateurs

Interrogation / recherche

Description de ressources

XML Query XPath CC/PP

UIML

XUL

RDF Mpeg-7

SunML XFORMS USIXML


XML - 36

Tarak CHAARI - Dpt Tlcommunications

XML: Exercice (structuration de donnes)


Donnez une version structure du document suivant:
Une bouteille d'eau Cristaline de 150 cl contient par litre 71 mg d'ions positifs calcium, et 5,5 mg d'ions positifs magnsium. On y trouve galement des ions ngatifs comme des chlorures 20 mg par litre et des nitrates avec 1 mg par litre. Elle est recueillie StCyr la Source, dans le dpartement du Loiret. Son code barre est 3274080005003 et son pH est de 7,45. Comme la bouteille est sale, quelques autres matriaux comme du fer s'y trouvent en suspension. Une seconde bouteille d'eau Cristaline a t, elle, recueillie la source d'Aurle dans les Alpes Maritimes. La concentration en ions calcium est de 98 mg/l, et en ions magnsium de 4 mg/l. Il y a 3,6 mg/l d'ions chlorure et 2 mg/l de nitrates, pour un pH de 7,4. Le code barre de cette bouteille de 50 cl est 3268840001008. Une bouteille de mme contenance est de marque Volvic, et a t puise ... Volvic, bien connu pour ses sources donnant un pH neutre de 7. Elle comprend 11,5 mg/l d'ions calcium, 8,0 mg/l d'ions magnsium, 13,5 mg/l d'ions chlorures et 6,3 mg/l d'ions nitrates. Elle contient galement des particules de silice. Son code barre est 3057640117008. PS : Volvic est dans le Puy-de-Dme...

Tarak CHAARI - Dpt Tlcommunications

XML - 37

XML: Exercice (structuration de donnes)


<?xml version="1.0" encoding="ISO-8859-1" ?> - <eau> - <bouteille> <marque>Cristaline</marque> - <composition> <ion type="positif">calcium 71mg/l</ion> <ion type="positif">magnsium 5,5mg/l</ion> <ion type="negatif">chlorure 20mg/l</ion> <ion type="negatif">nitrate 1mg/l</ion> <autre type="metal">fer</autre> </composition> - <source> <ville>St-Cyr la Source</ville> <departement>Loiret</departement> </source> <code_barre>3274080005003</code_barre> <contenance unit="cl">150</contenance> <ph>7,45</ph> </bouteille> <bouteille> <marque>Cristaline</marque> - <composition> <ion type="positif">calcium 98mg/l</ion> </composition> - - <source> <ville>Aurle</ville> <departement>Alpes Maritimes</departement> </source> <code_barre>3268840001008</code_barre> <contenance unit="cl">50</contenance> <ph>7,4</ph> </bouteille> - <bouteille> <marque>Volvic</marque> - <composition> </composition> - <source> </source> </bouteille> </eau>

Tarak CHAARI - Dpt Tlcommunications

XML - 38

XML: eXtensible Markup Language Partie 2:

Modlisation des documents: DTD et Schma


Tarak CHAARI - Dpt Tlcommunications XML - 39

Introduction
Un document XML peut tre associ :
une DTD ou un schma pour dcrire les balises Une feuille de style pour prsenter les donnes

Une DTD ou/et un schma permettent de dfinir son propre langage bas sur XML
Vocabulaire (balises) Grammaire (imbrications) Dialecte ou Jargon

Introduction

Tarak CHAARI - Dpt Tlcommunications

XML - 40

Validit des documents


Document bien form (Well Formed document)
Guillemets (ou apostrophes) obligatoires autour des valeurs
<adresse id=2 type=domicile/>

Les lments vides utilisent une notation spcifique


<image src=image3.gif/> <image src=image3.gif></image>

Les balises doivent tre correctement imbriques


<b><i> NON ! </b></i>

Le document a une seule racine Un attribut est unique dans son lment

Document valide (Valid document)


bien form + conforme la DTD ou au schma qui lui est associ
Introduction
Tarak CHAARI - Dpt Tlcommunications XML - 41

Exercice: documents bien forms?


QUESTION: Est-ce que les documents suivants sont bien forms ?

REPONSE 1:

REPONSE 2:

REPONSE 3:
Tarak CHAARI - Dpt Tlcommunications XML - 42

DTD
Permet de dfinir le vocabulaire et la structure qui seront utiliss dans le document XML Grammaire du langage dont les phrases sont des documents XML (instances) Peut tre mise dans un fichier (DTD externe) et tre appele dans le document XML
DTD
Tarak CHAARI - Dpt Tlcommunications XML - 43

Dclaration d'lment simple


<! ELEMENT balise (dfinition) >
Le paramtre dfinition reprsente soit un type de donne prdfini, soit un lment de donnes compos, constitu lui mme d'lments Types prdfinis
ANY : L'lment peut contenir tout type de donne EMPTY : L'lment ne contient pas de donnes spcifiques #PCDATA : L'lment doit contenir une chane de caractre

Exemple
<! ELEMENT Nom (#PCDATA)> <Nom>Victor Hugo</Nom>
DTD
Tarak CHAARI - Dpt Tlcommunications XML - 44

Dclaration d'lment compos


Dfinit une squence ou un choix d'lments Syntaxe spcifique avec oprateurs de composition d'lments :
<! ELEMENT balise (composition) >
Oprateur Signification + L'lment doit tre prsent au minimum une fois * L'lment peut tre prsent plusieurs fois (ou aucune) ? L'lment peut tre optionnellement prsent | L'lment A ou B peuvent tre prsents (pas les deux) , L'lment A doit tre prsent et suivi de l'lment B Les parenthses permettent de regrouper des lments afin de leur appliquer les () autres oprateurs Exemple A+ A* A? A|B A,B (A,B)+

DTD

Tarak CHAARI - Dpt Tlcommunications

XML - 45

Exemple d'lment compos

<!ELEMENT personne (nom, prenom+, tel?, adresse) > <!ELEMENT nom (#PCDATA) > <!ELEMENT prenom (#PCDATA) > <!ELEMENT tel(#PCDATA) > <!ELEMENT email (#PCDATA) > <!ELEMENT adresse (ANY) > <personne> <nom>Hugo</nom> <prenom>Victor</prenom> <prenom>Charles</prenom> <tel>01120243</tel> <adresse><rue></rue><ville>Paris</ville></adresse> </personne>
DTD
Tarak CHAARI - Dpt Tlcommunications XML - 46

Dclaration d'attributs
<! ATTLIST balise Attribut Type Mode >
balise spcifie l'lment auquel est attach l'attribut Attribut est le nom de l'attribut dclar Type dfinit le type de donne de l'attribut choisi parmi:
CDATA
Chanes de caractres entre guillemets ("aa") non analyses

Enumration
Liste de valeurs spares par | <! ATTLIST balise Attribut (Valeur1 | Valeur2 | ... ) >

ID et IDREF
Cl et rfrence cl

Mode prcise le caractre obligatoire ou non de l'attribut


#REQUIRED, #IMPLIED ou #FIXED

DTD

Tarak CHAARI - Dpt Tlcommunications

XML - 47

Exemple d'attributs
<! ATTLIST personne num ID, age CDATA, genre (Masculin | Feminin ) > <!ELEMENT auteur (#PCDATA) > <!ELEMENT editeur (#PCDATA) > <!ATTLIST auteur genre (Masculin | Feminin ) #REQUIRED ville CDATA #IMPLIED> <!ATTLIST editeur ville CDATA #FIXED "Paris">
DTD
Tarak CHAARI - Dpt Tlcommunications XML - 48

Exemple de DTD

DTD

Tarak CHAARI - Dpt Tlcommunications

XML - 49

Exemple de DTD interne


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

</DOCUMENT>
DTD
Tarak CHAARI - Dpt Tlcommunications XML - 50

DTD externe
Modle pour plusieurs documents
partage des balises, attributs et structures

Dfinition locale ou externe


<!DOCTYPE doc SYSTEM "doc.dtd"> <!DOCTYPE doc PUBLIC "www.myweb.com/doc.dtd">

Exemple de document
<?xml version="1.0" standalone="no"?> <!DOCTYPE modeles SYSTEM "modeles.dtd"> ...
DTD
Tarak CHAARI - Dpt Tlcommunications XML - 51

DTD : Entit paramtre


Permet la dfinition d'un groupe d'lments sous un nom <!ENTITY %nom "definition"> (macro) Rutilisable dans une DTD par simple appel %nom; Exemple :
<!ENTITY %genres "(homme | femme)"> <!ATTLIST auteur genre %genres; #REQUIRED>

Peuvent tre externes :


<!ENTITY %mpeg SYSTEM "http://www.mpeg.com">
DTD
Tarak CHAARI - Dpt Tlcommunications XML - 52

DTD : Entit gnrale


Permet la dfinition d'un texte sous un nom
<!ENTITY nom "texte">

Rutilisable dans un document par simple appel &nom; Exemple


<?xml version="1.0"?> <!DOCTYPE exemple [ <!ELEMENT exemple (#PCDATA, important)> <!ELEMENT important (#PCDATA)> <!ENTITY cie "Les Vignerons Runis"> <!ENTITY imp "<important>Attention!</important>"> ]> <exemple> &cie; &imp; </exemple>
DTD
Tarak CHAARI - Dpt Tlcommunications XML - 53

Quelques rgles d'criture


Modularit
dfinir dans des entits spares les parties rutilisables

Prcdence
Regrouper les dclarations d'entits en tte

Abstraction
Utiliser des entits pour les modles de contenus

Spcificit
viter les DTD trop gnrales

Simplicit
Dcouper les DTD trop complexes
DTD
Tarak CHAARI - Dpt Tlcommunications XML - 54

DTD: Exercice (Catalogue de films)


On se propose de dfinir un format XML de stockage dun catalogue de films sur DVD. Le catalogue comprend un ensemble de fiches de films Chaque fiche comprend:
Un numro unique Le titre du film Un ou plusieurs ralisateurs Un ou plusieurs diteurs Les acteurs principaux Le genre du film (comdie, horreur, action) (en option) Un commentaire optionnel qui prsente brivement lhistoire du film Un lien ventuel vers le site du film
Tarak CHAARI - Dpt Tlcommunications XML - 55

DTD: Exercice (Catalogue de films)


<?xml version="1.0" encoding="ISO-8859-1"?> <!--premier niveau: cataloque --> <!ELEMENT cataloguedvd (fiche)*> <!--deuxime niveau: fiche --> <!ELEMENT fiche (titre, technique,commentaire?,internet?)> <!ATTLIST fiche genre (Horreur|Action|comdie|inconnu) #IMPLIED numero CDATA #REQUIRED> <!--troisime niveau: sous lments de fiche --> <!ELEMENT titre (#PCDATA)> <!ELEMENT commentaire (#PCDATA)> <!ELEMENT internet (#PCDATA)> <!ELEMENT technique (realisateur+,editeur+,acteur*)> <!--quatrime niveau: sous lments de technique --> <!ELEMENT realisateur (#PCDATA)> <!ELEMENT editeur (#PCDATA)> <!ELEMENT acteur (#PCDATA)>
Tarak CHAARI - Dpt Tlcommunications XML - 56

Insuffisance des DTD


Pas de types de donnes part du texte (#PCDATA) Expression de cardinalits limite (?, * et +) Syntaxe spcifique (pas XML)
difficile interprter difficile traduire en schma objets

Propositions de complments
XML-schema du W3C
DTD
Tarak CHAARI - Dpt Tlcommunications XML - 57

XML Schma
Un schma d'un document dfinit:
les lments possibles dans le document les attributs associs ces lments la structure du document et les types de donnes

Le schma est spcifi en XML


pas de nouveau langage balisage de dclaration utilise un espace de nom xs: (ou xsd:)

Prsente de nombreux avantages


types de donnes personnaliss extensibilit par hritage et ouverture analysable par un parseur XML standard
Schema
Tarak CHAARI - Dpt Tlcommunications XML - 58

Objectifs des schmas


Reprendre les acquis des DTD
Plus riche et complet que les DTD

Permettre de typer les donnes


Elments simples et complexes Attributs simples

Permettre de dfinir des contraintes


Existence obligatoire ou optionnelle Domaines de valeurs, cardinalits, rfrences Patterns, ...

S'intgrer la nbuleuse XML


Espace de noms Structure d'arbre logique
Schema
Tarak CHAARI - Dpt Tlcommunications XML - 59

Les types XML


La base dun schma XML: llment
<xs:element name="" type=""/>

Un lment peut avoir un type:


Simple si sa valeur a un type prdfini en XML-SCHEMA (xs:string, xs:int, xs:decimal, xs:double) ou une extension de ces types Complexe sil contient des sous lments ou sil comporte un attribut
xs:all tous les lments doivent exister (peu importe lordre) xs:choice un des lments doit exister xs:sequence tous les lments doivent exister dans lordre spcifi

Tarak CHAARI - Dpt Tlcommunications

XML - 60

Modles de contenu et types


Quatre catgories de modles de contenu

Deux catgories de types de donnes: simple et complexe

Tarak CHAARI - Dpt Tlcommunications

XML - 61

Les types simples


string
Confirm this is electric

ID
"A212"

byte
-1, 126

IDREF
"A212"

integer
-126789, -1, 0, 1, 126789

IDREFS
"A212" "B213"

positiveInteger
1, 126789

negativeInteger
-126789, -1

anyURI
http://www.example.com/e1.html#5

hexBinary
0FB7

language
en-GB, en-US, fr

int
-1, 126789675

dateTime
1999-05-31T13:20:00.000-05:00

unsignedInt
0, 1267896754

Et beaucoup dautres
Short, long, float

boolean
true, false 1, 0

date
1999-05-31

Schema

Tarak CHAARI - Dpt Tlcommunications

XML - 62

Les types complexes


Dfinition d'objets complexes
<sequence> : collection ordonne d'lments typs <all> : collection non ordonne d'lments typs <choice>: choix entre lments typs

Exemple
<xs:complexType name="AddresseFR"> <xs:sequence> <xs:element name="nom" type="xs:string"/> <xs:element name="rue" type="xs:string"/> <xs:element name="ville" type="xs:string"/> <xs:element name="codep" type="xs:decimal"/> </xs:sequence> <xs:attribute name="pays" type="xs:NMTOKEN" fixed="FR"/> </xs:complexType>
Schema
Tarak CHAARI - Dpt Tlcommunications XML - 63

Hritage de types
Dfinition de sous-types Exemple dextension : <xs:complexType name="AdressePays"> par hritage
Par extension : ajout d'informations Par restriction : ajout de contraintes <xs:complexContent> <xs:extension base="Adresse"> <xs:sequence> <xs:element name="pays type="string"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType>

Possibilit de contraindre la drivation

Schema

Tarak CHAARI - Dpt Tlcommunications

XML - 64

Les patterns
Contraintes sur type simple prdfini Utilisation d'expression rgulires
Similaires celles de Perl

Exemple de restriction
<xs:simpleType name="num5"> <xs:restriction base="xs:string"> <xs:pattern value="\d{5}"/> </xs:restriction> </xs:simpleType> Autres facettes de restriction - xs:mininclusive, xs:maxexclusive, xs:enumeration, xs:length
Tarak CHAARI - Dpt Tlcommunications XML - 65

Schema

Rutilisation de types
Type simple avec extension <xs:simpleType name="num5"> <xs:restriction base="xs:string"> <xs:pattern value="\d{5}"/> </xs:restriction> </xs:simpleType> Type complexe (squence) <xs:element name="livre"> <xs:complexType> <xs:sequence> <xs:element name="Titre" type="xs:string"/> <xs:element name="Auteur" type="xs:string"/> <xs:element name="ISBN" type="num5"/> </xs:sequence> </xs:complexType> </xs:element>

Tarak CHAARI - Dpt Tlcommunications

XML - 66

Les occurences
Une bibliothque contient au moins un livre
<xs:element name="biblio"> <xs:complexType> <xs:sequence> <xs:element ref="livre" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element>

Tarak CHAARI - Dpt Tlcommunications

XML - 67

Les attributs 1/2


Les lments contenu simple avec attributs
<titre id="RF525">La bible de XML</titre> <xs:complexType name="titleWithID"> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="id" type="xs:ID"/> </xs:extension> </xs:simpleContent> </xs:complexType>
Tarak CHAARI - Dpt Tlcommunications XML - 68

Les attributs 2/2


Les lments contenu complexe avec attributs
<traduction langue="allemand" dateTraduction="2003-12-01"> <traducteur>Michael</traducteur> </traduction>
<xs:element name="traduction" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="traducteur" type="xs:string" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="langue" use="required" type="xs:string"/> <xs:attribute name="dateTraduction" use="optional" type="xs:date"/> </xs:complexType> </xs:element>
Tarak CHAARI - Dpt Tlcommunications XML - 69

Groupage dlments
<xs:group name="TitreAuteurISBN"> <xs:sequence> <xs:element name="Titre" type="xs:string"/> <xs:element name="Auteur" type="xs:string"/> <xs:element name="ISBN" type="num5"/> </xs:sequence> </xs:group> <xs:element name="livre"> <xs:complexType> <xs:sequence> <xs:group ref="TitreAuteurISBN"/> <xs:element ref="traduction"/> </xs:sequence> </xs:complexType> </xs:element>
Tarak CHAARI - Dpt Tlcommunications XML - 70

Rfrence un Schma XML


Rfrence sans espace de noms

Rfrence avec espace de noms

Schema

Tarak CHAARI - Dpt Tlcommunications

XML - 71

Bilan DTD et Schma


Les DTD dfinissent la grammaire des documents Elles sont de plus en plus souvent remplaces par des schmas Le standard XML-Schma est un peu complexe
Une solution intermdiaire entre les DTD et les Schmas http://www.relaxng.org RELAX est en cours de standardisation ISO
DTD et Schema
Tarak CHAARI - Dpt Tlcommunications XML - 72

XML: eXtensible Markup Language Partie 3:

Prsentation et transformations de documents


Tarak CHAARI - Dpt Tlcommunications XML - 73

Formatage de document XML


Un document et sa DTD ou schma ne donnent pas dindications sur sa reprsentation.
Une description supplmentaire est ncessaire:
DSSSL
Document Style Semantics and Specification language

CSS
Cascading Style Sheets

XSL
eXtensible Stylesheet Language

Tarak CHAARI - Dpt Tlcommunications

XML - 74

Cascading Style Sheets (CSS)


Recommandation W3C (CSS1: 1996, CSS2: 1998) Sapplique HTML et XML Support approximatif par les navigateurs
Voir http://www.richinstyle.com/bugs/table.html Meilleurs support dans Mozilla et IE6

Principes
Cascade Correspondance dlments (slecteurs)
Tarak CHAARI - Dpt Tlcommunications XML - 75

CSS: Syntaxe
Attachement dune feuille de style un document
<xml-stylesheet type="text/css" href="livre.css"?>

Syntaxe gnrale
Slecteur {proprit: valeur; proprit: valeur;}

Slecteur
Voir http://www.w3.org/TR/REC-CSS2/selector.html
el el1 el2 el [att=foo ] el:hover el:first-line Les lments el Les lments el2 descendants de el1 Les lments el contenant un attribut att de valeur foo Un lment el lorsquil est survol par la souris La premire ligne dun lment el

Tarak CHAARI - Dpt Tlcommunications

XML - 76

CSS: proprits
Mesure des longueurs
Mesure relatives: em, ex, %
font-size: 1.2em; (1.2 * la taille de llment parent) line-height: 3ex; (3 * la taille dune minuscule)

Mesures absolues: px, pt, mm, cm

Couleurs
Prdfinis: black, blue, green, maroon, yellow, Numriques: #rrvvbb, rgb (n, n, n)

Exemple
texte { font-size: 1.2em; line-height: 3ex; }

Tarak CHAARI - Dpt Tlcommunications

XML - 77

CSS: proprits usuelles

Tarak CHAARI - Dpt Tlcommunications

XML - 78

Proprit

CSS: Exemple (extrait)


Valeur

slecteur

instruction

Tarak CHAARI - Dpt Tlcommunications

XML - 79

Faiblesses de CSS
CSS a t initialement prvu pou la prsentation des documents HTML Mme dfauts que HTML
- Syntaxe non modifiable et non extensible - Syntaxe difficile normaliser - Difficults pour trouver des lments
Tarak CHAARI - Dpt Tlcommunications XML - 80

XPath: adressage dans un document XML


Identification de nuds dans un document XML Base du langage de transformation XSLT et des pointeurs XLink Syntaxe: chemin dans larborescence du document
slecteur/slecteur/slecteur La syntaxe gnrale dun slecteur: lment[prdicat]

Exemples:
image [@imgsrc=joconde.jpg] /livre/listeEmprunts/emprunt[2]/sortie
Tarak CHAARI - Dpt Tlcommunications XML - 81

XSL: eXtensible style sheet Language


Description du formatage appliquer un document XML Compos de deux sous-ensembles

Tarak CHAARI - Dpt Tlcommunications

XML - 82

XSLT: XSL transformation


Langage de transformation dun arbre XML dans un autre
Restructuration Gnration (indexes, tables, )

Recommandation W3C depuis 1999


http://www.w3.orgTR/1999/REC-xslt-19991116

Transformation possible ct client ou ct serveur


Ct client
Support intgr dans IE (aprs mise jour de MSXML dans IE5) En utilisant un formateur XML externe via javascript (ActiveX)

Ct serveur
En invoquant un formateur par CGI, PHP ou ASP En invoquant un formateur programm (ex: Saxon, Xalan) En utilisant un cadre de publication XML ( ex: Cocoon)
Tarak CHAARI - Dpt Tlcommunications XML - 83

XSLT: principes gnraux


Une feuille XSLT est un document XML <xsl-stylesheet xmlns:xsl=http://www.w3.org/1999/XSL/Transform> </xsl-stylesheet>

Ensemble de rgles

Slection dlments et description de rendu produire en sortie

Tarak CHAARI - Dpt Tlcommunications

XML - 84

Rgles XSL: slection


Syntaxe XPath par rapport au nud courant

Utilisation de llment <xsl: template match=selecteur>


<xsl: template match="para"> <./xsl: template> <xsl: template match="book[index] "> <./xsl: template> <xsl: template match="book[@title=Moby Dick] "/chapter>

Rgles nommes
<xsl: call-template name="format-date">

<xsl:template name="format-date"></xsl:template>

Tarak CHAARI - Dpt Tlcommunications

XML - 85

Rgles XSL: production


Rptition
<xsl: template match="ListeEmprunt"> <table> <tr><th>Emprunteur</th> <th>sortie<th><th>Retour</th> </tr> <xsl:for-each select="emprunt"> <tr><td><xsl:value-of select="emprunteur"/></td></tr> </xsl:for-each> </table> </xsl: template>

Conditions
<xsl: if test="condition"> </xsl: if > <xsl: choose> <xsl: when test="condition" > </xsl: when> </xsl: choose>
Tarak CHAARI - Dpt Tlcommunications XML - 86

Exemple XSLT(1/4):
Document XML dorigine

Tarak CHAARI - Dpt Tlcommunications

XML - 87

Exemple XSLT(2/4):
feuille de style

Tarak CHAARI - Dpt Tlcommunications

XML - 88

Exemple XSLT(2/4):
feuille de style (suite)

Tarak CHAARI - Dpt Tlcommunications

XML - 89

Exemple XSLT(2/4):
document produit

Tarak CHAARI - Dpt Tlcommunications

XML - 90

XML: eXtensible Markup Language Partie 4:

Programmation en utilisant XML

Tarak CHAARI - Dpt Tlcommunications

XML - 91

XML et langages de programmation


Comment rsoudre le problme de la distance entre XML et les programmes objets? Les services sont souvent programms en langage objet: Java, C++, C#, VB, PHP ... XML
les messages XML doivent tre traduits en objets analyseurs XML ou parseurs (terme technique utilis) diffrents niveau d'interfaces :
Flux d'vnements (SAX) Traduction en objet gnriques (DOM)

Serveurs d'applications

Tarak CHAARI - Dpt Tlcommunications

XML - 92

Les parseurs XML


SAX (Simple API for XML)
Dveloppement communautaire http://sax.sourceforge.net

DOM (Document Object Model)


Recommandation W3C http://www.w3.org/DOM/

JAXP (Java API for XML Processing)


Dveloppement communautaire SUN http://java.sun.com/xml/jaxp Couche dabstraction de SAX, DOM et XSLT indpendante de limplmentation XML et JAVA = un couple parfait
Tarak CHAARI - Dpt Tlcommunications XML - 93

SAX: Simple API for XML


SAX (Simple API for XML)
modle simplifi d'vnements dvelopp par un groupe indpendant.

Types d'vnement :
dbut et fin de document ; dbut et fin d'lments ; attributs, texte, .

Nombreux parseurs publics


XP de James Clark, Aelfred, Saxon MSXML3 de Microsoft Xerces de Apache JAXP de SUN
SAX
Tarak CHAARI - Dpt Tlcommunications XML - 94

SAX: Principe de fonctionnement


Evnement startDocument Mthodes utilisateur

Document XML

Stream XML

Parser

Evnement startElement

. Evnement endDocument

Default Handler

SAX

Tarak CHAARI - Dpt Tlcommunications

XML - 95

Les mthodes essentielles de DefaultHandler


XMLReader
setContentHandler setErrrorHandler parse

ErrorHandler
fatalError error warning

ContentHandler

SAX

EntityResolver
resolveEntity

startDocument endDocument startElement endElement characters

Tarak CHAARI - Dpt Tlcommunications

XML - 96

Default Handler
Principales mthodes:

Tarak CHAARI - Dpt Tlcommunications

XML - 97

Exemple SAX
<personne> <nom> Cover </nom> <prenom> Harry </prenom> <adresse> <rue> Stendhal </rue> <ville> Paris </ville> </adresse> </personne> startDocument () startElement (personne) startElement (nom) characters (Cover) endElement (nom) startElement (prenom) characters (Harry) endElement (prenom) startElement (adresse) startElement (rue) characters (Stendhal) endElement (rue) startElement (ville) characters (Paris) endElement (ville) endElement (adresse) endElement (personne) endDocument ()
XML - 98

Tarak CHAARI - Dpt Tlcommunications

SAX: exemple dutilisation (Xerces)

Tarak CHAARI - Dpt Tlcommunications

XML - 99

DOM: Document Object Model


Standard W3C fait pour HTML et XML Structure d'objets pour reprsenter un document
Rsultat d'un "parser" Arbre d'objets relis entre eux

Interface objet pour naviguer dans un document


Oriente objet Peut tre utilise en:
Java, C++ C#, VB Python, PHP
Tarak CHAARI - Dpt Tlcommunications XML - 100

Principaux parseurs DOM


Document XML

Xerces MSXML JDOM JAXP J2EE

Apache (Java, C++) Microsoft Jason Hunter Sun, ...


Arbre DOM API DOM Parseur DOM

(libre)

Application

DOM

Tarak CHAARI - Dpt Tlcommunications

XML - 101

Exemple d'arbre DOM


Document NodeList Element <Guide> Racine du document

NodeList <Restaurant>

Element

<Guide>
<Restaurant id="R1">Le meilleur restaurant</Restaurant>

NamedNodeMap Attr NodeList Text Le meilleur restaurant Id="R1"

</Guide>

DOM

Tarak CHAARI - Dpt Tlcommunications

XML - 102

Lecture dun document XML avec DOM

Tarak CHAARI - Dpt Tlcommunications

XML - 103

Org.w3c.dom.Document
Interface qui reprsente une arborescence XML

Tarak CHAARI - Dpt Tlcommunications

XML - 104

Org.w3c.dom.Element
Interface reprsentant un lment XML
String getAttribute(String name) Retrieves an attribute value by name. Attr getAttributeNode(String name) Retrieves an attribute node by name. NodeList getElementsByTagName(String name) Returns a NodeList of all descendant Elements with a given tag name, in the order in which they are encountered in a preorder traversal of this Element tree. String getTagName() The name of the element. void removeAttribute(String name) Removes an attribute by name. void setAttribute(String name, String value) Adds a new attribute.

Tarak CHAARI - Dpt Tlcommunications

XML - 105

Org.w3c.dom.Attr
Interface reprsentant un attribut XML
String getName() Returns the name of this attribute. Element getOwnerElement() The Element node this attribute is attached to or null if this attribute is not in use. boolean getSpecified() If this attribute was explicitly given a value in the original document, this is true; otherwise, it is false. String getValue() On retrieval, the value of the attribute is returned as a string. void setValue(String value) On retrieval, the value of the attribute is returned as a string.

Tarak CHAARI - Dpt Tlcommunications

XML - 106

Exemple d'utilisation de DOM


Public class ExempleDOM public static main (String argc[]) throws IOException, DOMExcetion {XMLDocument xmlDoc = new XmlDocument(); // creation des nuds ElementNode nom = (ElementNode) xmlDoc.createElement("nom"); ElementNode prenom = (ElementNode) xmlDoc.createElement("prenom"); ElementNode nomfam = (ElementNode) xmlDoc.createElement("nomfam"); // creation de l'arbre xmlDoc.appendChild(nom); nom.appenChild(prenom); prenom.appendChild(xmlDoc.createTextNode("Jean"); nom.appenChild(nomfam); nomfam.appendChild(xmlDoc.createTextNode("Dupont"); // positionnement d'un attribut nom.setAttribute("ville", "Paris"); // sortie System.exit(0); } }

Document: <nom ville ="Paris"> <prenom> Jean </prenom> <nomfa> Dupont </nomfa> </nom>

DOM

Tarak CHAARI - Dpt Tlcommunications

XML - 107

SAX et DOM
SAX DOM

Rapide Peu gourmand en mmoire

Accs alatoire au document Vue hirarchique du document

Accs squentiel Unidirectionnel au document

Permet de construire/modifier un document

Gourmand en mmoire
Tarak CHAARI - Dpt Tlcommunications XML - 108

Outils XML
Editeurs
XML SPY

Browsers
Mozilla

Convertisseurs
Xalan

Parseurs
SAX, JDOM

Serveurs XML
Cocoon (cadre de publication XML)
Tarak CHAARI - Dpt Tlcommunications XML - 109

Pour finir
QUESTION:
Quest ce quon peut faire avec XML?

REPONSE:
Imagination is more important than knowledge
Albert Einstein

Tarak CHAARI - Dpt Tlcommunications

XML - 110

Rfrences
Elliotte Rusty Harold, XML bible, 2nd Edition, Wiley, 2001, 1206 pages. Alain michard, XML: langage et applications, Eyrolles, 2000 Support de cours en ligne de George Gardarin, http://perso.orange.fr/georges.gardarin/Cours2003.htm T. Bray et.al. (ed.). Extensible Markup Language (XML) 1.0. World Wide Web Consortium (W3C), February 1998. http://www.w3.org/TR/REC-xml B. McLaughlin. Java and XML. OReilly and Associates, Sebastopol, 2000

Tarak CHAARI - Dpt Tlcommunications

XML - 111