XML et ses applications XML et ses applications...

177
XML et ses XML et ses applications applications [email protected] [email protected] [email protected] [email protected] r r

Transcript of XML et ses applications XML et ses applications...

Page 1: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

XML et ses applicationsXML et ses applications

[email protected]@sophia.inria.fr

[email protected]@sophia.inria.fr

Page 2: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 2

XML et ses applicationsXML et ses applications

GénéralitésGénéralités

– HistoriqueHistorique

– Naissance de XMLNaissance de XML

– Déploiement d'une application XMLDéploiement d'une application XML

Page 3: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 3

GénéralitésGénéralités Le web permet de Le web permet de transmettre n'importe quel type de transmettre n'importe quel type de

documentdocument entre deux ordinateurs reliés au réseau entre deux ordinateurs reliés au réseau Internet ou à un réseau d'entreprise.Internet ou à un réseau d'entreprise.

Hypertext Markup Language (HTML)Hypertext Markup Language (HTML) est le format est le format "natif" qui a contribué au succès du web"natif" qui a contribué au succès du web

HTML est utilisé comme format de HTML est utilisé comme format de donnéesdonnées..

Page 4: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 4

Généralités (2)Généralités (2) L'importance grandissante du web, et le fait que HTML ne L'importance grandissante du web, et le fait que HTML ne

soit pas forcément adapté au transfert de certains types soit pas forcément adapté au transfert de certains types de données, a conduit les ingénieux ingénieurs a créer de données, a conduit les ingénieux ingénieurs a créer eXtensible Markup Language (XML) pour supporter eXtensible Markup Language (XML) pour supporter le passage à l'échellele passage à l'échelle..

Le succès de XML fait qu'il est employé pour un nombre Le succès de XML fait qu'il est employé pour un nombre de plus en plus important d'applications.de plus en plus important d'applications.

De nombreux formats complémentaires ont émergé De nombreux formats complémentaires ont émergé depuis la création de XML en 1997.depuis la création de XML en 1997.

Page 5: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 5

Généralités (3)Généralités (3) Ce cours fait le tour des concepts autour de XML et Ce cours fait le tour des concepts autour de XML et

présente XML et les applications dans lesquelles il est présente XML et les applications dans lesquelles il est utilisé.utilisé.

Le document de référence concernant XML est la Le document de référence concernant XML est la recommandation XML 1.0 publiée par le World Wide Web recommandation XML 1.0 publiée par le World Wide Web Consortium (W3C).Consortium (W3C).

en Anglais : http://www.w3.org/TR/2000/REC-xml-en Anglais : http://www.w3.org/TR/2000/REC-xml-2000100620001006

en Français : http://babel.alis.com/web_ml/xml/REC-en Français : http://babel.alis.com/web_ml/xml/REC-xml.fr.htmlxml.fr.html

Page 6: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 6

Le webLe web

Page 7: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 7

Le web (2)Le web (2) Une application sur le poste utilisateur demande des Une application sur le poste utilisateur demande des

documents à une machine distante, le serveur, à une documents à une machine distante, le serveur, à une adresse (URL) adresse (URL) http://www.inria.fr (via le transport HTTP)http://www.inria.fr (via le transport HTTP)

Le serveur renvoit un document HTML à l’application qui Le serveur renvoit un document HTML à l’application qui l ’affiche à l ’écran en fonction des balisesl ’affiche à l ’écran en fonction des balisesHTML:HTML: Cours <b>XML</b>Cours <b>XML</b>Donne:Donne: Cours Cours XMLXML ou:ou: Cours *XML* Cours *XML*

Page 8: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 8

HTMLHTML Un document HTML est composé de briques (les balises) Un document HTML est composé de briques (les balises)

contenant du textecontenant du texte Les balises HTML décrivent la présentation souhaitée, Les balises HTML décrivent la présentation souhaitée,

pondérée par les capacités du navigateurpondérée par les capacités du navigateur Les balises sont prédéfinies : il y en a un nombre limité et Les balises sont prédéfinies : il y en a un nombre limité et

fixe fixe (pas d ’éléments nouveaux possibles)(pas d ’éléments nouveaux possibles)

Page 9: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 9

HTML (2)HTML (2) HTML est de l'embedded text markup (marquage texte HTML est de l'embedded text markup (marquage texte

inclus), car:inclus), car:– Les informations sont inclues dans le texte Les informations sont inclues dans le texte

Ex. : ceci est très <strong>important</strong>Ex. : ceci est très <strong>important</strong>– embeddedembedded <strong>important</strong> <strong>important</strong>

– texttext ceci est très ...important…. ceci est très ...important…. – markupmarkup <strong>...</strong> <strong>...</strong>

Page 10: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 10

HistoriqueHistorique1960~GMLGraphics Markup Language, IBM1986SGMLStandard ISOMeta-language flexible, permet de définir des languages demarkupUtilisations industrielles lourdes (catalogues, docstechniques) + doc Linux1992HTMLBase du WEB (CERN, Genève, Tim Berners-Lee) Dialecte de SGMLOct1994W3C créé (MIT, Boston) Juin1996Groupe de travail "SGML-Light"(W3C, Jon Bosak)Nov1996Document de travail XML (W3C)Mar1997Microsoft supporte XMLAnti-java ?Format retenu pour ses Channels pour le "push"Fév 1998XML 1.0Recommandation du W3C (=~ norme)Avr1998Support natif annoncé dans les browsers (IE5, NS6), Office2000Sep1998Groupe de travail W3C XML splitté en 5 groupesToutes les nouvelles normes W3C seront en XMLJan1999XML namespaces1999-2000Explosion des usages (web, databases...), XML partout!... et de la complexité (toutes les normes en retard)200128 groupes de travail XML au W3C !!! Dec2001Working draft XML 1.1Mise à jour de la recommandation avec les remarquespubliées dans l'errata sur XML

Page 11: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 11

Le W3CLe W3C

BesoinsBesoins Organisation du W3COrganisation du W3C Processus de décisionProcessus de décision ButsButs

Page 12: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 12

BesoinsBesoins

Peur de la fragmentationPeur de la fragmentationLes éditeurs ajoutent des balises propriétaires à HTML -> Les éditeurs ajoutent des balises propriétaires à HTML -> problèmes d ’incompatibilitéproblèmes d ’incompatibilité

Guide pour les évolutionsGuide pour les évolutions Arbitre neutreArbitre neutre

Page 13: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 13

Organisation du W3COrganisation du W3C

Le World Wide Web Consortium est Le World Wide Web Consortium est une organisation à but non lucratif une organisation à but non lucratif

Dirigé par Tim Berners-Lee, Dirigé par Tim Berners-Lee, l'inventeur du web.l'inventeur du web.

500 membres font partie du 500 membres font partie du consortium (sociétés,…)consortium (sociétés,…)

60 personnes travaillent pour le W3C60 personnes travaillent pour le W3C

Page 14: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 14

Organisation du W3C (2)Organisation du W3C (2)

4 Domaines:4 Domaines:– ArchitectureArchitecture

HTTP, XML, URL/URI, DOM, XML Protocol, JigsawHTTP, XML, URL/URI, DOM, XML Protocol, Jigsaw

– User InterfaceUser InterfaceHTML, SVG, PNG, Device independence, Amaya, HTML, SVG, PNG, Device independence, Amaya, Internationalisation, MathML, Multimedia (SMIL), CSS, Internationalisation, MathML, Multimedia (SMIL), CSS, XSL, VoixXSL, Voix

– Technology & societyTechnology & societyCommerce électronique, Confidentialité, Web Commerce électronique, Confidentialité, Web Sémantique, XML encryption, XML SignatureSémantique, XML encryption, XML Signature

– WAI: Web Accessibility InitiativeWAI: Web Accessibility InitiativePolitique et techniquePolitique et technique

Page 15: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 15

Processus de décisionProcessus de décision

Qui: Qui: – mailing listesmailing listes– membresmembres– working groupsworking groups– Advisory BoardAdvisory Board– DirecteurDirecteur

Page 16: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 16

Processus de décision (2)Processus de décision (2)

Où: Où: – Conférences (WWW10), Conférences (WWW10), – Workshops, Workshops, – Working Groups MeetingsWorking Groups Meetings

Page 17: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 17

Processus de décision (3)Processus de décision (3)

Comment : Comment : – Working drafts,Working drafts,– Last Call Working draft,Last Call Working draft,– Candidate recommendation,Candidate recommendation,– Proposed recommendation,Proposed recommendation,– RecommendationRecommendation

Page 18: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 18

ButsButs

Le W3C a pour but d’harmoniser le Le W3C a pour but d’harmoniser le développement des langages développement des langages utilisés sur le webutilisés sur le web

7 axes ont été définis7 axes ont été définis

Page 19: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 19

Accès UniverselAccès Universel

Indépendance par rapport au Indépendance par rapport au navigateur (device/user-agent). navigateur (device/user-agent). Ex : mobile, vocal,...Ex : mobile, vocal,...

InternationalisationInternationalisationSurfer quelle que soit la langue, le pays...Surfer quelle que soit la langue, le pays...

Page 20: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 20

Web SémantiqueWeb Sémantique

Séparation entre la forme Séparation entre la forme (présentation) et le fond (données)(présentation) et le fond (données)

Permet d ’automatiser le traitement Permet d ’automatiser le traitement de données par programmationde données par programmation

Page 21: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 21

ConfianceConfiance

SécuritéSécuritéTransfert de données,… (XML Security)Transfert de données,… (XML Security)

Respect de la vie privéeRespect de la vie privéeRéflexions sur ce qu ’il faut faire/ne pas faire avec les Réflexions sur ce qu ’il faut faire/ne pas faire avec les données sur les utilisateurs (Platform for Privacy données sur les utilisateurs (Platform for Privacy Preferences)Preferences)

AuthentificationAuthentificationIdentification des serveurs, des utilisateursIdentification des serveurs, des utilisateurs

Page 22: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 22

InteropérabilitéInteropérabilité

Normes communes aux OS, Normes communes aux OS, langages de programmation, langages de programmation, browsers…browsers…

Possibilité de relire les documents Possibilité de relire les documents produits par des outils de différents produits par des outils de différents constructeursconstructeurs

Page 23: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 23

EvolutivitéEvolutivité

Prévoir le futurPrévoir le futur Créer des normes compatiblesCréer des normes compatibles

(réutilisation de l ’existant)(réutilisation de l ’existant)

Page 24: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 24

DécentralisationDécentralisation

Besoin de répartir les tâches entre Besoin de répartir les tâches entre les différents acteursles différents acteursExemple : Traitements applicatifs sur le serveur, Exemple : Traitements applicatifs sur le serveur, présentation sur le clientprésentation sur le client

Pour passer à l'échellePour passer à l'échelle

Page 25: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 25

CréativitéCréativité

Pour laisser libre les créateurs de Pour laisser libre les créateurs de contenucontenuMultimédia, Multimédia, Audio, Audio, Animations,Animations,3D...3D...

Intégration facile des nouvelles Intégration facile des nouvelles technologies/medias dans le cadre technologies/medias dans le cadre commun XML (SMIL...)commun XML (SMIL...)

Page 26: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 26

ConcurrenceConcurrence

Standards propriétaires Standards propriétaires – Flash, Imode (téléphones portables Flash, Imode (téléphones portables

japonais != WAP), …japonais != WAP), … Autres organisationsAutres organisations

– ISO, ECMA, IETF, OASIS…ISO, ECMA, IETF, OASIS…

Page 27: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 27

Naissance de XMLNaissance de XML

2 acteurs :2 acteurs :– SGML:SGML:

Marché confidentielMarché confidentiel Besoins de valoriser le savoir acquisBesoins de valoriser le savoir acquis

– W3CW3C Besoin de mieux structurer le web : Besoin de mieux structurer le web :

séparation forme/contenu,...séparation forme/contenu,...

Page 28: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 28

Naissance de XML (2)Naissance de XML (2)

But commun W3C/SGML :But commun W3C/SGML :– Faire évoluer le web pour utiliser un Faire évoluer le web pour utiliser un

successeur de SGMLsuccesseur de SGML XML = SGML--

Page 29: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 29

Déploiement d'une Déploiement d'une application XMLapplication XML

Plusieurs solutions existent pour déployer Plusieurs solutions existent pour déployer XMLXML– envoi des données XML brutes au navigateur, envoi des données XML brutes au navigateur,

qui efffectue alors les transformations qui efffectue alors les transformations nécessaires (en HTML, en image, en voix…) nécessaires (en HTML, en image, en voix…) avant de présenter l'information à l'utilisateuravant de présenter l'information à l'utilisateur

dans le browser (ex.: XML + style)dans le browser (ex.: XML + style) dans une application dans le browser (ex.: applet dans une application dans le browser (ex.: applet

java, javascript/DHTML, flash...)java, javascript/DHTML, flash...)

Page 30: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 30

Déploiement d'une Déploiement d'une application XML (2)application XML (2)

– transformation des données sur le serveur transformation des données sur le serveur avant envoi dans un format directement avant envoi dans un format directement affichable par le navigateur de l'utilisateuraffichable par le navigateur de l'utilisateur

scripts: perl, python, jsp, xslt…scripts: perl, python, jsp, xslt… template engines: cocoon, MyXML, enhydra, template engines: cocoon, MyXML, enhydra,

webmacro, Freemarkerwebmacro, Freemarker moteurs sur bases de données: oracle, coldfusion…moteurs sur bases de données: oracle, coldfusion… XML frameworks: http://xmlsoftware.com/publishing/XML frameworks: http://xmlsoftware.com/publishing/

Page 31: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 31

Critères de design de XMLCritères de design de XML

Les objectifs de conception de XMLLes objectifs de conception de XML(extrait de la recommandation XML)(extrait de la recommandation XML)– 1.XML doit pouvoir être utilisé sans difficulté sur 1.XML doit pouvoir être utilisé sans difficulté sur

InternetInternet– 2.XML doit supporter une grande variété d'applications2.XML doit supporter une grande variété d'applications– 3.XML doit être compatible avec SGML3.XML doit être compatible avec SGML– 4.Il doit être facile d'écrire des programmes traitant les 4.Il doit être facile d'écrire des programmes traitant les

documents XML documents XML – 5.Le nombre d'options dans XML doit être réduit au 5.Le nombre d'options dans XML doit être réduit au

minimum, idéalement à aucuneminimum, idéalement à aucune

Page 32: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 32

Critères de design de XML (2)Critères de design de XML (2)

– 6.Les documents XML doivent être lisibles par l'homme 6.Les documents XML doivent être lisibles par l'homme et raisonnablement clairset raisonnablement clairs

– 7.La conception de XML devait être préparée 7.La conception de XML devait être préparée rapidementrapidement

– 8.La conception de XML doit être formelle et concise8.La conception de XML doit être formelle et concise– 9.Il doit être facile de créer des documents XML9.Il doit être facile de créer des documents XML– 10.La concision dans le balisage de XML est de peu 10.La concision dans le balisage de XML est de peu

d'importanced'importance(il est conseillé d ’être verbeux)(il est conseillé d ’être verbeux)

Page 33: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 33

XML par rapport à HTMLXML par rapport à HTML

Syntaxe plus stricteSyntaxe plus stricteValeur d ’attributs entre " Valeur d ’attributs entre " Balises toujours fermées (pas de <br> ni <img>)Balises toujours fermées (pas de <br> ni <img>)

Pas de balises prédéfiniesPas de balises prédéfiniesXML est un métalangageXML est un métalangage

Possibilité d ’utiliser ses propres balisesPossibilité d ’utiliser ses propres balises Gère tous les jeux de caractèresGère tous les jeux de caractères

Support Unicode 2/ISO-10646Support Unicode 2/ISO-10646

HTML = XML + Style HTML = XML + Style

Page 34: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 34

Document XMLDocument XML

Arbre de données

DTD (optionnelle)

Commentaires

Processing Instructions

Prologue

Page 35: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 35

ProloguePrologue

<?xml version="1.0" encoding="ISO-8859-1" <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>standalone="yes"?>

version: obligatoireversion: obligatoire encoding:encoding:

– unicode, unicode, – default: UTF-8default: UTF-8– peut prendre toute sorte de valeurs (voir Unicode)peut prendre toute sorte de valeurs (voir Unicode)– seul UTF-8 et UTF-16 est exigé des parseursseul UTF-8 et UTF-16 est exigé des parseurs– ex: EUC-JP, ISO-10646-UCS2...ex: EUC-JP, ISO-10646-UCS2...

Page 36: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 36

Prologue (2)Prologue (2)

standalone:standalone:– default: nodefault: no– yes veut dire qu'il n'y a pas de DTD,ou que la DTD yes veut dire qu'il n'y a pas de DTD,ou que la DTD

incluse est complète incluse est complète (n'en inclut pas d'externe)(n'en inclut pas d'externe)

Note: l'ordre des attributs est imposéNote: l'ordre des attributs est imposé

Page 37: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 37

ElémentsEléments Les documents XML sont composés d ’élémentsLes documents XML sont composés d ’éléments On appelle character data (CDATA) un mélange de texte On appelle character data (CDATA) un mélange de texte

et d ’éléments de balisageet d ’éléments de balisage– texte elements texte elements…texte elements texte elements…

elements: start-tag contents end-tagelements: start-tag contents end-tag contents est du character-datacontents est du character-data start-tag: <element-name attributs?>start-tag: <element-name attributs?> end-tag: </element-name>end-tag: </element-name> attribut: attribut-name = "valeur d'attribut"attribut: attribut-name = "valeur d'attribut"

ou attribut-name = `attribute value'ou attribut-name = `attribute value'

Page 38: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 38

Eléments (2)Eléments (2) Exemple :Exemple :

<movie<movie title="Star Trek: Insurrection" title="Star Trek: Insurrection" year="1998" year="1998" > > <actor name="Patrick Stewart"/> <actor name="Patrick Stewart"/> <actor name="Jonathan Frakes"/> <actor name="Jonathan Frakes"/> When the crew of the Enterprise learn ... When the crew of the Enterprise learn ...</movie></movie>

Page 39: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 39

Eléments (3)Eléments (3)

Les documents XML peuvent être représentés Les documents XML peuvent être représentés sous forme d ’arbresous forme d ’arbre

Page 40: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 40

Eléments (4)Eléments (4)

Un document a toujours un seul élément racineUn document a toujours un seul élément racine– <movies><movies>

<movie>Platoon</movie><movie>Platoon</movie><movie>Rambo</movie><movie>Rambo</movie>

</movies></movies>– Mauvais exemple :Mauvais exemple :

<movie>Platoon</movie><movie>Platoon</movie><movie>Ramboi</movie><movie>Ramboi</movie>

L ’ordre est importantL ’ordre est important– Platoon est vu avant RamboPlatoon est vu avant Rambo

Page 41: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 41

Eléments (5)Eléments (5)

Tous les éléments doivent être terminésTous les éléments doivent être terminés– <body><p>paragraph</p></body><body><p>paragraph</p></body>– mais pas <body><p>paragraph</body>mais pas <body><p>paragraph</body>

Un élément ne peut pas en chevaucher un autreUn élément ne peut pas en chevaucher un autre– <body><p></body></p> interdit !<body><p></body></p> interdit !

Forme alternative pour éléments videsForme alternative pour éléments vides– <hr/> (ou <hr />)<hr/> (ou <hr />)– <hr></hr><hr></hr>

Page 42: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 42

Noms d’élémentNoms d’élément

– (Lettre, _ ou :) + (lettres, chiffres ou _ . - )(Lettre, _ ou :) + (lettres, chiffres ou _ . - ) Ex : <Ge_Force3>Ex : <Ge_Force3>

(idem pour noms d'attributs)(idem pour noms d'attributs)

– Ne peut commencer par xmlNe peut commencer par xml Mauvais : <3Dfx> <Ge Force> <xmldecls>Mauvais : <3Dfx> <Ge Force> <xmldecls>

– Sensible Sensible à la casse la casse <Toto/> != <toto/><Toto/> != <toto/>

Page 43: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 43

AttributsAttributs

Un élément XML peut contenir des attributsUn élément XML peut contenir des attributs La valeur de l’attribut définit une La valeur de l’attribut définit une propriétépropriété de de

l’élémentl’élément Chaque attribut est Chaque attribut est uniqueunique L ’ordre des attributs est L ’ordre des attributs est non significatifnon significatif Les character data et valeurs d'attributs peuvent Les character data et valeurs d'attributs peuvent

contenir tous caractères sauf < et &contenir tous caractères sauf < et & Tout attribut doit avoir Tout attribut doit avoir une valeurune valeur

– Ex : <dl compact="compact">Ex : <dl compact="compact">– Mauvais : <dl compact> (HTML)Mauvais : <dl compact> (HTML)

Page 44: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 44

CommentairesCommentaires

<!-- commentaire... --> <!-- commentaire... --> Ne doivent pas contenir de -- (compatibilité Ne doivent pas contenir de -- (compatibilité

SGML)SGML) N'importe où dans character data (pas dans N'importe où dans character data (pas dans

balises)balises)

Page 45: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 45

Processing instructions (PIs)Processing instructions (PIs)

<? commandes pour les processeurs... ?> <? commandes pour les processeurs... ?> Les instructions de traitement indiquent aux Les instructions de traitement indiquent aux

programmes quel traitement appliquer au programmes quel traitement appliquer au documentdocument– Ex. : appliquer une feuille de style avec Cocoon :Ex. : appliquer une feuille de style avec Cocoon :

<?cocoon-process type="xslt"?><?cocoon-process type="xslt"?> N'importe où dans character data (pas dans N'importe où dans character data (pas dans

balises)balises)

Page 46: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 46

Sections CDATASections CDATA

<![CDATA[ le contenu... ]]><![CDATA[ le contenu... ]]>

Pour inclure du texte "en vrac" comme character Pour inclure du texte "en vrac" comme character datadata

Ne doit pas contenir ]]>Ne doit pas contenir ]]>

Interdit dans valeurs d'attributsInterdit dans valeurs d'attributs

Le tout en syntaxe non XMLLe tout en syntaxe non XML

– possibilité d ’utiliser <,&… dans une section CDATApossibilité d ’utiliser <,&… dans une section CDATA

– pas de vérification ni de la syntaxe par le processeur XMLpas de vérification ni de la syntaxe par le processeur XML

Page 47: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 47

Entités prédéfiniesEntités prédéfinies

Les caractères < > & '  " peuvent provoquer une Les caractères < > & '  " peuvent provoquer une erreur d’interprétation par le processeur XMLerreur d’interprétation par le processeur XML

Pour inclure les caractères < > & ' ", il faut les Pour inclure les caractères < > & ' ", il faut les échapper par des échapper par des références a des entitésréférences a des entités : :

<< &lt;&lt;>> &gt;&gt;&& &amp;&amp;‘ ‘  &apos;&apos;"" &quot;&quot;

Page 48: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 48

Well-formed, Valid, DTDWell-formed, Valid, DTD

Un document XML est dit well-Un document XML est dit well-formed s'il respecte la syntaxe XML.formed s'il respecte la syntaxe XML.

Il est dit valide si en plus il respecte Il est dit valide si en plus il respecte une grammaire optionnelle, la DTD une grammaire optionnelle, la DTD (Document Type Definition) (Document Type Definition)

Page 49: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 49

Déclaration du type de Déclaration du type de documentdocument

La DTD joue plusieurs rôles:La DTD joue plusieurs rôles:

– vérification de la grammairevérification de la grammaire

– paramétrage syntaxiqueparamétrage syntaxique

– abréviations, inclusions…abréviations, inclusions…

C ’est dans la DTD qu ’est décrit:C ’est dans la DTD qu ’est décrit:

– quels éléments seront utilisés dans le document, quels éléments seront utilisés dans le document,

– le type des éléments, le type des éléments,

– la structure des élémentsla structure des éléments

Page 50: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 50

Déclaration du type de Déclaration du type de document (2)document (2)

Dangers de la DTD:Dangers de la DTD:

– très complexe (90% de la spécification XML décrit les très complexe (90% de la spécification XML décrit les régles de conception des DTD)régles de conception des DTD)

– peu puissante (peu de typage, pas d'héritage, pas de peu puissante (peu de typage, pas d'héritage, pas de regexps)regexps)

– optionnelleoptionnelle

– pas en syntaxe XML !!!pas en syntaxe XML !!!

Mais supportée par beaucoup de programmesMais supportée par beaucoup de programmes

Page 51: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 51

Déclaration du type de Déclaration du type de document (3)document (3)

Pas de typage: on ne peux pas dire que le prix Pas de typage: on ne peux pas dire que le prix est de la forme $[0-9]+est de la forme $[0-9]+

Pas d'héritage: on ne peut pas "sous-classer" Pas d'héritage: on ne peut pas "sous-classer" des DTDsdes DTDs

Uniquement possibilité d’inclusionUniquement possibilité d’inclusion Pas d ’erreur si absence de DTDPas d ’erreur si absence de DTD Si une DTD est définie, tout le document doit la Si une DTD est définie, tout le document doit la

respecter (éléments & attributs)respecter (éléments & attributs) Semblable à des regular expressions sur Semblable à des regular expressions sur

éléments: , | + * ? ( )éléments: , | + * ? ( )

Page 52: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 52

DTD interne, publiqueDTD interne, publique Interne au documentInterne au document

– <!DOCTYPE nom_de_la_DTD [ ...définitions d ’éléments et <!DOCTYPE nom_de_la_DTD [ ...définitions d ’éléments et

d’attributs... ]>d’attributs... ]> Publique (connue par les programmes)Publique (connue par les programmes)

– <!DOCTYPE nom_de_la_DTD PUBLIC ID "URL" ><!DOCTYPE nom_de_la_DTD PUBLIC ID "URL" >– URL optionnelleURL optionnelle– Reconnaissance basée sur l'IDReconnaissance basée sur l'ID

Exemple:Exemple:<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN ’ "http://www.w3.org/TR/REC-html40/loose.dtd">Transitional//EN ’ "http://www.w3.org/TR/REC-html40/loose.dtd">

ID = '-//W3C//DTD HTML 4.01 Transitional//EN ’ID = '-//W3C//DTD HTML 4.01 Transitional//EN ’(reconnu par les programmes)(reconnu par les programmes)

Page 53: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 53

DTD externe, mixteDTD externe, mixte

Externe (inclusion)Externe (inclusion)<!DOCTYPE nom_de_la_DTD SYSTEM "URL" ><!DOCTYPE nom_de_la_DTD SYSTEM "URL" >– Les DTD externes peuvent faire accès au réseauLes DTD externes peuvent faire accès au réseau

Mixte: Interne + Externe (s'ajoutent, interne lue Mixte: Interne + Externe (s'ajoutent, interne lue avant externe)avant externe)<!DOCTYPE nom_de_la_DTD SYSTEM "URL" <!DOCTYPE nom_de_la_DTD SYSTEM "URL" [ ..définitions... ] > [ ..définitions... ] >

Page 54: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 54

Exemple de DTDExemple de DTD<!DOCTYPE [<!DOCTYPE [ <!-- DTD interne --> <!-- DTD interne -->

<!ELEMENT movie ( price?, actor+, abstract ) ><!ELEMENT movie ( price?, actor+, abstract ) ><!ATTLIST movie<!ATTLIST movie

title CDATA #REQUIREDtitle CDATA #REQUIREDprice CDATA "0">price CDATA "0">

<!ELEMENT actor EMPTY><!ELEMENT actor EMPTY><!ATTLIST actor <!ATTLIST actor

name CDATA #REQUIREDname CDATA #REQUIREDsex ( male | female ) "male" >sex ( male | female ) "male" >

<!ELEMENT abstract (#PCDATA) ><!ELEMENT abstract (#PCDATA) > ]> ]>

<movie title="Star Trek : Insurrection" price="$25" ><movie title="Star Trek : Insurrection" price="$25" > <actor name="Patrick Stewart"/> <actor name="Patrick Stewart"/> <actor name= "Marina Sirtis" sex="female"/> <actor name= "Marina Sirtis" sex="female"/> <abstract>When the crew of the Enterprise learn …</abstract> <abstract>When the crew of the Enterprise learn …</abstract>

</movie></movie>

Page 55: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 55

Déclaration d’élémentDéclaration d’élément

<!ELEMENT nom (content-model) ><!ELEMENT nom (content-model) > Définition d ’un élémentDéfinition d ’un élément On ne peut pas mixer texte et éléments pour la On ne peut pas mixer texte et éléments pour la

validation:validation:– (#PCDATA) ou (#PCDATA) ou – (#PCDATA | nom1 | nom2)*(#PCDATA | nom1 | nom2)*

ANY veut dire n'importe quel élémentANY veut dire n'importe quel élément

Page 56: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 56

Déclaration d ’attributsDéclaration d ’attributs

<!ATTLIST element-name (attribute-name value default) ... ><!ATTLIST element-name (attribute-name value default) ... > Définition d ’un attributDéfinition d ’un attribut value :value :

– CDATA : texte, sauf < &, et ` ou "CDATA : texte, sauf < &, et ` ou "– Enumerated Enumerated : ( male | female | other ) "male": ( male | female | other ) "male"– NMTOKEN : value doit obéir à la syntaxe des noms XMLNMTOKEN : value doit obéir à la syntaxe des noms XML– NMTOKENS : value = liste de nom XML séparés par espacesNMTOKENS : value = liste de nom XML séparés par espaces– ID : L ’attribut doit être unique dans le document (identifiant)ID : L ’attribut doit être unique dans le document (identifiant)

attention: problème lors de combinaisons de documentsattention: problème lors de combinaisons de documents– IDREF : Référence a l’identifiant (ID) d ’un autre élément (pas vérifié)IDREF : Référence a l’identifiant (ID) d ’un autre élément (pas vérifié)– ENTITY : doit être une entité (pointe vers des données)ENTITY : doit être une entité (pointe vers des données)– ENTITIES : plusieurs entités (sép. espaces)ENTITIES : plusieurs entités (sép. espaces)– NOTATION : type (utilisé pour filtrer expansion entités)NOTATION : type (utilisé pour filtrer expansion entités)– Enumerated NOTATION Enumerated NOTATION : plusieurs types: plusieurs types– Seuls CDATA et Enumerated sont utilisables en pratique.Seuls CDATA et Enumerated sont utilisables en pratique.

Page 57: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 57

Déclaration d’attributs (2)Déclaration d’attributs (2)

<!ATTLIST element-name (attribute-name value default) ... ><!ATTLIST element-name (attribute-name value default) ... > default:default:

– "valeur" : valeur par défaut si cet attribut est non "valeur" : valeur par défaut si cet attribut est non spécifiéspécifié

– #REQUIRED : attribut requis#REQUIRED : attribut requis– #IMPLIED : pas de défaut mis par le parseur, laisse #IMPLIED : pas de défaut mis par le parseur, laisse

l'application l'interprèterl'application l'interprèter– #FIXED : "value" doit être présent avec la bonne valeur#FIXED : "value" doit être présent avec la bonne valeur

Page 58: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 58

Entités généralesEntités générales Entité interneEntité interne

– DTD : <!ENTITY nop "a la vanille et a la fraise">DTD : <!ENTITY nop "a la vanille et a la fraise">– Document : Une glace &nop; SVP ! -> Une glace a la vanille Document : Une glace &nop; SVP ! -> Une glace a la vanille

et a la fraise SVP !et a la fraise SVP ! Entité externe parséeEntité externe parsée

– DTD: <!ENTITY nop "nop.txt"> DTD: <!ENTITY nop "nop.txt"> – nop.txt: a la vanille et a la fraisenop.txt: a la vanille et a la fraise– Document : Une glace &nop; SVP ! -> Une glace a la vanille Document : Une glace &nop; SVP ! -> Une glace a la vanille

et a la fraise SVP !et a la fraise SVP !– Le contenu du fichier doit être du XML valide: (contenu Le contenu du fichier doit être du XML valide: (contenu

récursivement parsé)récursivement parsé)– Peut être en encoding différentPeut être en encoding différent

Page 59: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 59

NotationsNotations Entité externe non parséeEntité externe non parsée

– L ’entité ne sera pas analysée mais elle doit avoir une NOTATIONL ’entité ne sera pas analysée mais elle doit avoir une NOTATION– DTD:<!ENTITY nop_logo "nop.png" NDATA "png" >DTD:<!ENTITY nop_logo "nop.png" NDATA "png" >

<!NOTATION png PUBLIC "http://w3.org/Graphics/PNG" ><!NOTATION png PUBLIC "http://w3.org/Graphics/PNG" >– Document: dont le logo est &nop_logo; Document: dont le logo est &nop_logo; – Le parseur ne fait rien: il se contente de passer Le parseur ne fait rien: il se contente de passer

l'URL du fichier nop.pngl'URL du fichier nop.png le type des données pngle type des données png l'URL identifiant ce qu'est ce type: http://w3.org/Graphics/PNGl'URL identifiant ce qu'est ce type: http://w3.org/Graphics/PNG

– à l'application, qui peut en faire ce qu'elle veutà l'application, qui peut en faire ce qu'elle veut Par exemple, pour Internet Explorer la notation donne le Par exemple, pour Internet Explorer la notation donne le

programme à exécuter:programme à exécuter:<!NOTATION png SYSTEM "C:\Program Files\Internet Explorer\Iexplore.exe" <!NOTATION png SYSTEM "C:\Program Files\Internet Explorer\Iexplore.exe"

>>

Page 60: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 60

Entités paramètresEntités paramètres Les entités paramètres ne peuvent etre utilisées que dans Les entités paramètres ne peuvent etre utilisées que dans

la DTDla DTD Elles servent à pallier le manque de modularitéElles servent à pallier le manque de modularité Les appels d ’entités paramètres se font comme ceux des Les appels d ’entités paramètres se font comme ceux des

entités générales, mais avec %nom; au lieu de &nom;entités générales, mais avec %nom; au lieu de &nom;Ex :Ex :<!ENTITY % nom "(prénom, patronyme)" ><!ENTITY % nom "(prénom, patronyme)" ><!ELEMENT auteur %nom; ><!ELEMENT auteur %nom; >Une fois l ’entité substituée, le processeur XML Une fois l ’entité substituée, le processeur XML intérprétera :intérprétera :<!ELEMENT auteur (prénom, patronyme) ><!ELEMENT auteur (prénom, patronyme) >

Page 61: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 61

Entités paramètres (2)Entités paramètres (2) Autres exemples :Autres exemples :

<!ENTITY % svg-paths-DTD SYSTEM <!ENTITY % svg-paths-DTD SYSTEM "http://foo.net/path/to/my.dtd">"http://foo.net/path/to/my.dtd"><!ENTITY % standard-DTD PUBLIC "-//W3C//DTD SVG <!ENTITY % standard-DTD PUBLIC "-//W3C//DTD SVG paths//fr"> paths//fr">

Attention: on ne peut pas inclure de DTD, uniquement des Attention: on ne peut pas inclure de DTD, uniquement des fragmentsfragments(problème de l ’entete avec <!DOCTYPE … []> a l’intérieur (problème de l ’entete avec <!DOCTYPE … []> a l’intérieur d ’une balise)d ’une balise)

Page 62: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 62

ConditionsConditions <![IGNORE[ ...definitions... ]]><![IGNORE[ ...definitions... ]]> <![INCLUDE[ ...definitions... ]]><![INCLUDE[ ...definitions... ]]> à... ignorer: « Conditional sections are another SGML à... ignorer: « Conditional sections are another SGML

invention that got into XML because the people on the invention that got into XML because the people on the committee who had experience writing DTDs claimed that committee who had experience writing DTDs claimed that life would just be impossible without them. » - Tim Braylife would just be impossible without them. » - Tim Bray

Page 63: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 63

Gestion des espacesGestion des espaces

<!ATTLIST movie xml:space (default|preserve) 'preserve'><!ATTLIST movie xml:space (default|preserve) 'preserve'>

Que faire des espaces de formatage?Que faire des espaces de formatage?<movie>_<movie>_____<actor>Patrick Stewart</actor>_____<actor>Patrick Stewart</actor>_____<actor>Merin Sirtis</actor>_____<actor>Merin Sirtis</actor>_</movie>_</movie>_

Tous les espaces sont transmis à l'application qui doit les traiterTous les espaces sont transmis à l'application qui doit les traiter

Les parseurs doivent normaliser les fins de ligne à la unix Les parseurs doivent normaliser les fins de ligne à la unix (^M^J -> ^J)(^M^J -> ^J)

On peut déclarer l'attribut xml:space pour forcer l'application à On peut déclarer l'attribut xml:space pour forcer l'application à garder l'espace mais le parseur, lui, doit transmettre les garder l'espace mais le parseur, lui, doit transmettre les espaces à l'application.espaces à l'application.

Page 64: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 64

Gestion des languesGestion des langues L ’attribut xml:lang spécifie le langage:L ’attribut xml:lang spécifie le langage:

– dans la DTD:dans la DTD:<!ATTLIST poème xml:lang NMTOKEN 'fr'><!ATTLIST poème xml:lang NMTOKEN 'fr'><!ATTLIST poem xml:lang NMTOKEN 'en'><!ATTLIST poem xml:lang NMTOKEN 'en'>

– dans le document :dans le document :<p xml:lang="en-GB">What colour is it?</p><p xml:lang="en-GB">What colour is it?</p><p xml:lang="en-US">What color is it?</p><p xml:lang="en-US">What color is it?</p>

Si il y a une DTD l ’attribut lang doit y être déclaréSi il y a une DTD l ’attribut lang doit y être déclaré

– <!ATTLIST p xml:lang NMTOKEN 'en'><!ATTLIST p xml:lang NMTOKEN 'en'>

Page 65: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 65

TexteTexte UNICODE est un consortium définissant l'encodage des UNICODE est un consortium définissant l'encodage des

caractères (UCS: Universal Character Set)caractères (UCS: Universal Character Set) XML utilise UNICODE 2 -> ISO/IEC 10646-1 Standard ISOXML utilise UNICODE 2 -> ISO/IEC 10646-1 Standard ISO Les normes UNICODE sont gratuites, les normes ISO sont Les normes UNICODE sont gratuites, les normes ISO sont

très chères.très chères. Unicode permet de représenter les caractères des langues Unicode permet de représenter les caractères des langues

du monde entier (européens mais aussi arabe, japonais, du monde entier (européens mais aussi arabe, japonais, vietnamiens, thaï, mortes...)vietnamiens, thaï, mortes...)

Page 66: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 66

Texte (2)Texte (2) Chaque caractère a un numéro (code) unique, et un nom Chaque caractère a un numéro (code) unique, et un nom Encodés sur 16 bits 0 a 0xFFFF (0 a 65,536 ), dans un plan Encodés sur 16 bits 0 a 0xFFFF (0 a 65,536 ), dans un plan UCS = 17 plans: 0 a 0x10FFFF (0 a 1,114,111)UCS = 17 plans: 0 a 0x10FFFF (0 a 1,114,111) premier plan: langues réellement utilisées (europe, arabe, premier plan: langues réellement utilisées (europe, arabe,

japon)japon) premiers 256 chars (0 a FF) = ASCII 8 bitspremiers 256 chars (0 a FF) = ASCII 8 bits caractères combinatoires ("touches mortes")caractères combinatoires ("touches mortes") Appel d ’un caractère Unicode dans un document XML par Appel d ’un caractère Unicode dans un document XML par

&<code ISO>;&<code ISO>;Ex : &0x41; affiche AEx : &0x41; affiche A

Page 67: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 67

Atomicité des donnéesAtomicité des données HTML et SGML sont des formats de documentsHTML et SGML sont des formats de documents XML doit représenter des données : le mélange texte/balises est XML doit représenter des données : le mélange texte/balises est

mal adapté!mal adapté! Quand utiliser attributs, quand des sous-éléments?Quand utiliser attributs, quand des sous-éléments? Il faut faire un choix suivant le type de traitement a effectuer Il faut faire un choix suivant le type de traitement a effectuer

(attributs plus faciles / rapides a accéder qu’éléments) sur les (attributs plus faciles / rapides a accéder qu’éléments) sur les données et leur réutilisabilité possible (éléments extensibles et données et leur réutilisabilité possible (éléments extensibles et plus faciles a maintenir)plus faciles a maintenir)

Page 68: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 68

Atomicité des données (2)Atomicité des données (2) Xml: Différentes représentations de la même donnéeXml: Différentes représentations de la même donnée

– <prix>$14</prix><prix>$14</prix>– <prix devise="US dollar">14</prix><prix devise="US dollar">14</prix>– <prix valeur="$14"/><prix valeur="$14"/>– <prix devise="US dollar" valeur="14"/><prix devise="US dollar" valeur="14"/>– <prix><prix>

<devise>US dollar</devise><devise>US dollar</devise><valeur>14</valeur><valeur>14</valeur>

</prix></prix> java:java:

– Prix {Prix {Devise devise;Devise devise;int valeur;int valeur;

};};

Page 69: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 69

Eléments ou attributs?Eléments ou attributs? Attributs non structurésAttributs non structurés

– + faciles à traiter+ faciles à traiter

– pas upgradables: pas upgradables: valeur="14 »valeur="14 »

– valeur=<nombre valeur='14' base='16'/> -> illegal!valeur=<nombre valeur='14' base='16'/> -> illegal!ou: ou:

– <prix devise="US dollar" valeur="14" base='16'/> -> non modulaire!<prix devise="US dollar" valeur="14" base='16'/> -> non modulaire! Eléments plus lisibles par humain, mais lourd!Eléments plus lisibles par humain, mais lourd!

– <prix><valeur><int>14</int></valeur></prix><prix><valeur><int>14</int></valeur></prix> Utilisation de sous-langages :Utilisation de sous-langages :

$14, 16Fr (autant de sous-parseurs)$14, 16Fr (autant de sous-parseurs) Autre exemple : chemins de SVG : Autre exemple : chemins de SVG :

<path d="M 150 90 l0 30 l 7 50 m 0 43 L-50 50"/><path d="M 150 90 l0 30 l 7 50 m 0 43 L-50 50"/>

Page 70: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 70

Eléments ou attributs? (2)Eléments ou attributs? (2) Avis commun:Avis commun: Attribut si valeur "finale" - mais peut-on en être sûr?Attribut si valeur "finale" - mais peut-on en être sûr? Elément si peut être structuréElément si peut être structuré Le contenu d'un élément est soit du texte, soit des éléments mais Le contenu d'un élément est soit du texte, soit des éléments mais

jamais de mélange!jamais de mélange! réutiliser des DTD existantes (mais qualités variables et réutiliser des DTD existantes (mais qualités variables et

philosophie de design variables)philosophie de design variables) validation?validation?

Page 71: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 71

Attribut identifiantAttribut identifiant Problème : Un arbre ne permet pas de partager des objetsProblème : Un arbre ne permet pas de partager des objets Ou de représenter des graphesOu de représenter des graphes Il faut alors utiliser des attributs identifiants (ID)Il faut alors utiliser des attributs identifiants (ID)

<livre nom='livre1' <livre nom='livre1' <auteur idref="#465"/><auteur idref="#465"/>

</livre></livre><personne id="#465" <personne id="#465"

nom="Trent" prenom="Gary"/>nom="Trent" prenom="Gary"/>

Page 72: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 72

Attribut identifiant (2)Attribut identifiant (2) Conseil: ne pas les déclarer ces attributs comme ID et IDREF Conseil: ne pas les déclarer ces attributs comme ID et IDREF

dans la DTD, car pas modulaire:dans la DTD, car pas modulaire:– <personne id="#4946" nom="Trent" prenom="Gary"/><personne id="#4946" nom="Trent" prenom="Gary"/>

– <devise id="#4946" nom="US Dollar" cours="0.8616"/><devise id="#4946" nom="US Dollar" cours="0.8616"/> L'application ne mélangera pas devises et personnes, mais le L'application ne mélangera pas devises et personnes, mais le

processeur XML déclenchera une erreur!processeur XML déclenchera une erreur! Toutes les balises sont mises "à plat" par le processeur, les liens Toutes les balises sont mises "à plat" par le processeur, les liens

sont recrées par l'application à partir des IDssont recrées par l'application à partir des IDs Plaide pour des éléments identifiants, on ne peut pas pointer vers Plaide pour des éléments identifiants, on ne peut pas pointer vers

des attributsdes attributs

Page 73: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 73

SérialisationSérialisation La technique des IDs permet de régler le problème La technique des IDs permet de régler le problème

attributs/éléments, mais pas dans l ’esprit de XMLattributs/éléments, mais pas dans l ’esprit de XML– éléments = relations is-a (type)éléments = relations is-a (type)

– attributs = relations has-a (champs)attributs = relations has-a (champs) Les id servent à marquer un élémentLes id servent à marquer un élément Convention dans pour pointer vers un objet (ici #id)Convention dans pour pointer vers un objet (ici #id) Autres attributs = valeurs finalesAutres attributs = valeurs finales Le document peut être résumé à une liste d'éléments vides :Le document peut être résumé à une liste d'éléments vides :

– <livre id="#86" nom="Star Trek 5" prix="#324" auteur="#68"/><livre id="#86" nom="Star Trek 5" prix="#324" auteur="#68"/>

– <prix id="#324" valeur="14" devise="USDollar"/><prix id="#324" valeur="14" devise="USDollar"/>

– <personne id="#68" nom="#96" naissance="1954/10/06"/><personne id="#68" nom="#96" naissance="1954/10/06"/>

– <nom id="#96" prenom="Trent" patronyme="Gary"/><nom id="#96" prenom="Trent" patronyme="Gary"/> Solution extrême, non politiquement correcte, n'utilisant pas les Solution extrême, non politiquement correcte, n'utilisant pas les

outils XML, à garder en tête pour les schemas!outils XML, à garder en tête pour les schemas!

Page 74: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 74

NamespacesNamespaces Recommendation W3C, Jan 1999.Recommendation W3C, Jan 1999. But: éviter les collisions de noms d'éléments et d'attributsBut: éviter les collisions de noms d'éléments et d'attributs

<livre><livre> <titre>Star Trek 5</titre> <-- 1ere balise titre <titre>Star Trek 5</titre> <-- 1ere balise titre <auteur> <auteur>

<nom>Trent Gary</nom><nom>Trent Gary</nom><titre>réalisateur</titre> <-- 2de balise titre<titre>réalisateur</titre> <-- 2de balise titre

</auteur> </auteur></livre></livre>

Note: ce n'est un problème QUE pour la validation!Note: ce n'est un problème QUE pour la validation! Solution: qualifier tout élément ou attribut par un namespace identifié Solution: qualifier tout élément ou attribut par un namespace identifié

par une URL:par une URL:– <{http://www.isbn.org/books/fr/dtd}titre><{http://www.isbn.org/books/fr/dtd}titre>– <{http://www.inria.fr/dtds/titres}titre><{http://www.inria.fr/dtds/titres}titre>

Page 75: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 75

Préfixes de namespacesPréfixes de namespaces On factorise les URLs par des préfixes locaux au document On factorise les URLs par des préfixes locaux au document

que l'on peut choisir aussi courts ou significatifs que que l'on peut choisir aussi courts ou significatifs que désirés.désirés.

Déclaration par l'attribut xmlns:prefixe, s'appliquant au Déclaration par l'attribut xmlns:prefixe, s'appliquant au contenu (scope lexical)contenu (scope lexical)– <livres xmlns:isbn="http://www.isbn.org/books/fr/dtd"<livres xmlns:isbn="http://www.isbn.org/books/fr/dtd"

xmlns:inria="http://www.inria.fr/dtds/titres">xmlns:inria="http://www.inria.fr/dtds/titres"><livre><isbn:titre>Ordinateurs et <livre><isbn:titre>Ordinateurs et

société</isbn:titre>…société</isbn:titre>…<inria:titre>écrivain</inria:titre> ...<inria:titre>écrivain</inria:titre> ...

– ou: <livres xmlns:a="..." xmlns:b="...">ou: <livres xmlns:a="..." xmlns:b="..."> <livre><a:titre>Ordinateurs et société</a:titre>... <livre><a:titre>Ordinateurs et société</a:titre>...

<b:titre>écrivain</b:titre> ...<b:titre>écrivain</b:titre> ...

Page 76: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 76

Préfixes de namespaces (2)Préfixes de namespaces (2) Quel que soit le préfixe choisi, l ’application doit se Quel que soit le préfixe choisi, l ’application doit se

comporter de manière identique, et traiter les données en comporter de manière identique, et traiter les données en fonction de l ’URLfonction de l ’URL

Le namespace par défaut:Le namespace par défaut:– pour les éléments : "" (vide)pour les éléments : "" (vide)– pour les attributs : celui de l'élémentpour les attributs : celui de l'élément

se déclare par xmlns="URL", pour la portée (scope) de se déclare par xmlns="URL", pour la portée (scope) de l'élémentl'élément

Page 77: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 77

Problèmes des namespacesProblèmes des namespaces "patch" à la norme XML"patch" à la norme XML Mal intégré (pas dans les DTDs)Mal intégré (pas dans les DTDs) Outils doivent se mettre à jour (vérifier!)Outils doivent se mettre à jour (vérifier!) Pose des problèmes de fond pour l'interaction entre normesPose des problèmes de fond pour l'interaction entre normes Permet une sorte de sous-classage: ajout d ’informations Permet une sorte de sous-classage: ajout d ’informations

étrangères dans du xml existantétrangères dans du xml existant Namespaces sont là pour resterNamespaces sont là pour rester Permettent de mélanger des XMLs existants(SVG dans Permettent de mélanger des XMLs existants(SVG dans

XHTML...) sans réinventer d'autres langagesXHTML...) sans réinventer d'autres langages Ne jamais se servir du nom d'élément brut ou du préfixe Ne jamais se servir du nom d'élément brut ou du préfixe

directement!directement!ne pas regarder si l'élément est de nom isbn:titre, ne pas regarder si l'élément est de nom isbn:titre, mais regarder si l'élément est de nom titre dans le mais regarder si l'élément est de nom titre dans le

namespacenamespace

Page 78: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 78

SchemasSchemas XML Schémas a été crée pour résoudre les problèmes de la DTD, XML Schémas a été crée pour résoudre les problèmes de la DTD,

et mieux traiter les donnéeset mieux traiter les données En syntaxe XMLEn syntaxe XML Supportent les namespacesSupportent les namespaces Types prédéfinisTypes prédéfinis Déclaration de nouveaux types élémentaires Déclaration de nouveaux types élémentaires

(Simple type = types)(Simple type = types) Combinaison de typesCombinaison de types

(Complex type = classes)(Complex type = classes) HéritageHéritage ModularitéModularité

Page 79: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 79

Schemas (2)Schemas (2) XML Schemas, démarré en fin 1998, encore en candidate XML Schemas, démarré en fin 1998, encore en candidate

recommendationrecommendation Prometteur mais très complexePrometteur mais très complexe La seule spécification W3C qui a un "tutorial" officiel! (primer)La seule spécification W3C qui a un "tutorial" officiel! (primer) Spéccifications en 3 parties :Spéccifications en 3 parties :

– structuresstructures

– datatypesdatatypes

– primerprimer

Page 80: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 80

DéclarationDéclaration Déclarations dans le namespace des schemasDéclarations dans le namespace des schemas

– <xsd:schema <xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema">xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"><xsd:... /> <-- déclaration d ’élément, de type….<xsd:... /> <-- déclaration d ’élément, de type….</xsd:schema></xsd:schema>

Déclaration des éléments et attributs similaire aux DTDs :Déclaration des éléments et attributs similaire aux DTDs :– <xsd:element name="remarque" type="xsd:string"/><xsd:element name="remarque" type="xsd:string"/>

Attributs déclarés dans la déclaration des éléments :Attributs déclarés dans la déclaration des éléments :– <xsd:complexType name="livre"><xsd:complexType name="livre">

<xsd:attribute name="date_publi" <xsd:attribute name="date_publi" type="xsd:date"/>type="xsd:date"/></xsd:complexType></xsd:complexType>

Page 81: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 81

Types prédéfinisTypes prédéfinis Primitive Primitive

DatatypesDatatypes– stringstring– booleanboolean– decimaldecimal– floatfloat– doubledouble– durationduration– dateTimedateTime– timetime– datedate– gYearMonthgYearMonth– gYeargYear– gMonthDaygMonthDay

Atomic, built-inAtomic, built-in– ""Hello WorldHello World""– {{truetrue, , falsefalse}}– 7.087.08– 12.56E312.56E3, , 1212, , 1256012560,, 0 0, , -0-0, , INFINF, , -INF-INF, , NANNAN – 12.56E312.56E3, , 1212, , 1256012560,, 0 0, , -0-0, , INFINF, , -INF-INF, , NANNAN – P1Y2M3DT10H30M12.3SP1Y2M3DT10H30M12.3S– format:format: CCYY-MM-DDThh-mm-ssCCYY-MM-DDThh-mm-ss

– format:format: hh:mm:ss.ssshh:mm:ss.sss

– format:format: CCYY-MM-DDCCYY-MM-DD

– format:format: CCYY-MMCCYY-MM

– format:format: CCYYCCYY

– format:format: -- --MM-DDMM-DD

Note: 'T' is the date/time separator INF = infinity NAN = not-a-number

Page 82: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 82

Types prédéfinis (2)Types prédéfinis (2) Primitive DatatypesPrimitive Datatypes

– gDaygDay– gMonthgMonth– hexBinary hexBinary – base64Binarybase64Binary– anyURIanyURI– QNameQName– NOTATIONNOTATION

Atomic, built-inAtomic, built-in– format:format: --- ---DD DD (note the 3 (note the 3

dashes)dashes)– format:format: -- --MM--MM--– a hex stringa hex string– a base64 stringa base64 string– http://www.xfront.comhttp://www.xfront.com– a namespace qualified namea namespace qualified name– a NOTATION from the XML speca NOTATION from the XML spec

Page 83: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 83

Types simplesTypes simples Au lieu de juste PCDATA et CDATA:Au lieu de juste PCDATA et CDATA:

<xsd:element name="prix" type="xsd:float"/><xsd:element name="prix" type="xsd:float"/> Ni contenu ni attributsNi contenu ni attributs Entités via le type token: Entités via le type token:

<xsd:element name="eacute" type="xsd:token" fixed="é"/><xsd:element name="eacute" type="xsd:token" fixed="é"/>t<eacute/>l<eacute/> -> télét<eacute/>l<eacute/> -> télé

Regular expressions (Unicode) via le type pattern :Regular expressions (Unicode) via le type pattern :<xsd:simpleType name="PrixEnDollars"><xsd:simpleType name="PrixEnDollars">

<xsd:restriction base="xsd:string"><xsd:restriction base="xsd:string"> <xsd:pattern value="[$] *[0-9]+([.][0-9][0-9])"/> <xsd:pattern value="[$] *[0-9]+([.][0-9][0-9])"/></xsd:restriction></xsd:restriction>

</xsd:simpleType></xsd:simpleType>

Page 84: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 84

ListesListes Une liste d ’octets :Une liste d ’octets :

– <xsd:simpleType name="numéroDeTéléphone"><xsd:simpleType name="numéroDeTéléphone"><xsd:list itemType="xsd:unsignedByte"/><xsd:list itemType="xsd:unsignedByte"/>

</xsd:simpleType></xsd:simpleType>– <xsd:element name="téléphone" type="numéroDeTéléphone"><xsd:element name="téléphone" type="numéroDeTéléphone">

<téléphone>04 92 38 77 77</téléphone><téléphone>04 92 38 77 77</téléphone>

Page 85: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 85

UnionsUnions <xsd:simpleType name="numéroDeTélMémoTechnique"><xsd:simpleType name="numéroDeTélMémoTechnique">

<xsd:union memberTypes="xsd:string numéroDeTéléphone"/><xsd:union memberTypes="xsd:string numéroDeTéléphone"/></xsd:simpleType></xsd:simpleType>

<xsd:element name="téléphone" type="numéroDeTél"><xsd:element name="téléphone" type="numéroDeTél"> <téléphone>04 92 38 77 77</téléphone><téléphone>04 92 38 77 77</téléphone> <téléphone>INRIA Sophia</téléphone><téléphone>INRIA Sophia</téléphone>

Page 86: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 86

RestrictionsRestrictions Permettent de construire de nouveaux types en réduisant les Permettent de construire de nouveaux types en réduisant les

possibilitéspossibilités Exemple : nombres à 2 chiffres: 0 <= nombre < 100Exemple : nombres à 2 chiffres: 0 <= nombre < 100

<xsd:simpleType name="nombre_2_chiffres"><xsd:simpleType name="nombre_2_chiffres"> <xsd:restriction base="xsd:nonNegativeInteger"> <xsd:restriction base="xsd:nonNegativeInteger">

<xsd:maxExclusive value="100"/> <xsd:maxExclusive value="100"/> </xsd:restriction> </xsd:restriction></xsd:simpleType></xsd:simpleType>

Page 87: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 87

Les restrictions sont des facettes d'un type. Les restrictions sont des facettes d'un type. Toutes (15) les facettes ne s'appliquent pas forcément à tous les Toutes (15) les facettes ne s'appliquent pas forcément à tous les

types:types:– length, minLength, maxLength, length, minLength, maxLength, – pattern, enumeration,pattern, enumeration,– whiteSpace, whiteSpace, – max Inclusive, max Exclusive, min Inclusive, min Exclusive, max Inclusive, max Exclusive, min Inclusive, min Exclusive, – precision, scale, precision, scale, – encoding, period, durationencoding, period, duration

FacettesFacettes

Page 88: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 88

Types complexesTypes complexes Comme des classes: dérivations à partir d'autres types:Comme des classes: dérivations à partir d'autres types: On ajoute des sous-éléments avec le type sequence:On ajoute des sous-éléments avec le type sequence:

<xsd:complexType name="typeAdresseFrance"><xsd:complexType name="typeAdresseFrance"><xsd:sequence><xsd:sequence>

<xsd:element name="numéroDeRue" <xsd:element name="numéroDeRue" type="xsd:string"/>type="xsd:string"/>

<xsd:element name="rue" type="xsd:string"/><xsd:element name="rue" type="xsd:string"/><xsd:element name="code" type="xsd:positiveInteger"/><xsd:element name="code" type="xsd:positiveInteger"/><xsd:element name="ville" type="xsd:string"/><xsd:element name="ville" type="xsd:string"/>

</xsd:sequence></xsd:sequence><xsd:attribute name="pays" type="xsd:string" use="required" <xsd:attribute name="pays" type="xsd:string" use="required"

value="FRANCE"/>value="FRANCE"/></xsd:complexType></xsd:complexType>

Page 89: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 89

Types complexes (2)Types complexes (2) numéroDeRue, rue, code, et ville sont des noms locaux à numéroDeRue, rue, code, et ville sont des noms locaux à

typeAdresseFrance, pas de conflits de nommagetypeAdresseFrance, pas de conflits de nommage Contraintes d'occurrence : généralise les opérateurs de regular Contraintes d'occurrence : généralise les opérateurs de regular

expressions ? * + …expressions ? * + …<xsd:element name="parents" type="nom" minOccurs="0" <xsd:element name="parents" type="nom" minOccurs="0" maxOccurs="2"/>maxOccurs="2"/>

Page 90: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 90

Restrictions de types Restrictions de types complexescomplexes

On peut restreindre les types du type père (redéfinir la plage de On peut restreindre les types du type père (redéfinir la plage de valeur d ’un attribut du type père,...)valeur d ’un attribut du type père,...)

On peut contrôler l'usage des typesOn peut contrôler l'usage des types final: permet d'interdire la dérivation d'un type par restriction, final: permet d'interdire la dérivation d'un type par restriction,

extension ou les deux.extension ou les deux.<xsd:complexType name="typeAdresse" final="restriction"><xsd:complexType name="typeAdresse" final="restriction">

On ne pourra pas réutiliser ce type dans un autre typeOn ne pourra pas réutiliser ce type dans un autre type

Page 91: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 91

Restrictions de types Restrictions de types complexes (2)complexes (2)

fixed: permet de contrôler quelles facettes seront utilisablesfixed: permet de contrôler quelles facettes seront utilisables<xsd:restriction base="xsd:string"><xsd:restriction base="xsd:string">

<xsd:length value="2" fixed="true"/> <xsd:length value="2" fixed="true"/></xsd:restriction></xsd:restriction>

On pourra étendre ce type mais jamais modifier le nombre de On pourra étendre ce type mais jamais modifier le nombre de lettreslettres

Types abstraitsTypes abstraits Contraint à la dérivation pour usageContraint à la dérivation pour usage

<xsd:element name="adresse" type="xsd:string" abstract="true"/><xsd:element name="adresse" type="xsd:string" abstract="true"/>

Page 92: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 92

Groupes de substitutionGroupes de substitution Déclare des types "utilisables à la place" (~ interfaces)Déclare des types "utilisables à la place" (~ interfaces) <xsd:element name="inconnu" type="xsd:string" <xsd:element name="inconnu" type="xsd:string"

substitutionGroup="prix"/>substitutionGroup="prix"/> <xsd:element name="variable" type="xsd:string" <xsd:element name="variable" type="xsd:string"

substitutionGroup="prix"/>substitutionGroup="prix"/>

Page 93: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 93

Inclusion de schemasInclusion de schemas <xsd:include schemaLocation="URL"/><xsd:include schemaLocation="URL"/> Possible de redéfinir les types d ’un schéma inclus !Possible de redéfinir les types d ’un schéma inclus ! ici, on inclus et surcharge le type Adresse dans le schéma inclusici, on inclus et surcharge le type Adresse dans le schéma inclus

<xsd:redefine schemaLocation="URL"><xsd:redefine schemaLocation="URL"> <xsd:complexType <xsd:complexType

name="Adresse">...</xsd:complexType> name="Adresse">...</xsd:complexType> </xsd:redefine></xsd:redefine>

et en changeant le namespaceet en changeant le namespace<xsd:import namespace="URL" schemaLocation="URL"><xsd:import namespace="URL" schemaLocation="URL">

... redéfinitions ...... redéfinitions ...</xsd:import></xsd:import>

Page 94: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 94

Valeur nulleValeur nulle Pour dire que la valeur est indéfiniePour dire que la valeur est indéfinie

<xsd:element name="téléphone" type="xsd:string" nullable="true"/><xsd:element name="téléphone" type="xsd:string" nullable="true"/> Si la valeur est null, on ne connaît pas le No, Si la valeur est null, on ne connaît pas le No, Si il n ’y a pas d'élément, on sait qu'il n'y a pas de NoSi il n ’y a pas d'élément, on sait qu'il n'y a pas de No

Page 95: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 95

Contraintes d'unicitéContraintes d'unicité <xsd:unique name="clefPersonne"><xsd:unique name="clefPersonne">

<xsd:selector xpath="/contacts/personne"/><xsd:selector xpath="/contacts/personne"/><xsd:field xpath="@numéro"/><xsd:field xpath="@numéro"/>

</xsd:unique></xsd:unique> définit un pseudo-champ clefPersonne qui vérifie qu ’il n'y a pas 2 définit un pseudo-champ clefPersonne qui vérifie qu ’il n'y a pas 2

champs numéro identiques dans toutes les personnes dans champs numéro identiques dans toutes les personnes dans contacts. (syntaxe XPath)contacts. (syntaxe XPath)

Page 96: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 96

AnnotationsAnnotations Commentaires, mais en XMLCommentaires, mais en XML

<xsd:annotation><xsd:annotation><apache:cocoon>Instructions pour <apache:cocoon>Instructions pour

Cocoon</apache:cocoon>Cocoon</apache:cocoon></xsd:annotation></xsd:annotation>

Peut avoir un attribut source, avec comme valeur l ’URL du Peut avoir un attribut source, avec comme valeur l ’URL du document contenant l ’annotationdocument contenant l ’annotation

Page 97: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 97

Clés et références de clésClés et références de clés Permet de créer des références entre donnéesPermet de créer des références entre données

<xsd:key name="numSociété"><xsd:key name="numSociété"><xsd:selector xpath="/contacts/société"/><xsd:selector xpath="/contacts/société"/><xsd:field xpath="@numéro"/><xsd:field xpath="@numéro"/>

</xsd:key></xsd:key><xsd:keyref name="refNumSociété" refer="numSociété"><xsd:keyref name="refNumSociété" refer="numSociété">

<xsd:selector xpath="/contacts/personne"/><xsd:selector xpath="/contacts/personne"/><xsd:field xpath="./refNumSociété"/><xsd:field xpath="./refNumSociété"/>

</xsd:keyref></xsd:keyref> Exemple:Exemple:

<personne nom="Tim Berners-Lee"><personne nom="Tim Berners-Lee"><refNumSociété>3</refNumSociété><refNumSociété>3</refNumSociété>

</personne></personne><société numéro="3"><société numéro="3">

<nom>World Wide Web Consortium</nom><nom>World Wide Web Consortium</nom></société></société>

Page 98: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 98

Validateurs de SchemasValidateurs de Schemas En ligne de commande :En ligne de commande :

– XSV by Henry ThompsonXSV by Henry Thompson ftp://ftp.cogsci.ed.ac.uk/pub/XSV/XSV12.EXEftp://ftp.cogsci.ed.ac.uk/pub/XSV/XSV12.EXE

En API Java : En API Java : – xerces by Apachexerces by Apache

http://www.apache.org/xerces-j/index.htmlhttp://www.apache.org/xerces-j/index.html– IBM Schema Quality Checker (Note: ce outil sert uniquement IBM Schema Quality Checker (Note: ce outil sert uniquement

à valider des schémas, pas des instances de documents.)à valider des schémas, pas des instances de documents.) http://www.alphaworks.ibm.com/tech/xmlsqchttp://www.alphaworks.ibm.com/tech/xmlsqc

– MSXML4.0MSXML4.0 http://www.microsoft.comhttp://www.microsoft.com

Page 99: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 99

Validateurs de Schemas (2)Validateurs de Schemas (2) GUI :GUI :

– XML SpyXML Spy http://www.xmlspy.comhttp://www.xmlspy.com

– Turbo XMLTurbo XML http://www.extensibility.comhttp://www.extensibility.com

Page 100: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 100

Exemple de schemaExemple de schema

<?xml version="1.0"?><?xml version="1.0"?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema” <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema”

targetNamespace="http://www.books.org” xmlns="http://www.books.org" targetNamespace="http://www.books.org” xmlns="http://www.books.org" elementFormDefault="qualified">elementFormDefault="qualified">

<xsd:element name="BookStore"><xsd:element name="BookStore"> <xsd:complexType><xsd:complexType> <xsd:sequence><xsd:sequence> <xsd:element name="Book" maxOccurs="unbounded"><xsd:element name="Book" maxOccurs="unbounded"> <xsd:complexType><xsd:complexType> <xsd:sequence><xsd:sequence> <xsd:element name="Title" type="xsd:string"/><xsd:element name="Title" type="xsd:string"/> <xsd:element name="Author" type="xsd:string"/><xsd:element name="Author" type="xsd:string"/> <xsd:element name="ISBN" type="xsd:string"/><xsd:element name="ISBN" type="xsd:string"/> <xsd:element name="Publisher” type="xsd:string"/><xsd:element name="Publisher” type="xsd:string"/> </xsd:sequence></xsd:sequence> </xsd:complexType></xsd:complexType> </xsd:element></xsd:element> </xsd:sequence></xsd:sequence> </xsd:complexType></xsd:complexType> </xsd:element></xsd:element></xsd:schema></xsd:schema>

Page 101: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 101

XML dans une applicationXML dans une application XML peut occuper différents rôles dans une application client serveurXML peut occuper différents rôles dans une application client serveur Dans une application XML peut être utilisé :Dans une application XML peut être utilisé :

– sur la couche présentationsur la couche présentation– sur la couche applicationsur la couche application– sur la couche donnéessur la couche données

Des sous-ensembles de XML ont été développés pour des fonctions Des sous-ensembles de XML ont été développés pour des fonctions clés : présentation, liens entre documents, dialogue inter-clés : présentation, liens entre documents, dialogue inter-applications,…applications,…

XML peut être utilisé sur le client et sur le(s) serveur(s)XML peut être utilisé sur le client et sur le(s) serveur(s) Deux stratégies possibles :Deux stratégies possibles :

– traitement de XML sur le client : navigateurs webs modernes (Mozilla/NS6, traitement de XML sur le client : navigateurs webs modernes (Mozilla/NS6, IE 6, x-smiles), clients puissants (PC…)IE 6, x-smiles), clients puissants (PC…)

– traitement sur le serveur : navigateurs légers, couches applicatives et traitement sur le serveur : navigateurs légers, couches applicatives et donnéesdonnées

Page 102: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 102

Positionnement de XML dans Positionnement de XML dans une architecture multi-tiersune architecture multi-tiers

Navigateur Navigateur webweb

ServeurServeur

RequêteRequête

RéponseRéponse

Serveur webServeur web Serveur Serveur d’application, d’application,

servlets, pages servlets, pages dynamiques, CGI...dynamiques, CGI...

Bases de données Bases de données relationnelle, relationnelle, objet, XML, objet, XML,

fichier...fichier...

ClientClient

XSLT, FO, XSLT, FO, SVG, SVG,

XHTML XHTML +CSS+CSS

XSP, JSP 1.2, XSP, JSP 1.2, XForms...XForms...

XSLT, FO, XSLT, FO, SVG, SVG,

XHTML XHTML +CSS+CSS

RDF, Xquery, RDF, Xquery, ESQL, XML...ESQL, XML...

++Xlink, Xlink, Xpath, Xpath, XpointXpoint

erer

HTTP, HTTP, WebDAV, WebDAV,

BEEPBEEP

ApplicationApplication ApplicationApplication

HTTPHTTPXML SoapXML Soap

XMLSignatureXMLSignatureXMLEncryptioXMLEncryptio

nn......

Page 103: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 103

Sous-ensembles de XMLSous-ensembles de XML SMIL Synchronized Multimedia Integration LanguageSMIL Synchronized Multimedia Integration Language : spécifie les : spécifie les

timings d’animations (sons, vidéo...)timings d’animations (sons, vidéo...) MathMLMathML 2 specs : structure et présentation des formules 2 specs : structure et présentation des formules MicropaymentsMicropayments : payer de petits achats en grand nombre : payer de petits achats en grand nombre CC/PPCC/PP (Composite Capability/Preference Profiles) : RDF pour négocier (Composite Capability/Preference Profiles) : RDF pour négocier

contenu entre browser et serveurscontenu entre browser et serveurs Device ProfileDevice Profile : description du device de rendu pour négocier via CC/PP : description du device de rendu pour négocier via CC/PP P3P P3P (Platform for Privacy Preferences Project) : Protection de la vie (Platform for Privacy Preferences Project) : Protection de la vie

privée par les technos webprivée par les technos web VoiceXMLVoiceXML (Voice eXtensible Markup Language) : reconnaissance vocale (Voice eXtensible Markup Language) : reconnaissance vocale

XML encryption : encryption de parties de documents XMLXML encryption : encryption de parties de documents XML XML SignatureXML Signature : signature éléctronique : signature éléctronique XML ProtocolsXML Protocols : communication via XML de machine à machine, par : communication via XML de machine à machine, par

diverses couches (dont HTTP); 1ere étape: SOAPdiverses couches (dont HTTP); 1ere étape: SOAP WAP / WMLWAP / WML : consortium externe (Wapforum) : consortium externe (Wapforum)

Page 104: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 104

XML sur la couche XML sur la couche présentationprésentation

Cette partie présente différents sous-ensembles de XML utilisés Cette partie présente différents sous-ensembles de XML utilisés sur la couche présentation d ’une application (certains peuvent sur la couche présentation d ’une application (certains peuvent également servir sur les autres couches)également servir sur les autres couches)

Pour utiliser ces sous-ensembles dans un document XML il faut Pour utiliser ces sous-ensembles dans un document XML il faut déclarer leur namespace dans les éléments XMLdéclarer leur namespace dans les éléments XML

Exemple : <livres xmlns:isbn="http://www.isbn.org/books/fr/dtd"Exemple : <livres xmlns:isbn="http://www.isbn.org/books/fr/dtd"xmlns:inria="http://www.inria.fr/dtds/titres">xmlns:inria="http://www.inria.fr/dtds/titres">

Page 105: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 105

XHTMLXHTML eXtensible Hypertext Markup Language : reformulation de HTML eXtensible Hypertext Markup Language : reformulation de HTML

en XML (syntaxe compatible avec XML)en XML (syntaxe compatible avec XML) Version 1.0 : recopie HTML en XMLVersion 1.0 : recopie HTML en XML Versions 1.1 :Versions 1.1 :

– HTML de base HTML de base – architecture modulaire pour frames, lists, forms, tables, images, architecture modulaire pour frames, lists, forms, tables, images,

script... (une trentaine)script... (une trentaine)– possibilité de modules custom (tags sur mesure)possibilité de modules custom (tags sur mesure)

Page 106: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 106

XHTML : Différences avec XHTML : Différences avec HTML (1)HTML (1)

noms d’éléments en minuscules :noms d’éléments en minuscules :<h1>, mais pas : <H1><h1>, mais pas : <H1>

tous les éléments doivent être fermés:tous les éléments doivent être fermés:<img/>, <hr/> ou <hr></hr><img/>, <hr/> ou <hr></hr>

tous les éléments doivent être correctements imbriqués :tous les éléments doivent être correctements imbriqués :<ul><li>et un<ul><li>et un <ul><li>et un </li> <ul><li>et un </li> <li>et deux</li> <li>et deux</li> </ul> </ul> </li> </li> <li>et deux</li> <li>et deux</li></ul></ul>

Page 107: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 107

XHTML : Différences avec XHTML : Différences avec HTML (2)HTML (2)

Pour afficher correctement dans les vieux navigateurs web, Pour afficher correctement dans les vieux navigateurs web, laisser un espace avant le / pour les élements vides :laisser un espace avant le / pour les élements vides :

<hr /> <br /><hr /> <br />

Page 108: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 108

XmlbaseXmlbase Reproduit le tag base de htmlReproduit le tag base de html Utilisé pour déterminer la cible des liens (xlink) relatifsUtilisé pour déterminer la cible des liens (xlink) relatifs

<doc xml:base="http://example.org/today/"><doc xml:base="http://example.org/today/">Click <link xlink:type="simple” Click <link xlink:type="simple”

xlink:href="new.xml">here</link>xlink:href="new.xml">here</link></doc></doc>

comme html mais avec portée lexicale (scope)comme html mais avec portée lexicale (scope) cherche la destination du lien dans l’ordre:cherche la destination du lien dans l’ordre:

– une base dans une structure englobante : la xml:base du une base dans une structure englobante : la xml:base du documentdocument

– URL d’accès au document (URL http, adresse XML Protocol)URL d’accès au document (URL http, adresse XML Protocol)– défaut fourni par l’applicationdéfaut fourni par l’application

Page 109: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 109

ruby (1)ruby (1) Standard pour des annotations en marge de documentsStandard pour des annotations en marge de documents Nom et concepts en usage en asie, ruby aurait du aller dans les Nom et concepts en usage en asie, ruby aurait du aller dans les

feuilles de style CSS mais ne rentrait pas dans le modèlefeuilles de style CSS mais ne rentrait pas dans le modèle ruby base: l’objet principal: <rb> <rbc>ruby base: l’objet principal: <rb> <rbc> ruby text : les explications: <rt> <rtc>ruby text : les explications: <rt> <rtc>

Page 110: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 110

ruby (2)ruby (2) <ruby xml:lang="ja" class="pronunciation annotation"><ruby xml:lang="ja" class="pronunciation annotation">

<rbc> <rbc>

<rb>æ</rb><rb>è¤</rb><rb>ä¿¡</rb><rb>ç·</rb><rb>æ</rb><rb>è¤</rb><rb>ä¿¡</rb><rb>ç·</rb> </rbc> </rbc>

<rtc class="pronunciation"> <rtc class="pronunciation"> <rt>ãã</rt><rt>ã¨ã</rt><rt>ã®ã¶</rt><rt>ã</rt><rt>ãã</rt><rt>ã¨ã</rt><rt>ã®ã¶</rt><rt>ã</rt>

</rtc> </rtc> <rtc class="annotation"> <rtc class="annotation"> <rt rbspan="4" xml:lang="en">W3C Associate <rt rbspan="4" xml:lang="en">W3C Associate Chairman</rt>Chairman</rt> </rtc> </rtc></ruby></ruby>

Page 111: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 111

HyperLiensHyperLiens 3 sous ensembles : Xlink, XPointer, Xpath3 sous ensembles : Xlink, XPointer, Xpath Le problème des liens HTML:Le problème des liens HTML:

– on doit modifier le document source <a on doit modifier le document source <a href=”doc#section”></a>href=”doc#section”></a>

– on doit modifier le document destination <a on doit modifier le document destination <a name=”section” />name=”section” />

– liens uniques monodirectionnels : on ne peut pointer sur une liens uniques monodirectionnels : on ne peut pointer sur une zonezone

Création de 3 normes:Création de 3 normes:– XPath est un langage pour décrire des endroits d’un XPath est un langage pour décrire des endroits d’un

documentdocument– XPointer spécifie des “cibles” via XpathXPointer spécifie des “cibles” via Xpath– XLink décrit des liens entre des XPointersXLink décrit des liens entre des XPointers

Page 112: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 112

Xpath (1)Xpath (1) Utilisé par XPointer, XSL, XForms…Utilisé par XPointer, XSL, XForms… Permet d’associer à tout objet XML une chaîne permetant d’y Permet d’associer à tout objet XML une chaîne permetant d’y

accéder ou chemin d’accès (“location paths”)accéder ou chemin d’accès (“location paths”) Des expressions permettent de faire des calculs sur ces pathsDes expressions permettent de faire des calculs sur ces paths Le modèle de données de Xpath reprend l’organisation du Le modèle de données de Xpath reprend l’organisation du

document :document :– nodesnodes– attributsattributs– texttext

Page 113: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 113

Xpath (2)Xpath (2) <film titre=”Startrek V" prix=”E14"><film titre=”Startrek V" prix=”E14">

<acteur nom=”Norman Die"/> <acteur nom=”Norman Die"/> <acteur nom=”Mona Cko"/> <acteur nom=”Mona Cko"/> “Espace, frontière de l’infini…” “Espace, frontière de l’infini…”</film></film>

XPathXPath matchesmatches/film/acteur[2]/film/acteur[2] <acteur nom=”Mona Cko"/><acteur nom=”Mona Cko"/>/film/acteur/@nom/film/acteur/@nom Norman DieMona CkoNorman DieMona Cko/film/acteur/film/acteur <acteur nom=”Norman Die"/><acteur nom=”Norman Die"/>

<acteur name=”Mona Cko"/><acteur name=”Mona Cko"/>/film/text()/film/text() “Espace, frontière de l’infini…”“Espace, frontière de l’infini…”

Page 114: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 114

Nœuds (1)Nœuds (1) Comme le système de fichier unix : / = rootComme le système de fichier unix : / = root Un chemin qui commence par / est un chemin absolu, qui Un chemin qui commence par / est un chemin absolu, qui

commence depuis la racine du document: /film/acteurcommence depuis la racine du document: /film/acteur Un chemin qui ne commence pas par / est un chemin relatif au Un chemin qui ne commence pas par / est un chemin relatif au

noeud courant traité par l’applicationournoeud courant traité par l’applicationour Un chemin qui commence par // selectionne toutes les Un chemin qui commence par // selectionne toutes les

sous/parties:sous/parties: Exemple : Exemple :

<x><y><z/></y><t><y><z>foo</z></y></t><z>1</z></x<x><y><z/></y><t><y><z>foo</z></y></t><z>1</z></x>>– ““//y/z” : <z/>, <z>foo</z>//y/z” : <z/>, <z>foo</z>– ““//z” : <z/>, <z>foo</z>, <z>1</z>//z” : <z/>, <z>foo</z>, <z>1</z>

Page 115: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 115

Nœuds (2)Nœuds (2) Exemple : Exemple :

<x><y><z/></y><t><y><z>foo</z></y></t><z>1</z></x<x><y><z/></y><t><y><z>foo</z></y></t><z>1</z></x>>

* remplace tout un niveau de hiérarchie * remplace tout un niveau de hiérarchie “/*/*/*/*”“/*/*/*/*” : <z>foo</z> : <z>foo</z>

*à la fin sélectionne tout le contenu*à la fin sélectionne tout le contenu“//y/*” : <z/>, <z>foo</z>“//y/*” : <z/>, <z>foo</z>

.. pour remonter.. pour remonter“//y/z/..” : <y><z/></y>, <y><z>foo</z></y>“//y/z/..” : <y><z/></y>, <y><z>foo</z></y>

Page 116: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 116

Attributs:Attributs: Préfixés par @Préfixés par @ Exemple : <circle col=”red”><disc><rect Exemple : <circle col=”red”><disc><rect

col=”blue”/></disc></circle>col=”blue”/></disc></circle> noeud/@attribut = contenu de l’attribut noeud/@attribut = contenu de l’attribut

– ““//rect/@col” : blue//rect/@col” : blue @* sélectionne tous les attributs@* sélectionne tous les attributs

– ’’//@*’ : red blue//@*’ : red blue

Page 117: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 117

PrédicatsPrédicats Suivent le path, entre crochets [ ]Suivent le path, entre crochets [ ] Sélection parmi les noeuds qui matchentSélection parmi les noeuds qui matchent

– Nombre N: sélectionne le fils numéro N (démarre à 1) : //y[2]Nombre N: sélectionne le fils numéro N (démarre à 1) : //y[2]– Expressions: s’électionne tous les nœuds qui matchent Expressions: s’électionne tous les nœuds qui matchent

l’expressionl’expression Exemple : section[@type=”attention"] : Sélectionne tous les fils Exemple : section[@type=”attention"] : Sélectionne tous les fils

de nom d’élement section et d’attribut type valant “attention”de nom d’élement section et d’attribut type valant “attention” Fonctions: Fonctions:

– //acteur[last()] le dernier fils de author //acteur[last()] le dernier fils de author – //acteur[position() = last() - 1] l’avant dernier fils de acteur!//acteur[position() = last() - 1] l’avant dernier fils de acteur!

En fait langage complexe: //acteur[not(@*)] trouve tous les En fait langage complexe: //acteur[not(@*)] trouve tous les éléments de nom acteur n’ayant pas d’attributs!éléments de nom acteur n’ayant pas d’attributs!

Page 118: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 118

AxesAxes La syntaxe précédente est une abbréviation de la forme générale La syntaxe précédente est une abbréviation de la forme générale

:: axe::noeud[predicat]axe::noeud[predicat]

– on choisit le nœudon choisit le nœud– on prend un ensemble de noeuds sur un axe : parent, fils, on prend un ensemble de noeuds sur un axe : parent, fils,

attributs, texte…attributs, texte…– on restreint via les expressions prédicaton restreint via les expressions prédicat

Exemples :Exemples :– descendant-or-self::author[1] = //author[1]descendant-or-self::author[1] = //author[1]– attribute:: = @attribute:: = @– self:: = .self:: = .– parent:: = ..parent:: = ..

Page 119: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 119

Xpath (fin)Xpath (fin) XPath est très puissant et a les possibilités d’un vrai langage de XPath est très puissant et a les possibilités d’un vrai langage de

programmationprogrammation Il est difficile à maîtriser car concis et aussi très difficile à Il est difficile à maîtriser car concis et aussi très difficile à

implémenter efficacement (prédicats)implémenter efficacement (prédicats) Xpath est de plus en plus utilisé par les outilsXpath est de plus en plus utilisé par les outils Similtude avec les regular expressions : permet d’exprimer la Similtude avec les regular expressions : permet d’exprimer la

logique d’une action de facon portable entre langageslogique d’une action de facon portable entre langages Danger: pour XPath, un “noeud” veut dire aussi bien attribut que Danger: pour XPath, un “noeud” veut dire aussi bien attribut que

élementélement

Page 120: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 120

Xpointers (1)Xpointers (1) Basé sur XpathBasé sur Xpath Donne le contexte à XPath (root du document)Donne le contexte à XPath (root du document) Permet de sélectionner une partie de documents XML sans la Permet de sélectionner une partie de documents XML sans la

modifiermodifier Les documents peuvent être énormes, ou non modifiables (CD-Les documents peuvent être énormes, ou non modifiables (CD-

ROM ou site web distants)ROM ou site web distants) Référence complète de la forme URL#xpointer(xpath)Référence complète de la forme URL#xpointer(xpath) Exemple : http://w3.org/spc.xml#xpointer(//x/y[2])Exemple : http://w3.org/spc.xml#xpointer(//x/y[2])

Page 121: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 121

Xpointers (2)Xpointers (2) XPath ne pouvait spécifier que des noeuds,XPath ne pouvait spécifier que des noeuds, XPointer peut spécifier des points: XPointer peut spécifier des points:

– endroits sans taille entre 2 noeuds endroits sans taille entre 2 noeuds – caractères dans une chaînecaractères dans une chaîne

Exemple : xpointer(end-point(//A/B[2])) Exemple : xpointer(end-point(//A/B[2])) Xpointer peut aussi sp’écifier des plages : Xpointer peut aussi sp’écifier des plages :

– tout entre 2 pointstout entre 2 points Exemple : xpointer(//A/B/C[1] to //A/B[3])Exemple : xpointer(//A/B/C[1] to //A/B[3]) Un XPointer peut être:Un XPointer peut être:

– une ID, comme en HTMLune ID, comme en HTML– une liste de pointersune liste de pointers

(dans ce cas prend le premier qui matche:(dans ce cas prend le premier qui matche:xpointer(author)xpointer(auteur)xpointer(éditeur)…)xpointer(author)xpointer(auteur)xpointer(éditeur)…)

Page 122: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 122

XlinkXlink Juin 2001: Specification 1.0, specification jeune mais en Juin 2001: Specification 1.0, specification jeune mais en

développement depuis un moment: consensusdéveloppement depuis un moment: consensus Spécifie liens entre XpointersSpécifie liens entre Xpointers

– multidirectionnels :vers plusieurs ciblesmultidirectionnels :vers plusieurs cibles– peuvent être définis ailleurs que dans document source ou ciblepeuvent être définis ailleurs que dans document source ou cible

Définis dans le namespace “http://www.w3.org/1999/xlink”Définis dans le namespace “http://www.w3.org/1999/xlink” Pas d’élements de nom link, mais un attribut dans le namespace Pas d’élements de nom link, mais un attribut dans le namespace

xlink transforme un élement en lien.xlink transforme un élement en lien. Exemple :Exemple :

<mon_élément <mon_élément xmlns:xlink="http://www.w3.org/1999/xlink" ... />xmlns:xlink="http://www.w3.org/1999/xlink" ... /><go xlink:type="arc" xlink:from="A" xlink:to="B" /><go xlink:type="arc" xlink:from="A" xlink:to="B" />

Page 123: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 123

TypesTypes

Simples (HTML) pointent vers une URL :Simples (HTML) pointent vers une URL :– <image xmlns:xlink="http://www.w3.org/1999/xlink” <image xmlns:xlink="http://www.w3.org/1999/xlink”

xlink:type="simple" xlink:href=”inria.gif"/> xlink:type="simple" xlink:href=”inria.gif"/> Locator établit une cible: Locator établit une cible:

– <cible xmlns:xlink="http://www.w3.org/1999/xlink" <cible xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="locator" xlink:href=”inria.html" xlink:label="locator1"/>xlink:type="locator" xlink:href=”inria.html" xlink:label="locator1"/>

Arc spécifie un lien entre 2 locators: Arc spécifie un lien entre 2 locators: – <relation xmlns:xlink=<relation xmlns:xlink=

"http://www.w3.org/1999/xlink" xlink:type="arc""http://www.w3.org/1999/xlink" xlink:type="arc" xlink:from="locator1" xlink:to="locator2"/> xlink:from="locator1" xlink:to="locator2"/>

title donne une lien utile pour un être humaintitle donne une lien utile pour un être humain resource est comme locator mais pour des cibles internes au resource est comme locator mais pour des cibles internes au

documentdocument extended peut avoir N sources et N destinationextended peut avoir N sources et N destination

Page 124: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 124

AttributsAttributs L’attribut arcrole d’éfinit une URL descriptive L’attribut arcrole d’éfinit une URL descriptive L’attribut show indique comment/si il faut afficher le lien.L’attribut show indique comment/si il faut afficher le lien. Il peut prendre les valeurs replace, new, embed, noneIl peut prendre les valeurs replace, new, embed, none Exemple : <image xmlns:xlink="http://www.w3.org/1999/xlink"Exemple : <image xmlns:xlink="http://www.w3.org/1999/xlink"

xlink:type="simple" xlink:show=”embed” xlink:type="simple" xlink:show=”embed” xlink:href="koala.gif"/>xlink:href="koala.gif"/>

L’attirbut actuate indique quand déclencher le lien.L’attirbut actuate indique quand déclencher le lien. Il peut prendre les valeurs onRequest, onLoad, other, noneIl peut prendre les valeurs onRequest, onLoad, other, none

Page 125: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 125

Xlink (fin)Xlink (fin) Les liens de part leur puissance servent à bien plus que de Les liens de part leur puissance servent à bien plus que de

simple liens HTMLsimple liens HTML Ils permettent de structurer des données et d’exprimer des Ils permettent de structurer des données et d’exprimer des

relations de bases de donnéesrelations de bases de données Mais les Xlink sont encore très peu implémentés dans les outils Mais les Xlink sont encore très peu implémentés dans les outils

actuelsactuels ... ni même dans les normes, XHTML ne s’en sert pas !... ni même dans les normes, XHTML ne s’en sert pas !

Page 126: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 126

CSS (1)CSS (1) Comment représenter du XML abstrait? en ajoutant des Comment représenter du XML abstrait? en ajoutant des

informations de présentation : le styleinformations de présentation : le style CSS Cascading style sheets : Historique (pas en syntaxe XML!) CSS Cascading style sheets : Historique (pas en syntaxe XML!)

CSS2, CSS3…CSS2, CSS3… Permet de décorer les noeuds avec des attributs de style prédéfinisPermet de décorer les noeuds avec des attributs de style prédéfinis ““cascade” car il peut y avoir plusieurs style sheets (defaut, site, cascade” car il peut y avoir plusieurs style sheets (defaut, site,

browser, utilisateur)browser, utilisateur) Syntaxe : hiérarchie_de_noeuds . classe { attribut: valeur; ... }Syntaxe : hiérarchie_de_noeuds . classe { attribut: valeur; ... } Ne modifie pas la structure du XML : manipulation facile (javascript)Ne modifie pas la structure du XML : manipulation facile (javascript) limite dans le styling (ordre des éléments)limite dans le styling (ordre des éléments) pas limité à un monde textuel : CSS vocal, CSS graphique (SVG)pas limité à un monde textuel : CSS vocal, CSS graphique (SVG) solution permettant d’utiliser XML comme remplacant de HTMLsolution permettant d’utiliser XML comme remplacant de HTML

Page 127: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 127

CSS (2)CSS (2) <?xml version="1.0"?><?xml version="1.0"?>

<?xml-stylesheet type="text/css"?><?xml-stylesheet type="text/css"?><guide xmlns:HTML="http://www.w3.org/Profiles/XHTML-<guide xmlns:HTML="http://www.w3.org/Profiles/XHTML-transitional">transitional"> <HTML:STYLE> <HTML:STYLE> restaurant { display: block; font-weight: bold; margin-top: 1em;} restaurant { display: block; font-weight: bold; margin-top: 1em;} menu { font-size: large; margin-left: 1cm;} menu { font-size: large; margin-left: 1cm;} </HTML:STYLE> </HTML:STYLE> <restaurant>Le sucrier</restaurant> <restaurant>Le sucrier</restaurant> <menu>menu provencal</menu> <menu>menu provencal</menu></guide></guide>------- ------- Le sucrierLe sucrier

menu provencalmenu provencal

Page 128: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 128

CSS (3)CSS (3) CSS1: juste attributs graphiques (couleurs, fontes...)CSS1: juste attributs graphiques (couleurs, fontes...) (NS 4.x, (NS 4.x,

IE 4.x)IE 4.x) CSS2: positionnement sur la page (layout), modèle de boîtes CSS2: positionnement sur la page (layout), modèle de boîtes

(Mozilla,Opera)(Mozilla,Opera) CSS3: débute... modularisation pour application universelle.CSS3: débute... modularisation pour application universelle. Solution très intéressante, en utilisant des attributs de style Solution très intéressante, en utilisant des attributs de style

spécifique au domaine, car permet de garder la structure intacte spécifique au domaine, car permet de garder la structure intacte pour agir dessus aprèspour agir dessus après

Mais doit être implémentée par le browser, donc moins populaire Mais doit être implémentée par le browser, donc moins populaire car support aléatoirecar support aléatoire

Page 129: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 129

XSLXSL XSL est un héritier de DSSSL, une langage de mise en forme basé XSL est un héritier de DSSSL, une langage de mise en forme basé

sur scheme (lisp) et manipulant du SGMLsur scheme (lisp) et manipulant du SGML La communauté DSSSL voulait un langage qui lui permette La communauté DSSSL voulait un langage qui lui permette

d’imprimer différentes versions d’un document :d’imprimer différentes versions d’un document :– avec la puissance d’un langage de programmationavec la puissance d’un langage de programmation– sans prendre en compte l’interactivité sur la version finale (évènements)sans prendre en compte l’interactivité sur la version finale (évènements)

Ce qui a entrainé la création de XSL pour répondre à ces besoins Ce qui a entrainé la création de XSL pour répondre à ces besoins avec XMLavec XML

La partie Formatting Objets (style) s’est révelée plus complexe que La partie Formatting Objets (style) s’est révelée plus complexe que prévueprévue

Comme il il y avait un énorme besoin pour transformer du XML en Comme il il y avait un énorme besoin pour transformer du XML en XML (ou autres) on a séparé XSL en XSLT (abstrait) et FO (style)XML (ou autres) on a séparé XSL en XSLT (abstrait) et FO (style)

XSL n’est qu’un filtre, il faut autre chose (template engines) pour XSL n’est qu’un filtre, il faut autre chose (template engines) pour gérer plusieurs documentsgérer plusieurs documents

Page 130: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 130

XSL-FO (1)XSL-FO (1) Peu utilisé et encore en développementPeu utilisé et encore en développement Besoins mal définis (PDF? web? SVG?)Besoins mal définis (PDF? web? SVG?) But: que les browsers puissent directement montrer des FosBut: que les browsers puissent directement montrer des Fos Mais politiquement non web-correct: FOs pas adaptables (taille Mais politiquement non web-correct: FOs pas adaptables (taille

de police?)de police?) Conseil: à éviter. regarder plutot SVG et CC/PPConseil: à éviter. regarder plutot SVG et CC/PP

Page 131: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 131

XSL-FO (2)XSL-FO (2) Exemple:Exemple:

<fo:page-sequence master-name="A4" <fo:page-sequence master-name="A4" initial-page-number="1" language="en" country="us"> initial-page-number="1" language="en" country="us"> <fo:static-content flow-name="xsl-region-before"> <fo:static-content flow-name="xsl-region-before"> <fo:block>The Periodic Table</fo:block> <fo:block>The Periodic Table</fo:block> </fo:static-content> </fo:static-content> <fo:static-content flow-name="xsl-region-after"> <fo:static-content flow-name="xsl-region-after"> <fo:block>p. <fo:page-number/></fo:block> <fo:block>p. <fo:page-number/></fo:block> </fo:static-content> </fo:static-content> <fo:flow flow-name="xsl-region-body"> <fo:flow flow-name="xsl-region-body"> <xsl:apply-templates select="//ATOM"/> <xsl:apply-templates select="//ATOM"/> </fo:flow> </fo:flow> </fo:page-sequence> </fo:page-sequence>

Page 132: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 132

XSLT (1)XSLT (1) Principe : un document XML + une feuille de style XSLT + un Principe : un document XML + une feuille de style XSLT + un

processeur XSLT = un processeur XSLT = un document XML (ou autre format de sortie, HTML...)document XML (ou autre format de sortie, HTML...)

Une feuille de style XSLT (“stylesheet”) est une succession de Une feuille de style XSLT (“stylesheet”) est une succession de régles de réecriture: les xsl:templaterégles de réecriture: les xsl:template

Que fait le processeur XSLT ?Que fait le processeur XSLT ?– parse le document XML en mémoireparse le document XML en mémoire– trouve les noeuds de l’arbre en mémoire (DOM) qui matchent les trouve les noeuds de l’arbre en mémoire (DOM) qui matchent les

règles XSLrègles XSL– genère un nouvel arbre DOM à partir des instructions de ces règlesgenère un nouvel arbre DOM à partir des instructions de ces règles– imprime le XML résultantimprime le XML résultant

Volonté d’être déclaratif mais possibilité d’être procédural Volonté d’être déclaratif mais possibilité d’être procédural (javascript) pour pouvoir tout faire(javascript) pour pouvoir tout faire

Page 133: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 133

XSLT (2)XSLT (2) <xsl:stylesheet version=’1.0’ <xsl:stylesheet version=’1.0’

xmlns:xsl=’http://www.w3.org/1999/XSL/Transform’>xmlns:xsl=’http://www.w3.org/1999/XSL/Transform’><xsl:template match="bold"> <xsl:template match="bold"> <P><B><xsl:value-of select="."/></B></P> <P><B><xsl:value-of select="."/></B></P> </xsl:template> </xsl:template>

</xsl:stylesheet></xsl:stylesheet> Résultat avec <bold>hello!</bold> :Résultat avec <bold>hello!</bold> :

<P><B>hello!</B></P><P><B>hello!</B></P> L’utilisation dépend de l’outil, en général :L’utilisation dépend de l’outil, en général :

xt file.xml file.xsl > result.xml xt file.xml file.xsl > result.xml (avec le processeur XSLT xt de James Clark)(avec le processeur XSLT xt de James Clark)

Attention! Internet Explorer 5 a un vieux moteur XSLTAttention! Internet Explorer 5 a un vieux moteur XSLT Le type de résultat est déterminé par l’élément xsl:output :Le type de résultat est déterminé par l’élément xsl:output :

<xsl:output method="xml" />, <xsl:output method="html" />…<xsl:output method="xml" />, <xsl:output method="html" />… Depuis java : Une API standard émerge: TRaX.Depuis java : Une API standard émerge: TRaX.

Page 134: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 134

Eléments XSLT (1)Eléments XSLT (1) Une stylesheet XSL est une suite de modèles :Une stylesheet XSL est une suite de modèles :

<xsl:templates attributs>contenu</xsl:templates><xsl:templates attributs>contenu</xsl:templates> Les attributs disent comment matcher :Les attributs disent comment matcher :

– match=”XPath-expression”match=”XPath-expression”– name=”nom_de_la_règle”name=”nom_de_la_règle”– contenu est ce qui sera émis en remplacementcontenu est ce qui sera émis en remplacement

On peut réappliquer XSL au contenu en englobant dans unOn peut réappliquer XSL au contenu en englobant dans unxsl:apply-templatesxsl:apply-templates

Ce qui n’est pas dans le namespace de XSL est émis inchangéCe qui n’est pas dans le namespace de XSL est émis inchangé

Page 135: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 135

Eléments XSLT (2)Eléments XSLT (2) xsl:stylesheet, xsl:transform (élement racine de la stylesheet)xsl:stylesheet, xsl:transform (élement racine de la stylesheet) xsl:include, xsl:import (importé non prioritaire)xsl:include, xsl:import (importé non prioritaire) xsl:strip-space, xsl:preserve-space (contenu: liste de noms xsl:strip-space, xsl:preserve-space (contenu: liste de noms

d’élements)d’élements) xsl:output, xsl:decimal-format (format de sortie)xsl:output, xsl:decimal-format (format de sortie) xsl:key (IDs genéralisées, sorte de XPointers)xsl:key (IDs genéralisées, sorte de XPointers) xsl:namespace-alias (renommer préfixe en sortie)xsl:namespace-alias (renommer préfixe en sortie) xsl:attribute-set (ensemble d’attributs)xsl:attribute-set (ensemble d’attributs) xsl:variable, xsl:param (variables et valeurs par defaut)xsl:variable, xsl:param (variables et valeurs par defaut)

Page 136: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 136

Traitements avec XSLT (1)Traitements avec XSLT (1) Dans le contenu, on a des fonctionnalités de:Dans le contenu, on a des fonctionnalités de: Création de nouveaux éléments XML:Création de nouveaux éléments XML:

– <xsl:element name=”toto” namespace=”URL” use-attribute-<xsl:element name=”toto” namespace=”URL” use-attribute-sets=”xxx”/> sets=”xxx”/>

– + xsl:attribute, xsl:text, xsl:processing-instruction, xsl:comment…+ xsl:attribute, xsl:text, xsl:processing-instruction, xsl:comment… Extraction de données:Extraction de données:

– <xsl:value-of select=”XPATH-expr”/><xsl:value-of select=”XPATH-expr”/>– + xsl:copy, xsl:copy-of+ xsl:copy, xsl:copy-of

Langage de programmation: Langage de programmation: – contrôle de flux : xsl:if, xsl:for-each, xsl:choose, xsl:when, contrôle de flux : xsl:if, xsl:for-each, xsl:choose, xsl:when,

xsl:otherwise, xsl:otherwise, xsl:apply-templatesxsl:apply-templates

Traitement de données: Traitement de données: – conversions, xsl:sort, xsl:numberconversions, xsl:sort, xsl:number

Page 137: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 137

Traitements avec XSLT (2)Traitements avec XSLT (2) Difficultés:Difficultés:

– comprendre comment matcher (XPath)comprendre comment matcher (XPath)– quand ré-appliquer aux sous élementsquand ré-appliquer aux sous élements– difficile à “compiler”difficile à “compiler”

SUN promet une solution: “translets” ?SUN promet une solution: “translets” ? XSLT = un langage de prog. sans debugger avec une syntaxe XSLT = un langage de prog. sans debugger avec une syntaxe

horrible (mais n’effraie pas les non-programmeurs ;-)horrible (mais n’effraie pas les non-programmeurs ;-)

Page 138: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 138

XSLT pull (1)XSLT pull (1) Traditionnel: on définit en XSL tous les élements du source et on en Traditionnel: on définit en XSL tous les élements du source et on en

“extrait” (pull) certains tags, comme pour extraire d’une base de “extrait” (pull) certains tags, comme pour extraire d’une base de données.données.

<livres><livres><livre titre=”Starship Titanic”><prix>$14</prix></livre><livre titre=”Starship Titanic”><prix>$14</prix></livre><livre titre=”Dune”><prix>$29</prix></livre><livre titre=”Dune”><prix>$29</prix></livre>

</livres></livres>

<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:output method=”html” omit-xml-declaration="yes" indent="yes" /><xsl:output method=”html” omit-xml-declaration="yes" indent="yes" /><xsl:template match="/"><xsl:template match="/">

<table border="1”><tr><th>Livre</th><th>Prix</th></tr><table border="1”><tr><th>Livre</th><th>Prix</th></tr><xsl:apply-templates/><xsl:apply-templates/>

</table></table></xsl:template></xsl:template><xsl:template match="livre"><xsl:template match="livre">

<tr><tr><td><xsl:value-of select="@titre"/></td><td><xsl:value-of select="@titre"/></td><td><xsl:value-of select="prix[text()]"/></td><td><xsl:value-of select="prix[text()]"/></td>

</tr></tr></xsl:template></xsl:template></xsl:transform></xsl:transform>

Page 139: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 139

XSLT pull (2)XSLT pull (2) <table border="1"><table border="1">

<tr> <tr> <th>Livre</th><th>Prix</th> <th>Livre</th><th>Prix</th> </tr> </tr> <tr> <tr> <td>Starship Titanic</td><td>$14</td> <td>Starship Titanic</td><td>$14</td> </tr> </tr> <tr> <tr> <td>Dune</td><td>$29</td> <td>Dune</td><td>$29</td> </tr> </tr> </table> </table>

Livre Livre PrixPrix Starship Titanic Starship Titanic $14$14 Dune Dune $29$29

Page 140: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 140

XSLT push (1)XSLT push (1) Autre approche: mélanger XML et XSL dans un seul document XSLAutre approche: mélanger XML et XSL dans un seul document XSL Tout est copié, sauf les tags redéfinis Tout est copié, sauf les tags redéfinis Semblable à de la programmation classique, évite les pièges XpathSemblable à de la programmation classique, évite les pièges Xpath Sur le même XML que précédement:Sur le même XML que précédement:

<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method=’html’ omit-xml-declaration="yes" indent="yes" /> <xsl:output method=’html’ omit-xml-declaration="yes" indent="yes" /> <xsl:template match="/"> <xsl:template match="/"> <html> <html> <table border=’1’><tr><th>Livre</th><th>Prix</th></tr> <table border=’1’><tr><th>Livre</th><th>Prix</th></tr> <xsl:for-each select="*/livre"> <xsl:for-each select="*/livre"> <tr><td><xsl:value-of select="@titre"/></td> <tr><td><xsl:value-of select="@titre"/></td> <td><xsl:value-of select="prix[text()]"/></td></tr> <td><xsl:value-of select="prix[text()]"/></td></tr> </xsl:for-each> </xsl:for-each> </table> </table> </html> </html> </xsl:template> </xsl:template></xsl:transform></xsl:transform>

Page 141: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 141

XSLT push (2)XSLT push (2) <html><html>

<table border="1"> <table border="1"> <tr> <tr> <th>Livre</th><th>Prix</th> <th>Livre</th><th>Prix</th> </tr> </tr> <tr> <tr> <td>Starship Titanic</td><td>$14</td> <td>Starship Titanic</td><td>$14</td> </tr> </tr> <tr> <tr> <td>Dune</td><td>$29</td> <td>Dune</td><td>$29</td> </tr> </tr> </table> </table></html></html>

LivreLivre PrixPrix Starship Titanic Starship Titanic $14$14 Dune Dune $29$29

méthode “quick and dirty”, utile pour ajouter des “macro-tags” dans documentsméthode “quick and dirty”, utile pour ajouter des “macro-tags” dans documents mais pourquoi ne pas utiliser plutot un vrai langage/script de programmation?mais pourquoi ne pas utiliser plutot un vrai langage/script de programmation?

Page 142: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 142

XSLT + CSS ?XSLT + CSS ? Peut être la meilleure combinaison: Génerer du (X)HTML + CSS Peut être la meilleure combinaison: Génerer du (X)HTML + CSS

depuis du XML via XSLT (ou autre)depuis du XML via XSLT (ou autre) Soit, pour l’exemple, générer la structure en HTML :Soit, pour l’exemple, générer la structure en HTML :

<html><html><table border="1" class=”livres”><table border="1" class=”livres”>

<tr class=”livres_head”> <tr class=”livres_head”> <th>Livre</th><th>Prix</th> <th>Livre</th><th>Prix</th> </tr> </tr> <tr> <tr> <td class=”titre”>Starship Titanic</td> <td class=”titre”>Starship Titanic</td>

<td class=”prix”>$14</td><td class=”prix”>$14</td> </tr> </tr> <tr> <tr> <td class=”titre”>Dune</td><td class=”prix”>$29</td> <td class=”titre”>Dune</td><td class=”prix”>$29</td> </tr> </tr>

</table></table></html></html>

et du CSS (ou mieux, CSS2) pour le look:et du CSS (ou mieux, CSS2) pour le look:td.titre { color: orange; }td.titre { color: orange; }

Page 143: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 143

SVG (1)SVG (1) Pouvoir faire des dessins sur le web: structurés et vectoriels, Pouvoir faire des dessins sur le web: structurés et vectoriels,

donc plus petitsdonc plus petits Gardant de la sémantique (texte sélectionnable) mais Gardant de la sémantique (texte sélectionnable) mais

permettant un rendu de très haute qualitépermettant un rendu de très haute qualité SVG, Scalable Vector Graphics, 1.0 depuis le 5 sept 2001)SVG, Scalable Vector Graphics, 1.0 depuis le 5 sept 2001) Combine puissance de postscript et filtres à la photoshopCombine puissance de postscript et filtres à la photoshop En XML et CSS, avec liens, namespaces, DOM, etc…En XML et CSS, avec liens, namespaces, DOM, etc… L’exempel suivant crée une image en 35 lignes de SVGL’exempel suivant crée une image en 35 lignes de SVG

Page 144: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 144

SVG (2)SVG (2) <?xml version="1.0" encoding="ISO-8859-1"?><?xml version="1.0" encoding="ISO-8859-1"?>

<svg x="10" y="30" width="430" height="370" viewBox="0 0 200 120"><svg x="10" y="30" width="430" height="370" viewBox="0 0 200 120"> <title>Example filters01.svg - introducing filter effects</title> <title>Example filters01.svg - introducing filter effects</title> <desc>An example which combines multiple filter primitives to produce a 3D effect.</desc> <desc>An example which combines multiple filter primitives to produce a 3D effect.</desc> <defs> <defs> <filter id="MyFilter" filterUnits="userSpaceOnUse" x="0" y="0" width="450” <filter id="MyFilter" filterUnits="userSpaceOnUse" x="0" y="0" width="450” height="450">height="450"> <feGaussianBlur in="SourceAlpha" stdDeviation="4" result="blur"/> <feGaussianBlur in="SourceAlpha" stdDeviation="4" result="blur"/> <feOffset in="blur" dx="4" dy="4" result="offsetBlur"/> <feOffset in="blur" dx="4" dy="4" result="offsetBlur"/> <feSpecularLighting in="blur" surfaceScale="5" specularConstant=".75” <feSpecularLighting in="blur" surfaceScale="5" specularConstant=".75” specularExponent="20" lighting-color="white" result="specOut">specularExponent="20" lighting-color="white" result="specOut"> <fePointLight x="-5000" y="-10000" z="20000"/> <fePointLight x="-5000" y="-10000" z="20000"/> </feSpecularLighting> </feSpecularLighting> <feComposite in="specOut" in2="SourceAlpha" operator="in" <feComposite in="specOut" in2="SourceAlpha" operator="in" result="specOut"/> result="specOut"/> <feComposite in="SourceGraphic" in2="specOut" operator="arithmetic” k1="0" k2="1" <feComposite in="SourceGraphic" in2="specOut" operator="arithmetic” k1="0" k2="1" k3="1" k4="0" result="litPaint"/>k3="1" k4="0" result="litPaint"/> <feMerge> <feMerge> <feMergeNode in="offsetBlur"/> <feMergeNode in="offsetBlur"/> <feMergeNode in="litPaint"/> <feMergeNode in="litPaint"/> </feMerge> </feMerge> </filter> </filter> </defs> </defs>

Page 145: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 145

SVG (3)SVG (3) <rect x="1" y="1" width="198" height="118" fill="#888888" stroke="blue"/><rect x="1" y="1" width="198" height="118" fill="#888888" stroke="blue"/>

<g filter="url(#MyFilter)"> <g filter="url(#MyFilter)"> <g> <g> <path fill="none" stroke="#D90000" stroke-width="10" <path fill="none" stroke="#D90000" stroke-width="10" d="M50,90 C0,90 0,30 50,30 L150,30 C200,30 200,90 150,90 z"/> d="M50,90 C0,90 0,30 50,30 L150,30 C200,30 200,90 150,90 z"/> <path fill="#D90000" <path fill="#D90000" d="M60,80 C30,80 30,40 60,40 L140,40 C170,40 170,80 140,80 z"/> d="M60,80 C30,80 30,40 60,40 L140,40 C170,40 170,80 140,80 z"/> <g fill="#FFFFFF" stroke="black" font-size="45" font-family="Verdana"> <g fill="#FFFFFF" stroke="black" font-size="45" font-family="Verdana"> <text x="52" y="76">SVG</text> <text x="52" y="76">SVG</text> </g> </g> </g> </g> </g> </g></svg></svg>

Ce qui donne :Ce qui donne :

Page 146: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 146

XML sur la couche applicationXML sur la couche application XML est aussi utilisé sur et par la couche applicationXML est aussi utilisé sur et par la couche application La couche application sert à gérer la partie logique d’une La couche application sert à gérer la partie logique d’une

application et gère les opérations à effectuer en réponse aux application et gère les opérations à effectuer en réponse aux actions de l ’utilisateur…actions de l ’utilisateur…

2 cas d ’utilisation de XML sur la couche application :2 cas d ’utilisation de XML sur la couche application :– dialogue inter-applicatifs (Webservices,…)dialogue inter-applicatifs (Webservices,…)– container des fonctions de l ’application (langages de script container des fonctions de l ’application (langages de script

compatibles XML)compatibles XML) Toutes les opérations sont effectivement implementées dans un Toutes les opérations sont effectivement implementées dans un

langage de programmation (Java, python,…)langage de programmation (Java, python,…) On peut les encapsuler dans du XML et les réutiliser sous forme On peut les encapsuler dans du XML et les réutiliser sous forme

de bibliothèque de balises (taglib)de bibliothèque de balises (taglib)

Page 147: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 147

JSP 1.2JSP 1.2 Les Java Server Page version 1.2 sont compatibles avec XML Les Java Server Page version 1.2 sont compatibles avec XML

(respectent la syntaxe)(respectent la syntaxe) Le programmeur peut définir ses propres bibliothèques de Le programmeur peut définir ses propres bibliothèques de

balises qui correspondront à autant de fonction écrites en Java.balises qui correspondront à autant de fonction écrites en Java.

Page 148: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 148

XSPXSP eXtensible Server Page est utilisé dans le système de publication XML eXtensible Server Page est utilisé dans le système de publication XML

open source Cocoonopen source Cocoon <xsp:page><xsp:page>

<xsp:structure> <xsp:structure> <xsp:include>java.text.SimpleDateFormat</xsp:include> <xsp:include>java.text.SimpleDateFormat</xsp:include> </xsp:structure> </xsp:structure> <xsp:logic> <xsp:logic> private static String timeOfDay(String format) { private static String timeOfDay(String format) { if (format == null || format.length() == 0) { format = "hh:mm:ss";} if (format == null || format.length() == 0) { format = "hh:mm:ss";} return SimpleDateFormat.getInstance().format(new Date(), format); return SimpleDateFormat.getInstance().format(new Date(), format); } } </xsp:logic> </xsp:logic>. . .. . . <user-root> <user-root> . . . . . . <p>It's now <p>It's now <xsp:expr>timeOfDay(request.getParameter("timeFormat"));</xsp:expr></p><xsp:expr>timeOfDay(request.getParameter("timeFormat"));</xsp:expr></p> . . . . . . </user-root> </user-root><xsp:page><xsp:page>

Page 149: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 149

RDFRDF

Resource Description FrameworkResource Description Framework Sous ensemble de XML utilisé pour exprimer des meta-donnéeesSous ensemble de XML utilisé pour exprimer des meta-donnéees

(propriétés, “meta-data”) sur des documents XML(propriétés, “meta-data”) sur des documents XML Exemple : les balises <author> ou <auteur>Exemple : les balises <author> ou <auteur> veulent dire la veulent dire la

même chose.même chose.RDF est l’implémentation d’un mécanisme très général pour faire RDF est l’implémentation d’un mécanisme très général pour faire cela.cela.

RDF modélise en XML des relations entre 2 objets:RDF modélise en XML des relations entre 2 objets:– Containers: groupes de ressources (objets, relations)Containers: groupes de ressources (objets, relations)– Statements: application de relations sur les membres Statements: application de relations sur les membres

de groupes de ressourcesde groupes de ressources

Page 150: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 150

RDF : SyntaxeRDF : Syntaxe <?xml version="1.0"?><?xml version="1.0"?>

<rdf:RDF <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:s="http://description.org/schema/"> xmlns:s="http://description.org/schema/"> <rdf:Description about="http://books.org/StarshipTitanic"> <rdf:Description about="http://books.org/StarshipTitanic"> <s:author>http://chez.com/TerryJones</s:author> <s:author>http://chez.com/TerryJones</s:author> </rdf:Description> </rdf:Description> </rdf:RDF> </rdf:RDF>

syntaxe abrégée:syntaxe abrégée: <rdf:Description about="http://books.org/StarshipTitanic” <rdf:Description about="http://books.org/StarshipTitanic” s:author="http://chez.com/TerryJones" /> s:author="http://chez.com/TerryJones" />

RDF est peu utilisé : technologie générale (trop?)RDF est peu utilisé : technologie générale (trop?)

Page 151: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 151

XformsXforms Nouvelle norme pour remplacer les formulaires de HTML en XML Nouvelle norme pour remplacer les formulaires de HTML en XML

(XHTML)(XHTML) Séparation entre modèle de données (XForms model) et Séparation entre modèle de données (XForms model) et

présentation (HTML, WML, Palm...)présentation (HTML, WML, Palm...) Transfert des informations par HTTP, en XMLTransfert des informations par HTTP, en XML Vérifications et calculs locaux par un langage de contraintesVérifications et calculs locaux par un langage de contraintes Ordres pour lier (binding) l’affichage aux données avec XPathOrdres pour lier (binding) l’affichage aux données avec XPath PPagesages multiples multiples

– données: <p><status id="is_married">yes</status></p>données: <p><status id="is_married">yes</status></p>– xform:xform: <checkbox ref=’id(“is_married”)’> <checkbox ref=’id(“is_married”)’>

<caption>Are you married?</caption><caption>Are you married?</caption> <help>We need this to determine your tax <help>We need this to determine your tax

allowance</help>allowance</help> </checkbox></checkbox>

– rendu : Are you married?rendu : Are you married?

Page 152: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 152

Web servicesWeb services ““Web services” est un mot à la mode recouvrant toutes les Web services” est un mot à la mode recouvrant toutes les

technologies pour que des programmes puissent s’échanger des technologies pour que des programmes puissent s’échanger des informations via le web.informations via le web.

Censé remplacer RPC, CORBA, DCOM, et les bricolages sur Censé remplacer RPC, CORBA, DCOM, et les bricolages sur HTTP+HTMLHTTP+HTML

Un ensemble de groupes en évolution, par ordre de stabilité:Un ensemble de groupes en évolution, par ordre de stabilité:– XML-Protocols (SOAP) pour le transport (XML sur HTTP)XML-Protocols (SOAP) pour le transport (XML sur HTTP)

(Simple Object Access Protocol)(Simple Object Access Protocol)– UDDI répertoire de services UDDI répertoire de services

(Universal Description, Discovery and Integration)(Universal Description, Discovery and Integration)– WSDL description des services, et de comment les utiliserWSDL description des services, et de comment les utiliser

(Web Services Definition Language)(Web Services Definition Language)– XKMS pour la sécuritéXKMS pour la sécurité

(XML Key Management Specification)(XML Key Management Specification)– XLANG/XAML pour fournir un modèle transactionnelXLANG/XAML pour fournir un modèle transactionnel

XAML “2-phase commit”XAML “2-phase commit” XLANG “compensatory actions” (undo)XLANG “compensatory actions” (undo)

– ebXML ancien effort dans ce domaineebXML ancien effort dans ce domaine (electronic business XML)(electronic business XML)

Page 153: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 153

XML Protocols : SOAPXML Protocols : SOAP Permet d’aPermet d’appeler des fonctions/mppeler des fonctions/mééthodes à distance de façon thodes à distance de façon

simple:simple: – sur HTTP (ou sur HTTP (ou d’d’autreautress protocoles protocoles ( (SMTPSMTP)) : SOAP est un : SOAP est un meta-protocole!)meta-protocole!)– Les Les données données sont sont en XMLen XML

SOAP 1.1 est une première instance de XML Protocols poussée par SOAP 1.1 est une première instance de XML Protocols poussée par Microsoft (Microsoft (architecture architecture .NET) après .NET) après une une lutte interne avec XML-datalutte interne avec XML-data

D’autres protocoles supportant plus de modes de transport D’autres protocoles supportant plus de modes de transport (SMTP…) devraient apparaître(SMTP…) devraient apparaître

SOAP 1.2 SOAP 1.2 est est en coursen cours d’élaboration d’élaboration Principe :Principe :

– Une Enveloppe qui contientUne Enveloppe qui contient header (info de transaction, sheader (info de transaction, séécurité...)curité...) body (l’appel de méthode lui-même)body (l’appel de méthode lui-même)

Page 154: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 154

SOAP: exempleSOAP: exemple POST http://www.SmartHello.com/HelloApplication HTTP/1.0POST http://www.SmartHello.com/HelloApplication HTTP/1.0

Content-Type: text/xml; charset="utf-8"Content-Type: text/xml; charset="utf-8"Content-Length: 587Content-Length: 587SOAPAction: "http://www.SmartHello.com/HelloApplication#sayHelloTo"SOAPAction: "http://www.SmartHello.com/HelloApplication#sayHelloTo"

<SOAP-ENV:Envelope <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"

xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema"> xmlns:xsd="http://www.w3.org/1999/XMLSchema"> <SOAP-ENV:Header> <SOAP-ENV:Header> </SOAP-ENV:Header> </SOAP-ENV:Header> <SOAP-ENV:Body> <SOAP-ENV:Body> <ns1:sayHelloTo <ns1:sayHelloTo xmlns:ns1="Hello" xmlns:ns1="Hello" SOAPSOAP-E-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">NV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">

<name xsi:type="xsd:string">World</name><name xsi:type="xsd:string">World</name> </ns1:sayHelloTo> </ns1:sayHelloTo> </SOAP-ENV:Body> </SOAP-ENV:Body></SOAP-ENV:Envelope></SOAP-ENV:Envelope>

Page 155: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 155

UDDI: exempleUDDI: exemple <find_business generic="1.0" xmlns="urn:uddi-org:api"><find_business generic="1.0" xmlns="urn:uddi-org:api">

<name>Microsoft</name> <name>Microsoft</name></find_business></find_business>

<businessList generic="1.0" operator="Microsoft Corporation"<businessList generic="1.0" operator="Microsoft Corporation" truncated="false" xmlns="urn:uddi-org:api"> truncated="false" xmlns="urn:uddi-org:api"> <businessInfos> <businessInfos> <businessInfo <businessInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3"> businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3"> <name>Microsoft Corporation</name> <name>Microsoft Corporation</name> <serviceInfos> <serviceInfos> <serviceInfo <serviceInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3" businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3" serviceKey="1FFE1F71-2AF3-45FB-B788-09AF7FF151A4"> serviceKey="1FFE1F71-2AF3-45FB-B788-09AF7FF151A4"> <name>Web services for smart searching</name> <name>Web services for smart searching</name> </serviceInfo> </serviceInfo> ... ... </businessInfo> </businessInfo> </businessInfos> </businessInfos></businessList></businessList>

Page 156: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 156

WSDLWSDL WSDL permet de décrire pour le web service des:WSDL permet de décrire pour le web service des:

– Types Types : l: la définition des types des données manipuléesa définition des types des données manipulées– Messages Messages : l: les messages envoyés avec types acceptés es messages envoyés avec types acceptés – Operations Operations : u: une action de haut niveau (composée de messages, ne action de haut niveau (composée de messages,

requêtes, réponses...)requêtes, réponses...)– Port Types Port Types : : les ports (URLs HTTP) et les messages qu’ils acceptentles ports (URLs HTTP) et les messages qu’ils acceptent– Bindings Bindings : l: les opes opéérations à faire sur un Port Typerations à faire sur un Port Type– Port Port : : un service élémentaireun service élémentaire : binding + URL: binding + URL– Service Service : l: l’ensemble des ports’ensemble des ports

Page 157: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 157

Les Web Services aujourd’huiLes Web Services aujourd’hui Système “meta” complexe.Système “meta” complexe. Microsoft veut le rendre facile à mettre en oeuvre depuis sa Microsoft veut le rendre facile à mettre en oeuvre depuis sa

plateformeplateforme .NET.NET Enorme Enorme intéret intéret actuellement. actuellement. SOAP va marcher, les autres… ?SOAP va marcher, les autres… ?

Page 158: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 158

Traitement des documents Traitement des documents XMLXML

Pour utiliser des documents XML dans un programme il faut les Pour utiliser des documents XML dans un programme il faut les parser.parser.

Le parsing consiste a lire un document XML pour en construire Le parsing consiste a lire un document XML pour en construire une représentation en mémoire sous forme d’arbre.une représentation en mémoire sous forme d’arbre.

Génèrer un document XML Génèrer un document XML àà partir d’un arbre est très facile, peu partir d’un arbre est très facile, peu d’outils proposent cette fonctionnalité (d’outils proposent cette fonctionnalité (qui est qui est en général en général implémentée par le développeur)implémentée par le développeur)

Implémentations rapides et libres des normesImplémentations rapides et libres des normes (xerces, sax,…) (xerces, sax,…)

Page 159: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 159

SAXSAX API java de niveau lexical, puis API java de niveau lexical, puis adaptation à d’autres langages adaptation à d’autres langages

(python...)(python...) permet aux applications d’utiliser n’importe quels parseurs XML permet aux applications d’utiliser n’importe quels parseurs XML

via SAXvia SAX découpe le flux d’entrée en tokens, et découpe le flux d’entrée en tokens, et déclenche des fonctions déclenche des fonctions

sursur chaque chaqueévenements = méthodes de handlersévenements = méthodes de handlers

efficace: permet de traiter des gigas de données efficace: permet de traiter des gigas de données avecavec peu de peu de mémoiremémoire

bas niveau: convient à tous usage, faible overhead.bas niveau: convient à tous usage, faible overhead. SAX 1: XML 1.0, SAX 2: gère namespacesSAX 1: XML 1.0, SAX 2: gère namespaces Code à écrire : l’application doit construire l’arbre…Code à écrire : l’application doit construire l’arbre…

Page 160: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 160

Evénements SAXEvénements SAX

XMLXML Evènements SAX Evènements SAX <?xml version="1.0"><?xml version="1.0"> start document start document

<doc><doc> start element: docstart element: doc <para style=”normal”> start element: (para, <para style=”normal”> start element: (para, attributes-list)attributes-list)

Hello, world!Hello, world! characters: Hello, world! characters: Hello, world! </para> </para> end element: para end element: para</doc></doc> end element: doc end element: doc

end document end document

Il existe d’autres évènements : ignorableWhitespace, Il existe d’autres évènements : ignorableWhitespace, processingInstruction,...processingInstruction,...

Page 161: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 161

Utilisation de SAXUtilisation de SAX écrire les handlers: écrire les handlers:

– DocumentHandler, DocumentHandler, – DTDHandler, DTDHandler, – EntityResolver, EntityResolver, – ErrorHandlerErrorHandler

instancier un (des) parseur particulierinstancier un (des) parseur particulier– SAXparser=xml.sax.drivers.drv_xmlproc.SAX_XPParser()SAXparser=xml.sax.drivers.drv_xmlproc.SAX_XPParser()– SAXparser=xml.sax.saxexts.make_parser("xmlproc")SAXparser=xml.sax.saxexts.make_parser("xmlproc")– SAXparser=xml.sax.saxexts.make_parser()SAXparser=xml.sax.saxexts.make_parser()

positionner ses handlerspositionner ses handlers– SAXparser.setDocumentHandler(DocumentHandler())SAXparser.setDocumentHandler(DocumentHandler())– SAXparser.setErrorHandler(ErrorHandler())…SAXparser.setErrorHandler(ErrorHandler())…

lancer le parsinglancer le parsing– SAXparser.parse(sys.argv[1])SAXparser.parse(sys.argv[1])

SAX: “norme” de fait d’un individu qui s’est imposée (J.Clark)SAX: “norme” de fait d’un individu qui s’est imposée (J.Clark)

Page 162: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 162

SAX Exemple (1)SAX Exemple (1)import org.xml.sax.AttributeList;import org.xml.sax.AttributeList;

import org.xml.sax.HandlerBase;import org.xml.sax.HandlerBase;

import org.xml.sax.Parser;import org.xml.sax.Parser;

import org.xml.sax.Locator;import org.xml.sax.Locator;

import org.xml.sax.SAXException;import org.xml.sax.SAXException;

/* Exemple d  ’ utilisation de SAX - NotifyStr.java *//* Exemple d  ’ utilisation de SAX - NotifyStr.java */

public class NotifyStr extends HandlerBase {public class NotifyStr extends HandlerBase {

static public void main(String[] argv) {static public void main(String[] argv) {

try {try {

// get class object for SAX Driver (com.ibm.xml.parser.SAXDriver for XML4J)// get class object for SAX Driver (com.ibm.xml.parser.SAXDriver for XML4J)

Class c = Class.forName(argv[0]);Class c = Class.forName(argv[0]);

// create instance of the class// create instance of the class

Parser parser = (Parser)c.newInstance();Parser parser = (Parser)c.newInstance();

// create document handler,// create document handler,

NotifyStr notifyStr = new NotifyStr();NotifyStr notifyStr = new NotifyStr();

// and register it// and register it

parser.setDocumentHandler(notifyStr);parser.setDocumentHandler(notifyStr);

parser.parse(argv[1]);parser.parse(argv[1]);

} catch (Exception e) {e.printStackTrace();}} catch (Exception e) {e.printStackTrace();}

}}

Page 163: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 163

SAXSAX Exemple (2)Exemple (2)public NotifyStr() {}public NotifyStr() {}

public void startDocument() throws SAXException {public void startDocument() throws SAXException {

System.out.println("startDocument is called:");System.out.println("startDocument is called:");

}}

public void endDocument() throws SAXException {public void endDocument() throws SAXException {

System.out.println("endDocument is called:");System.out.println("endDocument is called:");

}}

public void startElement(String name, AttributeList amap) throws SAXException {public void startElement(String name, AttributeList amap) throws SAXException {

System.out.println("startElement is called: element name=" + name);System.out.println("startElement is called: element name=" + name);

for (int i = 0; i < amap.getLength(); i++) {for (int i = 0; i < amap.getLength(); i++) {

String attname = amap.getName(i);String attname = amap.getName(i);

String type = amap.getType(i);String type = amap.getType(i);

String value = amap.getValue(i);String value = amap.getValue(i);

System.out.println(" attribute name="+attname+" type="+type+" value="+value);System.out.println(" attribute name="+attname+" type="+type+" value="+value);

}}

}}

public void endElement(String name) throws SAXException {public void endElement(String name) throws SAXException {

System.out.println("endElement is called: " + name);System.out.println("endElement is called: " + name);

}}

Page 164: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 164

DOMDOM : besoins: besoins HistoriqueHistorique : : JJavascript dans browsersavascript dans browsers pour pour pouvoir pouvoir ""fairfaire bouger"e bouger" Le lLe langage doit pouvoir accéder au document HTML dans le angage doit pouvoir accéder au document HTML dans le

browser:browser:– <a href="" onMouseOver="this.fillcolor=’red’ ”><a href="" onMouseOver="this.fillcolor=’red’ ”>

Problème: Netscape et InternetProblème: Netscape et Internet Explorer avaient des APIs Explorer avaient des APIs différentes pour manipuler le documentdifférentes pour manipuler le document ( (DHTMLDHTML))..

BBesoin d’une API commune, le DOM Document Object Model esoin d’une API commune, le DOM Document Object Model (1998)(1998)

Historiquement pour HTML et javascript, puis pour XML et tout Historiquement pour HTML et javascript, puis pour XML et tout langagelangage

DOM API abstraite, instanciée en bindings pour les langagesDOM API abstraite, instanciée en bindings pour les langages– javascript, java, C++, perl, python, tcl,...javascript, java, C++, perl, python, tcl,...

Permet de manipuler n’importe quel arbrePermet de manipuler n’importe quel arbre utilisé souvent par les parseurs eux-mêmeutilisé souvent par les parseurs eux-même

Page 165: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 165

DOMDOM (1) (1) DOM, norme officielle W3CDOM, norme officielle W3C DOM ne spécifie que l’interface au niveau sourceDOM ne spécifie que l’interface au niveau source pas de compatibilité binaire entre implémentationspas de compatibilité binaire entre implémentations les données ne sont même pas forcément implémentées les données ne sont même pas forcément implémentées

sous forme d’arbresous forme d’arbre ne fait que créer / manipuler l’arbre, pas load/save.ne fait que créer / manipuler l’arbre, pas load/save. DOM level1, puis DOM level2 (namespaces: methodes DOM level1, puis DOM level2 (namespaces: methodes

postfixées par NS)postfixées par NS), , DOM level3 en préparation (load/save)DOM level3 en préparation (load/save)

Page 166: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 166

DOM (2)DOM (2) Un DOM est constitué de noeuds (nodes), de différents Un DOM est constitué de noeuds (nodes), de différents

types:types:– Document, Element, Attr, Text, CDATAsection, Entity, Document, Element, Attr, Text, CDATAsection, Entity,

Notation, Comment, Processing Instruction, EntityReference,Notation, Comment, Processing Instruction, EntityReference, DocumentType, DocumentFragmentDocumentType, DocumentFragment

– Attributs sont des Nodes mais ne sont pas connectés dans Attributs sont des Nodes mais ne sont pas connectés dans l’arbre (pas retournés par l’arbre (pas retournés par la méthodela méthode node.childNodes). node.childNodes).

– Les fils des attributs sont des noeuds texte et/ou Les fils des attributs sont des noeuds texte et/ou EntityReference: foo=”a&bar;x” est un attribut à 3 fils.EntityReference: foo=”a&bar;x” est un attribut à 3 fils.

Page 167: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 167

DOM DOM PPrincipesrincipes (1) (1) API à plusieurs visages:API à plusieurs visages:

– NodeNode : générique: générique,, tout est un noeud tout est un noeud.. SSimple et efficace, mais on perd le typage statique (approcheimple et efficace, mais on perd le typage statique (approche Netscape)Netscape)

– ObjetObjet : plus lisible et typée mais moins efficace (en java et COM): plus lisible et typée mais moins efficace (en java et COM)– TType element, attributs, etc... (approche Microsoft)ype element, attributs, etc... (approche Microsoft)

Implémentation de DOM : Implémentation de DOM : – DOM Core + spécialisation par domaineDOM Core + spécialisation par domaine– Exemple en SVG Exemple en SVG : :

p.setX(45)p.setX(45) au lieu deau lieu de p.setAttributeNS(null, “x”, “450”);p.setAttributeNS(null, “x”, “450”);

Page 168: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 168

DOM Principes (2)DOM Principes (2) Le problèmeLe problème : les objets DOM sont non typés (tout est un noeud),: les objets DOM sont non typés (tout est un noeud),

donc on perd toutedonc on perd toutes les contraintes des les contraintes de type. type. DDes es prosélytes de la programmation objet prosélytes de la programmation objet proposent des proposent des

interfaces objet (JDOM)interfaces objet (JDOM) Il faut cIl faut considérer DOM comme une interface à fournir à onsidérer DOM comme une interface à fournir à

l’extérieur,l’extérieur, pas comme une façon de structurer ses donnéespas comme une façon de structurer ses données Mais, comme beaucoup d’outils ont une interface DOM, permet Mais, comme beaucoup d’outils ont une interface DOM, permet

de très vite maquetterde très vite maquetter

Page 169: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 169

DOM ExempleDOM Exemple/* Exemple avec le parser xml d’Ibm (XML4J) - SimpleParse.java *//* Exemple avec le parser xml d’Ibm (XML4J) - SimpleParse.java */

import org.w3c.dom.Document;import org.w3c.dom.Document;

import com.ibm.xml.parser.Parser;import com.ibm.xml.parser.Parser;

import java.io.FileInputStream;import java.io.FileInputStream;

public class SimpleParse {public class SimpleParse {

public static void main(String[] argv) {public static void main(String[] argv) {

try {try {

// Open specified file.// Open specified file.

FileInputStream is = new FileInputStream(argv[0]);FileInputStream is = new FileInputStream(argv[0]);

// Start to parse// Start to parse

Parser parser = new Parser(argv[0]);Parser parser = new Parser(argv[0]);

Document doc = parser.readStream(is);Document doc = parser.readStream(is);

if (parser.getNumberOfErrors() > 0) { System.exit(1); }if (parser.getNumberOfErrors() > 0) { System.exit(1); }

// Codes for process the document will be here// Codes for process the document will be here

} catch (Exception e) { e.printStackTrace(); }} catch (Exception e) { e.printStackTrace(); }

}}

}}

Page 170: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 170

DOM DOM SSpecspecs MManipanipulationulation de l’arbre: DOM Core. de l’arbre: DOM Core.

– Package org.w3c.dom.*Package org.w3c.dom.*– Fournit des objets et des méthodes abstraits à implémenter Fournit des objets et des méthodes abstraits à implémenter

par les parseurs (class Node,… méthodes getFirstChild(), par les parseurs (class Node,… méthodes getFirstChild(), getNextSibling, getParentNode(),…)getNextSibling, getParentNode(),…)

DOM Level 3 : Modularisation et séparation en plusieurs modulesDOM Level 3 : Modularisation et séparation en plusieurs modules

Page 171: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 171

DOM ViewsDOM Views GGérer les différentes vues sur le même documentérer les différentes vues sur le même document CClicks dans une vuelicks dans une vue : : dans quel noeud du document?dans quel noeud du document?

Page 172: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 172

DOM EventsDOM Events

CComment avoir des évènements sur les nodesomment avoir des évènements sur les nodes Actions de l’uActions de l’utilisateurtilisateur

– passage de la souris,passage de la souris,– cliclicck,k,– focusfocus

MModification de structureodification de structure du document du document– ajout de noeud,ajout de noeud,– suppressionsuppression……

Page 173: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 173

DOM StyleDOM Style CComment manipuler en mémoiromment manipuler en mémoiree les styles sheets les styles sheets NN’importe quel type de style sheets’importe quel type de style sheets et CSS en particulieret CSS en particulier

Page 174: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 174

DOM Traversal & RangeDOM Traversal & Range CComment parcourir l’arbreomment parcourir l’arbre

– itérateurs = itérateurs = ""dérouledéroule"" l’arbre comme si à plat l’arbre comme si à plat– TreeWalkers = garde la structureTreeWalkers = garde la structure

Filtres sur noeudsFiltres sur noeuds CComment spécifier unomment spécifier une plage (e plage (rangerange)) de nœuds de nœuds entre 2 points dentre 2 points de e

l’arbrel’arbre

Page 175: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 175

XML sur la couche donnéeXML sur la couche donnée XML est principalement un format de stockage des donnéesXML est principalement un format de stockage des données Il existe plusieurs possibilités pour utiliser XML sur la couche Il existe plusieurs possibilités pour utiliser XML sur la couche

donnée :donnée :– utilisation de système de gestion de bases de données utilisation de système de gestion de bases de données

nativement XML (Ozone, Xindice [ex dbXML],...)nativement XML (Ozone, Xindice [ex dbXML],...)– mapping entre une base de données relationnelle et des mapping entre une base de données relationnelle et des

objets, méthodes et propriétés de chaque instance ensuite objets, méthodes et propriétés de chaque instance ensuite stockées / envoyées en XML stockées / envoyées en XML

développé à la main, développé à la main, aides dans certaines architectures (Container Managed aides dans certaines architectures (Container Managed

Persistence dans J2EE,…)Persistence dans J2EE,…)

Page 176: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 176

ConclusionConclusion XML et surtout la cohorte de sous-ensembles spécialisés qui XML et surtout la cohorte de sous-ensembles spécialisés qui

l’accompagnent répondent à la plupart des besoins l’accompagnent répondent à la plupart des besoins XML permet de combiner des applications très différentes en XML permet de combiner des applications très différentes en

utilisant un langage communutilisant un langage commun XML est réçent mais sa croissance et son adoption sont rapidesXML est réçent mais sa croissance et son adoption sont rapides Il faut faire son choix entre les nombreux sous-ensembles, parfois en

doubles, et miser sur ceux qui resteront

Page 177: XML et ses applications XML et ses applications Patrick.Itey@sophia.inria.frLudovic.Maitre@sophia.inria.fr.

12 octobre 2001 Patrick Itey / Ludovic Maître XML et ses applications - page 177

RéférencesRéférences Le site du W3C : w3.org

Spécification XML annotée : xml.com/axml/axml.html

Tutoriaux : www.w3schools.com - www.xfront.org - java.sun.com/xml

Site généraliste - xml.com

Info sur logiciels commerciaux : xmlsoftware.com

Info sur logiciels open-source : xml.apache.org - www.garshol.priv.no/download/xmltools/

Le site de Robin CoverLe site de Robin Coverhttp://www.oasis-open.org/cover/http://www.oasis-open.org/cover/

et et google.comgoogle.com ! !