Vous êtes sur la page 1sur 165

XML: eXtensible Markup Language Introduction

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Introduction
Solution de la gestion et de la publication documentaire
IBM (Goldfarb, Mosher&Lory)

GML (1969)
SGML (1986)

Application (i.e. DTD) de SGML pour la prsentation des documents sur le Web, Langage de visualisation, non adapt HTML (1992) Recommandation W3C lchange entre programmes

Normalisation ISO 8879

Mta-langage gnral de balisage ; Normalisation de GML, Puissant mais complexe, taille des spcifications imposantes (>500pages) Introduit la notion de DTD (grammaire spcifique une application) Mta-langage de structuration, simplifi compatible SGML, permet de: Normaliser et structurer linformation avec un point de vue smantique Sparer le contenu informatif des donnes de leur reprsentation changer/partager les donnes
ENIS 2008-2009

et HTML Recommandation W3C devient une instance de XML ; XHTML utilise les mmes balises que HTML avec une syntaxe XML et des contraintes de mises en forme plus strictes.

XHTML (1999)

Recommandation W3C

XML (1998)

Fadoua DRIRA HAMMAMI

XML versus SGML


Le modle de rfrence : SGML Standard : normalis depuis 1986 (ISO 8879) Generalized : langage gnraliste de haut niveau dabstraction Utilis dans le monde de la gestion documentaire et de la publication Permet dtablir une distinction claire entre linformation (mots, images, etc .) et la prsentation de linformation (polices, couleurs, organisation, etc .) Markup : fond sur la dfinition et lutilisation de balises Syntaxe permissive (balises non refermes, attributs vides, etc .) Language : dcrit des informations relatives au contenu du document Repose sur la dfinition de structures (DTD) pour normaliser la rdaction Objectifs spcifiques de XML : XML doit pouvoir tre utilis sans difficult sur Internet Il doit tre facile dcrire des programmes qui manipulent du XML Il doit tre facile de crer et de lire des documents XML (intelligibilit) le nombre doptions doit tre rduit au minimum.
Fadoua DRIRA HAMMAMI

Introduction

ENIS 2008-2009

XML versus HTML


HTML (HyperText Markup Language) est un langage ddi : Application de SGML pour la prsentation de documents sur le web. La vocation de XML nest pas de se substituer HTML : Structuration versus prsentation HTML rpond la question comment prsenter des donnes ? XML rpond la question comment structurer des donnes ? Fond versus forme HTML sintresse la forme XML sintresse au fond XML et HTML sont complmentaires : Lvolution du web va vers une sparation du fond et de la forme Il faudra conserver un langage de mise en forme style HTML
ENIS 2008-2009

Introduction

Fadoua DRIRA HAMMAMI

Introduction

XHTML nautorise pas les simplifications que lon pouvait se permettre en HTML. Une page XHTML est donc un document XML utilisant un langage clairement spcifi. Un programme de validation peut y tre appliqu pour sassurer de sa conformit parfaite. Plus de fiabilit, cest ce quapporte un langage XML.
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Introduction XML : Dfinition


XML est un mta-langage de description des donnes, c'est--dire quil permet de dfinir des langages de description dinformations structures, encore appels langages de structuration. En soi, XML ne sert rien (au sens applicatif du terme). En revanche, il est possible, partir dune de ces descriptions des donnes, dutiliser les nombreuses applications de XML pour faire quelque chose avec ces donnes. Par exemple : affichage en HTML, traitements automatiques des donnes (extraction de donnes, tri, transformation). XML permet notamment (liste non exhaustive) de : Normaliser et structurer linformation avec un point de vue smantique. Sparer le contenu informatif des donnes de leur reprsentation. changer/partager des donnes entre systmes informatiques.

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XML et les bases de donnes

Introduction

Les bases de donnes relationnelles offrent des performances intressantes mais elles noptimisent pas les usages courants. (mlanger dans une mme base des donnes de mme nature mais sans dpendance entre elles).
Fadoua DRIRA HAMMAMI

XML permet de stocker des donnes selon des regroupements correspondant aux usages principaux : les donnes sont regroupes selon leurs dpendances.
ENIS 2008-2009

XML: eXtensible Markup Language Concepts de base

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Description dun document XML


XML est la spcification de la syntaxe du langage de structuration. Un document XML est dit bien form sil respecte la syntaxe XML.
Prologue (Entte du document) <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?> <!-- Nom du fichier : BIBLIO.xml --> Commentaire
Dclaration XML

lment document (lment racine)

Racine du document <BIBLIO subject ="XML" > <BOOK isbn="9782212" lang="fr" subject="applications"> <AUTHOR> <FIRSTNAME> Jean-Chrisotophe </FIRSTNAME> <LASTNAME>Bernadac </LASTNAME> </AUTHOR> <TITLE> Construire une application XML </TITLE> <PUBLISHER> <NAME> Eyrolles </NAME> Balise ouvrante <PLACE> Paris </PLACE> </PUBLISHER> Balise fermante <DATEPUB>1999 </DATEPUB> </BOOK > </BIBLIO> ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Description dun document XML


Le prologue d'un document XML comprend : La dclaration XML <?xml version ="1.0" ?>

Elle est optionnelle mais recommande, notamment pour y faire figurer le numro de version. Remarque : Si cette dclaration est incluse, lattribut version doit ncessairement y figurer. Il permet dindiquer la reprsentation physique des caractres du fichier; afin dviter de coder chaque caractre spcial. Ils peuvent galement exister, Ils ne peuvent tre placs lintrieur dune balise et ne sont pas obligatoirement transmis lapplication.

Lencodage par lattribut encoding <?xml version="1.0" encoding="ISO-8859-1"?> Des commentaires <!-- Nom du fichier : BIBLIO.xml -->

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Description dun document XML


Lattribut SDD (Standalone Document Declaration) :
<?xml version="1.0"encoding="ISO-8859-1" standalone="yes"?> Il permet de dterminer si le document est autonome (ou autodescriptif). Si ce nest pas le cas, cest quil fait rfrence une DTD (ou un schma XML) externe. Par dfaut, un document XML est considr comme autonome, puisque la DTD peut tre omise.

Remarque :

Les attributs version, encoding et standalone qui figurent dans la dclaration doivent y figurer dans cet ordre. Le prologue du document peut galement contenir une dclaration de type de document (DTD), pour spcifier des informations additionnelles sur celui-ci.

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Description dun document XML


L'lment document est la seconde partie d'un document XML, correspond un lment unique, lment racine (comparable au <BODY> en HTML) qui peut contenir d'autres lments de donnes.
Un lment de donnes est un texte encadr par une balise de dbut et une balise de fin. Un lment de donnes peut tre enrichi par:

dautres lments imbriqus (structure arborescente) dans le cas dinformation de type complexe (numrations, possde des proprits) des attributs dans le cas dinformation valeur unique de type simple (information monovalue) Nom de llment

<BOOK isbn="9782212" lang="fr" subject="applications">


Attribut n1 Attribut n2 Attribut n3

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Description dun document XML


La syntaxe XML comprend des rgles strictes. Dans un document XML bien form,
Il doit y avoir une balise racine (qui englobe toutes les autres, BIBLIO dans lexemple). Toute balise ouvrante doit tre associe avec une balise fermante, sauf llment sans contenu (exemple: <BOOK/> = <BOOK> </BOOK>) . Il ne doit pas y avoir dentrelacement de balises : <a><b></a></b> (syntaxe incorrecte). La casse (majuscules/minuscules) doit tre respecte (case sensitive). Les noms des attributs doivent tre nots en minuscule. Les valeurs des attributs doivent tre nots entre guillemets ou apostrophes. Les caractres "<" et "&" sont interdits dans les contenus et remplacs par les entits "&lt;" et "&amp;". Lusage de ">" ou des guillemets simples ou doubles peut galement tre perturbant. Dans ce cas, on a recours &gt;, &apos; et &quot;. Un nom doit commencer par une lettre ou par le caractre "_" et non par un chiffre ou un autre signe de ponctuation. Un nom ne peut pas commencer par la squence de lettres x m l, quelle quen soit la casse. Aucun espace aprs le caractre d'ouverture < ou avant le caractre de fermeture >
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Description dun document XML


Le non respect des conditions prcdentes entranera systmatiquement une erreur.

Soit le code erron suivant :


<?xml version="1.0" standalone="yes"?> < date> <mois > 09 </mois> <anne> 2007 </anne> </data>

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Description dun document XML


Le non respect des conditions prcdentes entranera systmatiquement une erreur. Aprs une premire correction (suppression de lespace dans llment date) ;
<?xml version="1.0" standalone="yes"?> <date> <mois > 09 </mois> <anne> 2007 </anne> </data>

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Description dun document XML


Le non respect des conditions prcdentes entranera systmatiquement une erreur. Aprs une deuxime correction (ajout de lencodage dans lentte) ;
<?xml version="1.0" encoding="ISO-88591" standalone="yes"?> <date> <mois > 09 </mois> <anne> 2007 </anne> </data>

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Description dun document XML


Le non respect des conditions prcdentes entranera systmatiquement une erreur. Aprs une troisime correction (rectification du nom de llment de la balise de fermeture), on aboutit au code correct.
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?> <date> <mois > 09 </mois> <anne> 2007 </anne> </date>

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Exercice : structuration des donnes en XML


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

XML: eXtensible Markup Language Les composants de XML

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les composants de XML


XML est un mta-langage de balisage. Plusieurs entits lui sont associes pour permettre la mise au point, la lecture ou la visualisation de linformation structure.
Un processeur (ou parser) XML : un module logiciel recevant en entre un document XML, produisant en sortie une structure de reprsentation interne (graphe dobjets ou flux dvnements), vrifiant que les donnes sont bien formes. il permet de raliser linterface entre une application et un document XML. La structure produite est encapsule par une surface applicative standardise (API). deux types de parseurs; le parseur SAX et le parseur DOM.

Document XML Parseur XML

vnements ou objets

API Application

Traitement dun document XML par une application


ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les composants de XML


Le modle objet de document (DOM) : (standardis par le W3C) Produit un graphe dobjets en mmoire. dfinit des interfaces qui permettent daccder aux objets (lments) dun document XML. Une interface propose des proprits et des mthodes pour chaque type dlment. reprsente un document XML sous la forme dun arbre charg en mmoire et fournit des interfaces permettant de le manipuler. a des interfaces indpendantes de tout langage de programmation; un avantage du point de vue de la standardisation mais un inconvnient car il nest pas optimis pour une langage particulier. Exemple de parseurs : MSXML de Microsoft, SDK de Oracle

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les composants de XML


Interface Node Mthodes daccs et de modification Mthodes de modification des fils du des informations du nud courant nud courant
getNodeName() : retourne le nom getNodeType() : retourne le type getNodeValue() : retourne la valeur getOwnerDocument(): retourne le nud document racine hasChildNodes(): retourne true si le nud possde un enfant setNodeValue(): change la valeur CloneNode() :copie un noeud
ENIS 2008-2009

un arbre est form dune racine Document , de nuds internes (les lments ou attributs) et de nuds feuilles (contenant les valeurs dlment ou attributs).

insertBefore(Nouveau_Noeud, Nud_Reference) : insre un nouveau nud fils avant le nud rfrence dj existant Replace_Child(Nouveau_Noeud, Ancien_Nud) : remplace un noeud removeChild(Noeud) supprime le nud appendChild(Noeud): ajoute un nud la fin de la liste des nuds.

Fadoua DRIRA HAMMAMI

Les composants de XML


Mthodes de navigation dans le document partir du nud courant
getAttributes() : retourne les attributs getChildNodes() : retourne les enfants du nud getFirstChild() : retourne le premier enfant du noeud getLastChild(): retourne le dernier enfant du nud getParentNode (): retourne le parent du noeud CreatElement(Nom_Element) CreateAttribute (Nom_Attribut) . . .

Interface Node

Mthodes pour la cration des noeuds

Interface Document

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les composants de XML


Exemple : Cration dun document avec DOM

Soit lexemple suivant


<nom ville = "Paris"> <prenom> Jean </prenom> <nomfamille>Dupont </nomfamille> </nom>

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les composants de XML


Public class ExempleDOM{ Public static main (String argc[ ]) throws IOException, DOMException {XMLDocument xmlDoc = new XmlDocument(); //cration des nuds ElementNode nom = (ElementNode) xmlDoc.createElement("nom"); ElementNode prenom = (ElementNode) xmlDoc.createElement("prenom"); ElementNode nomfam = (ElementNode) xmlDoc.createElement("nomfamille"); //cration de larbre xmlDoc.appendChild(nom); nom.appendChild(prenom); prenom.appendChild(xmlDoc.createTextNode("Jean"); Nom.appendChild(nomfamille); Nom.appendChild(xmlDoc.createTextNode("Dupont"); //positionnement dun attribut Nom.setAttribute ("Ville","Paris"); //sortie System.exit(0); } } Fadoua DRIRA HAMMAMI
ENIS 2008-2009

Les composants de XML


LAPI simplifie pour XML (Simple API for XML), ou SAX : est une alternative au DOM standardise par le groupe XML-DEV. adapte lanalyse de documents XML volumineux et est plus complexe mettre en place, car elle ncessite la connaissance de la programmation en Java et linstallation dun parser et dun environnement de dveloppement spcifiques. ne prend pas en compte la structure darbre dun document; des vnements sont renvoys chaque fois que le parseur rencontre une nouvelle balise. adapt lchange des donnes entre applications. SAX est une API lgre et rapide, ne construit pas limage de document en mmoire mais permet les traitements la vole.

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les composants de XML


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

vnement Parser
StartElement

Mthodes utilisateur

Document XML

vnement
endDocument

Principe dun parseur SAX


ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les composants de XML

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les composants de XML

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les composants de XML


Les espaces de nommage (XML Namespaces xmlns ) Objectifs : mlanger du vocabulaire XML provenant de plusieurs grammaires. viter les conflits entre des termes identiques ayant des significations diffrentes dans des domaines diffrents. identifier de manire unique les balises XML. Principe associer une URI (Uniform Ressource Identifier) au nom de llment. lURI peut tre fictive (non vrifie) et pointe (quand mme) sur la grammaire de lespace de nommage. Exemple : dans le cas dune entreprise, le document XML associ peut comporter deux sortes de noms, quil est important darriver diffrencier ; le nom de lentreprise et les noms de ses personnels. La solution propose par xmlns est de dfinir les balises suivantes <personne:nom> et <entreprise:nom>.

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les composants de XML


Le document XML associ lorganisation de lentreprise est :
<organisation xmlns:entreprise="http://www.entreprise.org" xmlns:personne="http://www.personne.org"> <entreprise:nom>DocNum inc </entreprise:nom> <personne:nom> <personne:nomdefamille> XX </personne:nomdefamille> <personne:prenom> YY </personne:prenom> </personne:nom> </organisation>

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les composants de XML


Utilisation de liens avec Xlink (XML Linking Langague) : une spcification qui permet de dcrire les liens entre les documents. deux types de liens : lien simple (xlink:type ="simple") tend la notion de lien HTML aux documents XML, avec des complments (possibilit de catgoriser les liens) lien tendu (xlink:type ="extended") permet de dfinir des liens plus complexes (liens pointant vers des ressources multiples (cas de sites miroirs)) Exemple :
Version Xlink <monlien xmlns:xlink="http://www.w3c.org/" xlink:type="simple" xlink:href="doc.xml"> lien vers doc </monlien>
ENIS 2008-2009

Version HTML <a href="doc.xml"> lien vers doc </a>

Fadoua DRIRA HAMMAMI

Les composants de XML


XML permet de crer des liens vers dautres documents mais aussi de pointer sur une partie prcise dun document XML. Exemple : cas dun lien simple qui pointe sur lentre de lannuaire contenant le numro de tlphone de Harry:
<monlien xmlns : xlink="http://www.w3c.org/" xlink : type="simple" xlink : href="annuaire.xml #xpointer(//entree[nom="Harry"])"> Numro de tlphone de Harry dans lannuaire </monlien>

Requte Xpath ; Xpath est un langage dexpression de chemin pour adresser des parties des documents XML
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les composants de XML


Exemple : cas dun lien tendu ; un tel lien se compose : dun lment racine caractris par lattribut xlink : type= extended des lments fils de type ressource , locator ou arc ressource et locator dfinissent les nuds; ils sont similaires sauf que ressource sont de vritables nuds alors que locator

permettent de rfrencier des nuds (attribut href en plus).


arc dfinissent les arcs.

<connexion xlink : type="extended" > <ville xlink : type="ressource" label="P" title= "Paris"> La Capitale de la France </ville> <pville xlink:type="locator" label="M" title= "Marseille"> href=" /ville/Marseille.xml" /> <pville xlink:type="locator" label="L" title= "Lyon"> href=" /ville/Lyon.xml" /> <distance xlink:type="arc" from="P" to="L" > 420 km </distance> <distance xlink:type="arc" from="L" to="M" > 600 km </distance> <distance xlink:type="arc" from="P" to="M" > 900 km </distance> </connexion>

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les composants de XML


Le langage de feuilles de styles associ XML, XSL (Extended StyleSheet Language) : permet la mise en forme de documents XML. se compose des langages XPATH, qui permet la localisation des lments et des parties dans un document XML (cest un langage de requte pour extraire des donnes dun document XML), et XSLT (XSL Transformations), qui dfinit le format de sortie du document. Lassociation dXSL un document XML permet de complter le couple donnes / mta-donnes dfini dans le document en lui associant des informations de formatage. Il existe aussi un troisime langage, XSL-Formatting Objects, qui permet daller plus loin dans la composition documentaire, en dcrivant notamment la structure physique des pages des documents gnrs.

Les dclarations de type de document (DTD) ou les schmas XML permettent de dfinir la structure de linformation dcrite de faon plus ou moins approfondie. Lorsquun document XML est associ une DTD ou un schma XML et quil est conforme la description de linformation indique, on dit quil est valide.
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les composants de XML


Document XML Bien form? oui DTD ou schma ?
(Optionnel)

non

Interprtation du document

non

oui

oui

DTD ou schma

Message derreur/ Document non-interprt

valide?

non

Message derreur/ Document non-interprt

Comment un document XML est interprt par le parser?

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XML: eXtensible Markup Language Grammaire XML: DTD et XML-schma

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

DTD = Document Type Definition


Dfinition de type de document, donc une spcification du modle de donnes auquel appartient un document. Une DTD se place dans le prologue dun document XML. Pour quun document soit valid par une DTD, il faut :
quil contienne une (et une seule) dclaration de type de document, quil fasse rfrence, de faon interne ou externe, une DTD dcrivant sa structure.

Une DTD permet de vrifier quun document XML est conforme une syntaxe donne ( une grammaire). La norme XML nimpose pas lutilisation de DTD mais elle impose le respect exact des rgles de base de la norme XML. Une fois une DTD est associ un document XML, le parser est en charge de vrifier que le document obit aux rgles fixes par cette mme DTD.
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

DTD = Document Type Definition


Une DTD peut tre dfinie de 2 faons :
Sous forme interne, incluant la grammaire dans le document. Sous forme externe, soit en appelant un fichier contenant la grammaire partir dun fichier local ou bien en y accdant par son URL. les lments du document XML, de faon arborescente, en partant de llment racine (mot-cl : ELEMENT), les attributs des diffrents lments, sous forme de liste (ATTLIST). les diffrentes entits auxquelles font rfrence les lments du document (ENTITY), les ventuelles notations, qui dclarent du contenu non XML, comme des donnes graphiques ou binaires (mot-cl : NOTATION).

Une DTD dcrit :

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Dclaration dlment simple


Les lments XML sont dfinis dans une balise <! ELEMENT>. La syntaxe est : <!ELEMENT nom (contenu) > Le paramtre contenu reprsente soit un type de donnes prdfini, soit un lment de donnes compos, constitu lui mme d'lments Types prdfinis: #PCDATA : dsigne des donnes textuelles qui seront traites par le parseur.
Exemple : en DTD: <!ELEMENT elt (#PCDATA)> et en XML : <elt> texte </elt>

EMPTY : L'lment ne contient pas de donnes spcifiques.


Exemple : en DTD : <!ELEMENT elt EMPTY> et en XML : <elt/>

ANY : L'lment peut contenir tout type de donne (contenu libre). NB: Il est impratif dcrire ELEMENT en majuscule.
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Dclaration dlment compos


Dfinit une squence ou un choix dlment. Syntaxe spcifique avec oprateurs de composition dlments. <! ELEMENT nom (composition) >
Oprateur + * ? | , () Signification L'lment doit avoir au moins une occurrence L'lment peut avoir 0 N occurrences L'lment peut avoir 0 ou 1 occurrence L'lment A ou B peut tre prsent (mais pas les deux) L'lment A doit tre prsent et suivi de l'lment B Les parenthses permettent de regrouper des lments afin de leur appliquer les autres oprateurs. Exemple A+ A* A? A|B A,B (A,B)+

NB: Lordre dans lequel sont dclars les diffrents composants dun lment composite est trs important ; ces lments devront tre organiss en rapport avec cette dclaration, sinon le document XML sera non valide.
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Dclaration dlment compos


Le document annuaire.xml est valide par rapport la DTD annuaire.dtd
<!ELEMENT annuaire (entree*)> <!ELEMENT entree (nom,telephone*)> <!ELEMENT nom (#PCDATA)> <!ELEMENT telephone (#PCDATA)>

Exemple 1

annuaire.dtd
<?xml version="1.0" standalone="no"?> <!DOCTYPE annuaire SYSTEM "annuaire.dtd"> <annuaire> <entree> <nom> Paul </nom> <telephone> 010200345 </telephone> </entree> </annuaire>

<?xml version="1.0" standalone="yes"?> <!DOCTYPE annuaire [ <!ELEMENT annuaire (entree*)> <!ELEMENT entree (nom,telephone*)> <!ELEMENT nom (#PCDATA)> <!ELEMENT telephone (#PCDATA)> ]> <annuaire> <entree> <nom> Paul </nom> <telephone> 010200345 </telephone> </entree> </annuaire>

Document XML pour une DTD externe

Document XML pour une DTD interne


ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Dclaration dlment compos


Exemple 2
Un lment NomPersonne est compos : Soit d'un sigle M, Mme, Mlle
D'un prnom D'un 2me prnom Et d'un nom de famille

<!ELEMENT NomPersonne ( (M | Mme | Mlle), Prenom, Prenom2, Nom ) > <!ELEMENT M EMPTY> <!ELEMENT Mme EMPTY> <!ELEMENT Mlle EMPTY> <!ELEMENT prenom (#PCDATA) > <!ELEMENT prenom2 (#PCDATA) > <!ELEMENT nom (#PCDATA)

<NomPersonne> <M/> <Prenom>John</Prenom> <Prenom2>Edouard</Prenom2> <Nom>Martin</Nom> </NomPersonne>

Personne.dtd

Personne.xml
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Dclaration dlment compos


Exercice
Rdiger une DTD pour une Bibliographie. Cette bibliographie:
contient des livres et des articles; les informations ncessaires pour un livre sont : son titre gnral; les noms des auteurs ; ses tomes et pour chaque tome, leur nombre de pages ; des informations gnrales sur son dition comme par exemple le nom de lditeur, le lieu ddition, le lieu dimpression, son numro ISBN ; les informations ncessaires pour un article sont : son titre ; les noms des auteurs ; ses rfrences de publications : nom du journal, numro des pages, anne de publication et numro du journal on rservera un champ optionnel pour un avis personnel

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Dclaration dattributs
Un attribut permet de complter un lment, cest une sorte dadjectif. <!ATTLIST balise Attribut Type Mode> balise spcifie l'lment auquel est attach l'attribut Attribut est le nom de l'attribut dclar Type dfinit le type de donne de l'attribut choisi parmi: CDATA pour des donnes textuelles. Valeur numre, liste de choix. Exemple (M | Mme | Mlle). ID sert d'identifiant unique pour cette instance d'lment. Deux attributs de type ID ne peuvent donc pas avoir la mme valeur dans un mme document XML. IDREF rfrence une cl. Mode prcise le caractre obligatoire ou non de l'attribut #REQUIRED, #IMPLIED ou #FIXED
Fadoua DRIRA HAMMAMI

ENIS 2008-2009

Dclaration dattributs
#REQUIRED : l'attribut doit figurer dans chaque instance de l'lment <!ATTLIST Livre titre CDATA #REQUIRED > #IMPLIED : l'attribut est facultatif <!ATTLIST Article avis CDATA #IMPLIED > #FIXED "valeur par dfaut" : l'attribut peut figurer ou non dans le document. S'il est prsent, il doit alors avoir la valeur "Edit-Corp" sinon le parseur peut fournir la valeur par dfaut. <!ATTLIST Livre editeur CDATA #FIXED "Edit-Corp"> Une valeur par dfaut : l'attribut peut apparatre ou non dans le document. S'il est absent, le parseur peut fournir la valeur par dfaut. Si une valeur est dfinie, il peut tre n'importe quelle valeur figurant dans la liste ATTLIST.
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

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

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Dclaration dattributs
Exercice
Modifier la DTD prcdente... - en ajoutant un attribut optionnel soustitre l'lment titre ; - en faisant de l'lment tome un lment vide et en lui ajoutant un attribut requis nb_pages et un attribut optionnel soustitre ; - en faisant de l'lment nom_journal un attribut de l'lment journal et en lui donnant comme valeur par dfaut Feuille de Chou ; - en faisant de l'lment annee un attribut de type numr, prenant comme valeurs possibles 2002, 2003, 2004, "avant_2002" et "inconnue" et proposant comme valeur par dfaut inconnue.

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Dclaration dentits
Entit dfinie dans le document Une telle entit sert en gnral d'abrviation pour des informations rptitives, de raccourci pour des noms longs <!ENTITY nom "texte"> rutilisable dans un document par simple appel &nom;
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?> <!DOCTYPE dmo [ <!ELEMENT dmo (titre,note)> <!ELEMENT titre (#PCDATA)> <!ELEMENT note (#PCDATA)> <!ENTITY cie "Utilisation des entits"> <!ENTITY imp "<note>Juste un exemple</note>"> ]> <dmo> <titre>&cie;</titre> &imp; </dmo> <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?> <!DOCTYPE dmo [ <!ELEMENT dmo (titre,note)> <!ELEMENT titre (#PCDATA)> <!ELEMENT note (#PCDATA)> ]> <dmo> <titre> Utilisation des entits </titre> <note>Juste un exemple</note> </dmo>
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Dclaration dentits
<!DOCTYPE personne[ <!ELEMENT personne (civilit, nom,prnom)> <!ENTITY MR "Monsieur"> <!ENTITY MME "Madame"> <!ENTITY MLE "Mademoiselle"> <!ELEMENT civilit (#PCDATA)> <!ELEMENT nom (#PCDATA)> <!ELEMENT prnom (#PCDATA)> ]> <personne> <civilit> &MR; </civilit> <nom> DUPONT </nom> <prnom> Jean </prnom> </personne> <personne> <civilit> Monsieur </civilit> <nom> DUPONT </nom> <prnom> Jean </prnom> </personne>

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Dclaration dentits
Entit dfinie lexterne Les entits dfinies l'extrieur des documents sont utilises de la mme faon mais sont dclares ainsi :
<?xml version="1.0"?> <!DOCTYPE doc [ <!ENTITY chap1 SYSTEM "../chapitres/chap1.xml"> <!ENTITY chap2 SYSTEM "../chapitres/chap2.xml"> ]> <doc> &chap1; &chap2; </doc>

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Dclaration dentits
Entits prdfinies Les entits prdfinies permettent l'utilisation de certains caractres sans qu'ils puissent tre confondus avec les caractres spciaux utiliss par les documents XML pour le balisage. lt : caractre '<' gt : caractre '>' amp : caractre '' quot : caractre '"' (guillemet double) apos : caractre "'" (guillemet simple ou apostrophe)

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Dclaration dentits
Entit paramtre Ce type dentit permet la dclaration dun paramtre utilisable uniquement dans la DTD. La DTD doit tre externe au document pour pouvoir utiliser des entits paramtres. Une entit paramtre se dclare et sutilise avec le signe %.
<?xml version="1.0"?> <!DOCTYPE equipe SYSTEM "equipe.dtd"> <equipe> <joueur taille="cm" > 180 </joueur> </equipe> <?xml version="1.0"?> <!ENTITY %taille.att taille CDATA #REQUIRED > <!ELEMENT equipe (joueur+)> <!ELEMENT joueur (#PCDATA)> <!ATTLIST joueur %taille.att;>
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Limites des DTD


Expression de cardinalits limite
Pas de nombre prcis doccurrences dun lment dans une grammaire XML : * (0 N), ? (0 ou 1), + (1 N) ncessit de se procurer dun outil spcifique pour dvelopper des DTD difficile interprter difficile traduire en schma objets un seul type des donnes est dfini : il sagit de PCDATA (du texte) Impossible de typer les donnes ou de poser des contraintes sur les valeurs (virgules flottantes, format de date, longueur dune chane) Les schmas XML du W3C

La structuration des DTD est crite avec une syntaxe particulire diffrente de la syntaxe XML.

Syntaxe des DTD trs limite

Propositions de complments

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Objectifs


Un schma XML permet de dcrire les classes de documents XML. Il dfinit un ensemble de composants :
La signification, lutilisation et les relations entre diffrents lments et leur contenu. les attributs et leurs valeurs Les types de donnes, les attributs associs ces donnes, les entits et les notations. pas de nouveau langage balisage de dclaration utilise un espace de nom xsd: (ou xs:)

Le schma XML est spcifi en XML

Prsente de nombreux avantages

ditable avec un diteur XML classique sans faire appel des programmes ddis. abstraction faite sur la dfinition des diffrents lments (organisation des balises ou de leur contenu) possibilit de typer des donnes (types simples ou complexes). possibilit de dfinir des contraintes (domaines des valeurs, cardinalits, existence) plus riche et plus complet que les DTD.
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Structure de base


Comme tout document XML, un schma XML commence par un prologue et a un lment racine. <?xml version="1.0" encoding="ISO-8859-1"?> <xsd: schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <!--dclaration dlments, dattributs et de types ici --> </xsd: schema> lment racine

Tout schma XML doit commencer par le prfixe xsd

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Exemple


Le document XML-Schma (entree.xsd)
<xsd: schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd: element name="entree"> <xsd:complexType> <xsd:sequence> <xsd:element name= "nom " type = "xsd:string " minoccurs= "1 " maxoccurs= "1 "/> <xsd:element name= "telephone " type = "xsd:decimal "/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd: schema>

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Exemple


Le document XML sans rfrence au espace de noms
<entree xmlns: xsi = "http://www.w3.org/2000/10/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "entree.xsd">

<nom> Jean-Claude </nom> <telephone> 0123456789 </telephone> </entree>

Le document XML avec rfrence au espace de noms


<annuaire : entree xmlns: xsi = "http://www.w3.org/2000/10/XMLSchema-instance" xmlns:annuaire = "http://www.page.fr/annuaire" xsi:schemaLocation= " entree.xsd"> < annuaire:nom> Jean-Claude </annuaire:nom> <annuaire:telephone> 0123456789 </annuaire:telephone> </ annuaire :entree>
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Concepts


Les principales clauses de dfinition de schma sont les suivantes : <xsd:element> qui permet dassocier un type un lment; <xsd: attribute> qui permet dassocier un type un attribut ;

<xsd: simpleType> qui permet de spcialiser un type de classe choisi parmi les multiples types de base ; <xsd:complexType> qui permet de dfinir un type complexe comme une squence, alternative ou un ensemble de types.

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Dclaration dlments


Un lment dans un schma XML se dclare avec la balise <xsd:element>.

<?xml version="1.0" encoding="ISO-8859-1"?> <xsd: schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd: element name="contacts" type="typeContacts"> </xsd: element> <xsd: element name="remarque" type="xsd:string"> </xsd: element> <!--dclaration de types ici --> </xsd: schema> Llment remarque est de type simple prdfini de XML schma

Llment contacts est un type dfini par lutilisateur


ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Dclaration dlments


La base dun schma XML: llment qui peut avoir un type:
Simple si sa valeur a un type prdfini en XML-Schma ou une extension de ces types.
Types primitifs: string, boolean, float, double, integer, Types drivs : drivent dun type primitif ou dun autre type driv. Ils sont obtenus par hritage soit par extension (ajout dlments) soit par restriction (ajout de contraintes).

Complexe sil contient des sous lments ou sil comporte un attribut

xsd:all

: collection non ordonne d'lments typs xsd:choice : choix entre lments typs xsd:sequence : collection ordonne d'lments typs
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Dclaration dlments


Hirarchie des types prdfinis

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Dclaration dlments


Types primitifs

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Dclaration dlments


Types drives

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Dclaration dlments


Types dfinis par restriction

Fait appel une expression

minlength length maxlength pattern enumeration minInclusive maxInclusive minExclusive maxExclusive ... Fadoua DRIRA HAMMAMI

Boolean number float double date time ...

ENIS 2008-2009

Les schmas XML : Dclaration dlments


Quelques exemples dexpressions

A*B [xyz]A A?B A+B [A-C]y C \s \d

B, AB, AAB, AAAB, AAAAB xA, yA, zA B, AB AB, AAB, AAAB, AAAAB Ay, By, Cy C suivi dun espace suivi dun dcimal

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Dclaration dlments


Spcification de type par restriction :
Exemple 1: cas o le type nameType est dfini comme chane de Cet attribut spcifie le caractres de longueur maximale 32.
<xsd:simpleType name= "nameType "> < xsd: restriction base = "xsd:string "> <xsd:maxLength value= "32" /> < /xsd: restriction> </xsd:simpleType> nom de type de donnes en cours de dfinition.

Exemple 2: cas dune expression SEQ forme par trois nombres dcimaux suivis par un tiret puis par deux majuscules.
<xsd:simpleType name= " SEQ "> < xsd: restriction base = "xsd:string "> <xsd: pattern value= " \d{3} [ A Z] {2} " /> < /xsd: restriction> </xsd:simpleType>

Cet attribut spcifie le nom de type de donnes primitif.

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Dclaration dlments


Spcification de type par extension :
Exemple 1: cas de lajout de llment pays ladresse (cas dune base de type complexe)
<xsd: complexType name= " AdressePays "> < xsd:complexContent > < xsd:extension base = "Adresse " > < xsd:sequence> <element name= "pays " type = " xsd:string " /> </ xsd:sequence> </ xsd:extension> < / xsd:complexContent > </ xsd:complexType>

Les types spcialiss par extension sont appels contenus complexes et sont marqus par une balise < complexContent >. La clause <xsd:extension> introduit ce sous-typage avec en attribut le nom du type de base.
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Dclaration dlments


Spcification de type par extension :
Exemple 2: cas de lajout de lunit de mesure la valeur donne (cas dune base de type simple)
<xsd:element name="Mesure"> <xsd:complexType> <xsd:simpleContent> <xsd:extension base="xsd:integer"> <xsd:attribute name="unit" type="xsd:string" use="required"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element>

Si on suppose que la valeur de mesure est un entier encadr entre 0 et 120 et que lunit de mesure peut prendre soit la valeur m soit cm alors on peut dfinir les types simples ValeurMesure et UniteMesure comme suit :
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Dclaration dlments


<xsd:simpleType name="ValeurMesure"> <xsd:restriction base="xsd:integer"> <xsd:minInclusive value="0"/> <xsd:maxInclusive value="120"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="UniteMesure"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="m"/> <xsd:enumeration value="cm"/> </xsd:restriction> </xsd:simpleType> <xsd:element name="Mesure"> <xsd:complexType> <xsd:simpleContent> <xsd:extension base="ValeurMesure"> <xsd:attribute name="unit" type="UniteMesure" use="required"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element>
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Dclaration dlments


XML-Schma <xsd: element name="element"> <xsd:complexType> <xsd:sequence> <xsd:element name= " s1" minoccurs= " 0" maxoccurs= " unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd: element name="element"> <xsd:complexType> <xsd:sequence> <xsd:element name= " s1" minoccurs= " 0" maxoccurs= "1"/> </xsd:sequence> </xsd:complexType> </xsd:element> quivalent en DTD <!ELEMENT element(s1*)>

<!ELEMENT element(s1?)>

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Dclaration dlments


XML-Schma <xsd: element name="element"> <xsd:complexType> <xsd:sequence> <xsd:element name= " s1" minoccurs= " 1" maxoccurs= " unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd: element name="element"> <xsd:complexType> <xsd:sequence> <xsd:element name= " s1" minoccurs= " 1" maxoccurs= "11"/> </xsd:sequence> </xsd:complexType> </xsd:element> quivalent en DTD <!ELEMENT element(s1+)>

<!ELEMENT element (s1, s1?, s1?, s1?, s1?, s1?, s1?, s1?, s1?, s1?, s1?)>

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Dclaration dlments


Type lment avec contenu variable XML-Schma <xsd: element name="element"> <xsd:complexType> <xsd:choice> <xsd:element name= " s1" /> <xsd:element name= " s2" /> </xsd:choice> </xsd:complexType> </xsd:element> <xsd: element name="element"> <xsd:complexType> <xsd:sequence> <xsd:any/> </xsd:sequence> </xsd:complexType> </xsd:element> quivalent en DTD <!ELEMENT element(s1|s2)>

lment avec contenu non dfini

<!ELEMENT element ANY>

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Dclaration dattributs


Dclaration simple
La dfinition dattributs associs un lment se fait dans un lment <xsd:attribute> qui possde les attributs suivants:

Name : nom de lattribut Type : type de lattribut, par exemple xsd:string, xsd:boolean, Use : permet de prciser si lattribut est obligatoire ou optionnel. Valeurs possibles: required (obligatoire), optional (facultatif), Fixed ou default (valeur par dfaut)

Exemple: <element at1="hello" at2="true" /> . On souhaite modliser cet lment dans un XML-Schma. Lattribut at1 est optionnel et a comme valeur par dfaut "a". Lattribut at2 est obligatoire et a comme valeur par dfaut "true" .

<xsd: element name="element"> <xsd:complexType> <xsd:attribute name= "at1" type = "xsd:string" use= "optional " default="a" /> <xsd:attribute name= "at2" type = "xsd:boolean" use= "required" fixed="true" /> </xsd:complexType> </xsd:element>
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Dclaration dattributs


Dclaration complexe

<xsd:attribute name= "choix" use= "required "> <xsd:simpleType> <xsd: restriction base = "xsd: string" > <xsd:enumeration value= "oui"/> <xsd:enumeration value= "non"/> <xsd:enumeration value= "ne sait pas"/> </xsd: restriction> </xsd:simpleType> </xsd:attribute>

Lattribut choix peut prendre 3 valeurs: oui, non et ne sait pas.

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Rutilisation de type


Type simple avec restriction
<xsd:simpleType name="num5"> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d{5}"/> </xsd:restriction> </xsd:simpleType>

Type complexe (squence)


<xsd:element name="livre"> <xsd:complexType> <xsd:sequence> <xsd:element name="Titre" type="xsd:string"/> <xsd:element name="Auteur" type="xsd:string"/> <xsd:element name="ISBN" type="num5"/> </xsd:sequence> </xsd:complexType> </xsd:element>
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Rutilisation de type


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

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Identifiant


<xsd:element name="element1"> <xsd:complexType> <xsd:attribute name="id" type= "xsd:ID" use="required" /> </xsd:complexType> </xsd:element>

<xsd:element name="element2"> <xsd:complexType> <xsd:attribute name= "idref" type="xsd:IDREF" use="required" /> </xsd:complexType> </xsd:element>
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Exercice


Reprenons lexercice prcdent sur les DTD mais cette fois-ci avec un schma. On ne dclarera pour le moment que le type de chanes de caractres. Rdiger un schma XML pour une bibliographie qui:
contient des livres et des articles; les informations ncessaires pour un livre (lment livre) sont : son titre gnral (lment titre) ; les noms des auteurs (lment auteur) ; ses tomes (lment tomes) et pour chaque tome (lment tome), leur nombre de pages (lment pages) ; des informations gnrales sur son dition (lment infoEdition) comme par exemple le nom de lditeur (lment editeur), le lieu ddition (lment LieuEdition) , le lieu dimpression(lment LieuImpression), son numro ISBN(lment ISBN) ; les informations ncessaires pour un article (lment article) sont : son titre (lment titre) ; les noms des auteurs (lment auteur) ; ses rfrences de publications (lment infoPublication): nom du journal (lment nomJournal), numro des pages (lment pages), anne de publication (lment anneePublication) et numro du journal (lment numeroJournal) ; on rservera un champ optionnel, pour chaque livre et chaque article pour un avis (lment avis) personnel
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Exercice


Modifier le schma prcdent... Dclaration dattributs: - en ajoutant un attribut optionnel soustitre l'lment titre ; - en faisant de l'lment tome un lment vide et en lui ajoutant un attribut requis nbPages et un attribut optionnel soustitre ; - en faisant de l'lment nomJournal un attribut de l'lment infoPublication et en lui donnant comme valeur par dfaut Feuille de Chou ; Utilisation de types intgrs : - llment pages doit tre un entier positif, de mme pour numeroJournal Dclaration de types: - dfinir un type simple nomm numro ISBN, bas sur une restriction du type xsd: string, se limitant une chane de caractres compose de 10 chiffres.
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Exercice


Soit la DTD suivante :
<!ELEMENT Prenom (#PCDATA)> <!ELEMENT Prenom2 (#PCDATA)> <!ELEMENT Nom (#PCDATA)> <!ELEMENT NomPersonne (Nom|(Prenom,Prenom2*))> <!ATTLIST NomPersonne titre (M.|Mme |Mlle) # IMPLIED suffixe (Fils |Pere |Mere|fille) # IMPLIED >

Reprsenter ces information selon le document XML Schma

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Rsum

<xsd:element name="name" type="type" minOccurs="int" maxOccurs="int"/>


Dclaration dlment Nom de dlment Un type simple (i.e. xsd:string) ou le nom dun complexType mais pas les deux Un entier non ngatif, valeur par dfaut 1 Un entier non ngatif ou unbounded valeur par dfaut 1

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Rsum


<xsd:element name="name" minOccurs="int" maxOccurs="int" type= "type " > <xsd:complexType> </xsd:complexType> </xsd:element> ou
<xsd:element name="name" minOccurs="int" maxOccurs="int" type= "typeComplex" /> <xsd:complexType name= "typeComplex" > </xsd:complexType>
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Rsum


<xsd:attribute name="name" type="simple-type" use="how-its-used" default/fixed="value"/>

Dclaration Nom de dattribut lattribut

Un type simple xsd:string xsd:integer xsd:boolean ...

required (obligatoire) optional (optionnel)

Lattribut use doit tre optionnel pour dfinir lattribut default

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Rsum


<xsd:attribute name="name" use="how-its-used" default/fixed="value"> <xsd:simpleType> <xsd:restriction base="simple-type"> <xsd:facetvalue="value"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute>

ou
<xsd:attribute name="name" type =" nomType" use="how-its-used" default/fixed="value"/> <xsd:simpleType name= " nomType"> <xsd:restriction base="simple-type"> <xsd:facetvalue="value"/> </xsd:restriction> </xsd:simpleType>
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les schmas XML : Rsum


ComplexContent et SimpleContent dpendent du type de la base sur laquelle va tre effectue la restriction ou lextension - dans le cas dune base de type simple, il sagit de simpleContent - dans le cas dune base de type complexe, il sagit de complexContent.

<xsd:complexType name=""> <xsd:complexContent> <xsd:extension base="X"> </xsd:extension> </xsd:complexContent> </xsd:complexType> X doit tre de type complexe

<xsd:complexType name=""> <xsd:simpleContent> <xsd:extension base="Y"> </xsd:extension> </xsd:simpleContent> </xsd:complexType> Y doit tre de type simple
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XML: eXtensible Markup Language Mise en forme dun document

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les feuilles de style CSS


CSS : abrviation de Cascading Style Sheets (Feuille de style). CSS est un langage de description de styles.
Il permet de spcifier dans une page web les polices de caractres utiliser, leurs attributs daffichage (gras, italique, soulign, taille, couleur), la couleur ou limage de fond, les formats de puces, Sparer le travail de la rdaction de celui de la prsentation. Plusieurs pages peuvent partager la mme feuille de style.

Les CSS sont une solution pour sparer le contenu de la forme. Les CSS assurent la cohrence graphique dun site.

La modification de la charte graphique dun site web est facilite par lutilisation des CSS. Seule la feuille de style est modifie.

Maintenance et adaptation (aux diffrents priphriques daffichage et de sortie) sont facilites.


ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les feuilles de style CSS


Le C (Cascading) de CSS signifie quon peut dfinir des styles CSS en cascade dune manire similaire lhritage.
Chaque nouvelle dfinition dun style CSS hrit vient le complter ou le redfinir. En cas de contradiction sur un aspect particulier, cest la dernire dfinition rencontre dans lordre des dclarations qui limporte.

Les lments enfants hritent de certaines valeurs de leurs lments parents dans l'arborescence du document. Chacune des proprits dfinit si elle est hrite, ou non. Supposons un lment (ici EM) dans un lment H1 :

<H1 style="color:blue">Le titre <EM>est</EM> important !</H1> Si aucune couleur n'est prcise pour l'lment EM, le mot accentu "est" hritera de la couleur de l'lment parent, ainsi l'lment H1 ayant une couleur bleu, EM le sera galement.

Pour appliquer une proprit de style "par dfaut" un document, un auteur peut l'appliquer la racine de l'arborescence du document. On peut utiliser les lments HTML ou BODY pour cet usage.
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

volution des CSS


Le langage CSS a beaucoup volu et a intgr de nombreuses nouveauts au fur et mesure des rvisions successives. Les diffrentes versions officielles de ce standard sont les suivantes:
CSS1 (level 1), recommandation depuis dcembre 1996. CSS2 (level 2), recommandation depuis mai 1998. CSS3 (level 3), en cours dlaboration.

CSS1 et CSS2 sont supports par la plupart des navigateurs web (Microsft Internet Explorer, Nestcape Navigator, Mozilla,). CSS2 apporte de nombreuses fonctionnalits, notamment davantage de finesse dans les rglages daffichage graphique, ainsi que la gestion du son. CSS3 (en cours) propose un support international encore mieux amlior avec une gestion de laffichage des langues arabes et chinoises ainsi que lintgration des dessins vectoriels (dcrire des formes gomtriques en XML).
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Syntaxe des CSS


Une rgle de style des CSS est compose : - dun slecteur, - et dau moins une dclaration. Exemple de rgle: h1 {color: #0000FF; font-family: Arial; font-size: 12px;}
slecteur dclaration (compose dune proprit et de sa Valeur )

h1 est le slecteur qui dfinit le style qui sera appliqu la balise html <h1>, la dclaration attribue la couleur bleue et la police Arial de taille 12 au titre.

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Syntaxe des CSS


La dclaration du style proprement dite est place entre des accolades { } La proprit et sa valeur sont spares l'une de l'autre par :

Les expressions compltes contenant proprit et valeur sont spares par ; balise { proprit de style: valeur;proprit de style: valeur; }

Il est possible de grouper plusieurs slecteurs ayant une rgle de style identique, spars par une virgule : h1, h2, h3 { color: red }
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Application des rgles de styles des CSS


Plusieurs manires :
1. Grce une feuille de style intgre au document Celle-ci sera situe dans l'entte, entre les balises <head> </head> On utilisera alors la balise <style> qui prvient le navigateur que des CSS sont utilises.

<html> <head> <title>style interne au document</title> <style type="text/css"> html, body { font-family: sans-serif; background-color: white } h1, h2 { color: blue } p {text-align: justify } </style> </head> </html>
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Application des rgles de styles des CSS


2. Grce l'attribut style : appel style en ligne - ajouter du CSS une balise donne <p style="text-indent:15px"> Un style en ligne... </p> 3. En faisant appel une feuille de style externe : balise <link> dans l'entte du document : <html> <head> <title>appel une feuille de style externe</title> <link rel="stylesheet" href="feuilledestyle.css type="text/css" /> </head> </html> - La feuille de style aura comme extension .css et ne devra pas contenir de code HTML ou autre.
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Application des rgles de styles des CSS


La balise <link> avertit le navigateur qu'il faudra raliser un lien. L'attribut rel=stylesheet prcise que le navigateur trouvera une feuille de style externe. L'attribut type="text/css" prcise que l'information est du texte et de type cascading style sheets (css). L'attribut de lien href=" ... " donne le chemin d'accs et le nom du fichier lier.

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Quelques proprits des CSS


Pour les polices
font-family:nom de la police; font-size:la taille; font-color:la couleur; font-weight:normal|bold|light;

Pour lalignement du texte Pour larrire-plan Pour les couleurs

text-align:left|right|center|justify; background-color:couleur; background-image:url|none; utiliser de prfrence la valeur hexadcimale (Exemple : #0033CC correspond la couleur bleue) La couleur peut galement tre appele par un nom prdfini tel red, blue, yellow

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Le document "style.css" contient: H1 { color: #FF0000 ; font-weight: bold ; text-align : center; } body { background: #FFFFFF ; font-size: 150% ; text-align : justify; }

CSS : Exemple
On redfinit la balise H1 le texte sera rouge en gras On redfinit la balise BODY centr

le fond dcran sera blanc

le texte sera moiti plus grand le texte sera justifi

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Le document test.html contient:

CSS : Exemple

<HTML> <HEAD> <LINK REL="STYLESHEET" HREF="style.css" TYPE="text/css"> </HEAD> <BODY> <h1>bonjour</h1> Les feuilles de style vous apportent l'option de s&eacute;parer l'information sur vos pages, en modifiant leur pr&eacute;sentation. Rsultat sans la </BODY> feuille de style </HTML>

Rsultat avec la feuille de style

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XML et CSS
Contrairement HTML,
XML a t prvu pour contenir uniquement des donnes et des informations sur ces donnes (mta-donnes) mais aucune notion de prsentation. Les donnes XML ne sont jamais mlanges avec les informations permettant de dterminer leur prsentation.

Pour obtenir un affichage des donnes dans un document XML, il est ncessaire dintroduire le concept de feuille de style.
XML est un nouveau langage, faut-il galement crer un nouveau format de feuilles de style ou bien adopter un standard existant?

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XML et CSS : Exemple


titre { display: block; width: 250px; font-size: 16pt ; font-family: arial ; font-weight: bold; background-color: red; color: white; } auteur { display: block; font-size: 12pt; padding-left: 10px; } editeur { display: block; font-size: 12pt; color: red ; font-weight: bold; } <?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet href="css.css" type="text/css"?> <Biblio> <livre> <titre> Initiation XML </titre> <auteur> D.Hunter et al. </auteur> <editeur> Eyrolles </editeur> </livre> <livre> <titre> XQuery </titre> <auteur> P. Walmsley </auteur> <editeur> OReilly </editeur> </livre> </Biblio>

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XML et CSS : Limites


CSS a t initialement prvu pour la prsentation des documents HTML
CSS propose donc uniquement des fonctions de mise en forme assez simples. pas de possibilit de filtres (en fonction de certains critres) et de tris, il faudrait donc que le fichier XML prsenter ne contienne que ce que lon souhaite afficher et dans le bon ordre.

Mme dfauts que HTML :


- Syntaxe non modifiable et non extensible - Syntaxe difficile normaliser - Difficults pour trouver des lments Solution : XSL (eXtensible Stylesheet Language) est un langage de feuilles de styles associ XML mais aussi un langage de transformation de document XML (trier un document et/ou extraire uniquement linformation pertinente pour la prsenter). XSL est un langage plus performant ayant des possibilits plus tendues que le langage CSS.
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XSL: eXtensible StyleSheet Langague


XSL est un langage XML constitu de deux parties : XSLT (XSL Transformation) : un langage pour transformer un fichier XML en un autre fichier XML
Les feuilles XSLT sont aussi des documents XML bien forms et valides : dclaration XML en premire ligne, dclaration de lencodage, rgles de fermeture des balises, etc. Mais, bien qutant une application XML, il nexiste ni DTD ni schma caractre normatif pour dcrire formellement le langage.

XSL-FO (XSL Formatting Objects) : un vocabulaire XML pour spcifier des instructions de formatage (affichable ou imprimable en PDF par exemple).
XSL-FO est une liste extensive de primitives de formatage de bas niveau: blocs de texte, marges, enchanements, entte, pied de page Exemple : <fo:root> est quivalent la balise <html> en HTML <fo:table> est quivalent la balise <table> en HTML Les deux parties XML sont complmentaires, mais indpendantes.
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les feuilles de style XSLT


Une dclaration standard de feuille de style XSLT est la suivante.
<xsl:stylesheet version="1.0" xmlns:xsl=http://www.w3.org/1999/XSL/Transform> Cest lespace de nom qui contient les normes XSL Dans le fichier ".xml", il faut faire rfrence la feuille de style ".xsl" associe par: <?xml:stylesheet type="text/xsl" href="nom_feuille.xsl"?>

Les feuilles XSLT sont fondes sur des structures nommes modles (templates)

Un modle spcifie ce qui doit tre recherch dans larbre source et ce qui doit tre plac dans larbre rsultat. Le contenu dun modle est encadr par une balise <xsl:template> qui possde un attribut match.

Le modle de dpart de toute feuille de style XSLT est associ la racine du document, dfini par <xsl:template match="/">.
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Balise pour dfinir le dbut de la feuille

Les feuilles de style XSLT: Exemple


Biblio.xsl

Permet dutiliser/dinterprter les <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> tags HTML
<xsl:template match="/"> <html> <head> <title>Exemple value-of select</title> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/> </head> <body>

<SPAN> sert appliquer un style un bloc de texte non balis

<h2>Mes Livres </h2> <SPAN style="font-style:italic">Auteur : </SPAN> <xsl:value-of select="INVENTAIRE/LIVRE/AUTEUR"/> <BR/> <SPAN style="font-style:italic">Titre : </SPAN> <xsl:value-of select="INVENTAIRE/LIVRE/TITRE"/> <BR/> <SPAN style="font-style:italic">Editeur : </SPAN> <xsl:value-of select="INVENTAIRE/LIVRE/EDITEUR"/> <BR/> <SPAN style="font-style:italic">Page : </SPAN> <xsl:value-of select="INVENTAIRE/LIVRE/PAGES"/> <BR/>

</body> </html> </xsl:template> </xsl:stylesheet>

permet de recopier la valeur textuelle dun noeud (lment ou attribut) spcifi par lattribut select. Il sagit dune expression XPath value par rapport au noeud courant.
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les feuilles de style XSLT: Exemple


Biblio.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml:stylesheet type="text/xsl" href="Biblio.xsl"?> <INVENTAIRE> <LIVRE> <AUTEUR>D. Hunter, C.CAGLE, et al</AUTEUR> <TITRE>Initiation XML</TITRE> <EDITEUR>Eyrolles</EDITEUR> <PAGES>856</PAGES> </LIVRE> <LIVRE> <AUTEUR>Jean-Christophe Bernadac</AUTEUR> <TITRE> Construire une application XML </TITRE> <EDITEUR>Eyrolles</EDITEUR> <PAGES>XXX</PAGES> </LIVRE> </INVENTAIRE>

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les feuilles de style XSLT: Exemple

Seul le premier noeud rencontr dans le document source est pris en considration malgr la prsence dautres noeuds

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les feuilles de style XSLT: Exemple


Biblio.xsl
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head> <title>Exemple value-of select</title> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/> </head> <body> <h2>Mes Livres </h2> <xsl:for-each select="INVENTAIRE/LIVRE"> <SPAN style="font-style:italic">Auteur : </SPAN> Permet de faire <xsl:value-of select="AUTEUR"/> <BR/> laffichage de <SPAN style="font-style:italic">Titre : </SPAN> plusieurs lments <xsl:value-of select="TITRE"/> <BR/> la fois; traitement <SPAN style="font-style:italic">Editeur : </SPAN> <xsl:value-of select="EDITEUR"/> <BR/> itratif chaque <SPAN style="font-style:italic">Page : </SPAN> nud qualifiant <xsl:value-of select="PAGES"/> <BR/> <hr/> </xsl:for-each> </body> </html> </xsl:template> </xsl:stylesheet> ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les feuilles de style XSLT: Exemple

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les feuilles de style XSLT: Exemple


Biblio.xsl
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head> <title>Exemple de sortie HTML</title> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> </head> Utilisation dun <body> <h2>Mes Livres </h2> modle pour <xsl:apply-templates select="INVENTAIRE/LIVRE"/> laffichage; </body> </html> spcification </xsl:template> des rgles de <xsl:template match="LIVRE"> <SPAN style="font-style:italic">Auteur : </SPAN> prsentation <xsl:value-of select="AUTEUR"/><BR/> <SPAN style="font-style:italic">Titre : </SPAN> <xsl:value-of select="TITRE"/><BR/> <SPAN style="font-style:italic">Editeur : </SPAN> <xsl:value-of select="EDITEUR"/><BR/> <SPAN style="font-style:italic">Page : </SPAN> <xsl:value-of select="PAGES"/><BR/> <hr/> </xsl:template> </xsl:stylesheet> ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les feuilles de style XSLT: Tris


<xsl:sort select="TITRE" order="ascending"/> Affichera les lments classs par ordre alphabtique (croissant) de titres <xsl:sort select="TITRE" order="descending"/> Affichera les lments classs par ordre alphabtique (dcroissant) de titres Exemples dutilisation : Cas de lutilisation dun modle pour laffichage :
<xsl:apply-templates select="INVENTAIRE/LIVRE"> <xsl:sort select=TITRE order =ascending/> </xsl:apply-templates>

Cas de lutilisation dun appel itratif sur un noeud donn


<xsl:for-each select="INVENTAIRE/LIVRE"> <xsl:sort select=TITRE order =ascending/> Auteur : <xsl:value-of select="AUTEUR"/> Titre : <xsl:value-of select="TITRE"/> </xsl:for-each> <BR/> <BR/>
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les feuilles de style XSLT: Tris

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les feuilles de style XSLT: Filtrage


Le langage XSL permet aussi de filtrer les donnes du fichier XML associ selon des critres comme gal (=), pas gal (!=), plus grand que (&gt;), plus petit que (&lt;). Pour ce faire, il suffira d'utiliser l'attribut select="chemin_d'accs[balise='xxx']". Soit lexemple suivant utilisant le filtrage pour afficher les titres de lauteur 'JeanChrisotophe Bernadac'

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les feuilles de style XSLT: Filtrage


<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/> </head> <body> <table border="1" cellspacing="0" cellpadding="3"> <tr bgcolor="#FFFF00"> <td>Titre</td> <td>Auteur</td> </tr> <xsl:for-each select= "INVENTAIRE/LIVRE[AUTEUR='Jean-Chrisotophe Bernadac'] "> <tr> <td><xsl:value-of select="TITRE"/></td> <td><xsl:value-of select="AUTEUR"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les feuilles de style XSLT: Choix


La balise <xsl:if> ... </xsl:if> permet d'effectuer un choix dans les donnes du fichier XML. On ajoutera l'attribut test o l'on indique l'lment choisi. Ce qui donne :
<xsl:if test=" balise='xxx "> balises Html </xsl:if>

Soit lexemple suivant naffichant que les titres de lauteur 'Jean-Chrisotophe Bernadac en utilisant un choix par la balise <xsl:if>

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les feuilles de style XSLT: Choix


<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/> </head> <body> <table border="1" cellspacing="0" cellpadding="3"> <tr bgcolor="#FFFF00"> <td>Titre</td> <td>Auteur</td> </tr> <xsl:for-each select= "INVENTAIRE/LIVRE"> <xsl:if test="AUTEUR='Jean-Chrisotophe Bernadac' "> <tr> <td><xsl:value-of select="TITRE"/></td> <td><xsl:value-of select="AUTEUR"/></td> </tr> </xsl:if> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les feuilles de style XSLT: Choix


Le XSL permet de faire un choix conditionnel par la balise <xsl:choose>. A l'intrieur de cette balise, on peut dterminer une action lorsque une condition est vrifie <xsl:when> et dans le cas contraire prvoir une autre action <xsl:otherwise>. Soit lexemple suivant dont le code est donn dans le transparent suivant :

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Les feuilles de style XSLT: Choix


<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/> </head> <body> <table border="1" cellspacing="0" cellpadding="3"> <tr bgcolor="#FFFF00"> <td>Titre</td> <td>Auteur</td> </tr> <xsl:for-each select= "INVENTAIRE/LIVRE"> <xsl:choose> <xsl:when test="AUTEUR='Jean-Chrisotophe Bernadac' "> <tr bgcolor="#00FF00"> <td><xsl:value-of select="TITRE"/></td> <td><xsl:value-of select="AUTEUR"/></td> </tr> </xsl:when> <xsl:otherwise> <tr><td><xsl:value-of select="TITRE"/></td> <td><xsl:value-of select="AUTEUR"/></td> </tr> </xsl:otherwise> </xsl:choose> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XSLT: Rgles de transformations


Structures de contrle : choix, conditionnelle, itration, boucle, etc...
<xsl:if> : spcifie un traitement conditionnel (<xsl:else> nexiste pas dans XSLT) Syntaxe: <xsl:if test = "expression" > instructions </xsl:if> <xsl:choose> : introduit un choix de cas, chaque cas est introduit par <xsl:when> Syntaxe: <xsl:choose> <xsl:when test= "expression">instructions</xsl:when> <xsl:when test= "expression">instructions</xsl:when> <xsl:otherwise test= "expression">instructions</xsl:otherwise> </xsl:choose> <xsl:for-each> : lquivalent de la boucle pour; dfinit un traitement itratif. Syntaxe: <xsl:for-each select = "expression" > instructions </xsl:for-each>
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XSLT: Rgles de transformations


Exemples:
<?xml version="1.0" encoding="Iso-8859-1"?> <?xml:stylesheet type="text/xsl" href="Style.xsl"?> <commande> <date> <mois> 10</mois> <jour> 31</jour> <anne>2007</anne> </date> <client> ZZZZ</client> <quantit> 19 </quantit> </commande> <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <commande> <date> La date: <xsl:value-of select="/commande/date/anne"/> / <xsl:value-of select="/commande/date/mois"/> / <xsl:value-of select="/commande/date/jour"/> </date> <br/> La quantit :<quantit> <xsl:value-of select="/commande/quantit"/> </quantit> </commande> </xsl:template> </xsl:stylesheet>

Doc.xml
Fadoua DRIRA HAMMAMI

Style.xsl
ENIS 2008-2009

XSL: Exercice
Crer le fichier XML suivant :
<?xml version= "1.0 " encoding= "ISO-8859-1 " ?> <recette> <entte> <auteur> Paul </auteur> <titre> Recette </titre> <remarque> Pour une personne </remarque> </entte> <procdure> Remplir un saladier avec de la confiture de fraises, du chocolat rp, des bananes crases, Mlanger vigoureusement </procdure> </recette>

Crer une feuille de style permettant partir de cette fiche recette de produire une page HTML qui : a pour titre le contenu de la balise titre commence par un titre <h1> ayant comme contenu le contenu de la balise titre donne ensuite le nom de lauteur de la recette, affiche ensuite le mot Remarque puis le contenu de cette balise affiche procdure en niveau <h2> dans un paragraphe, prsente la procdure suivre ENIS 2008-2009
Fadoua DRIRA HAMMAMI

XSL: Exercice
Reprendre lexercice prcdent mais cette fois-ci en affichant dans la procdure une liste des ingrdients (introduite par un titre de niveau <h3>) , puis les oprations pratiquer (introduite aussi par un titre de niveau <h3>).
<?xml version= "1.0 " encoding= "ISO-8859-1 " ?> <recette> <entte> <auteur> Paul </auteur> <titre> Recette </titre> <remarque> Pour une personne </remarque> </entte> <procdure> <texte> Remplir un saladier</texte> <liste> <item> confiture de fraises </item> <item> chocolat rp </item> <item> bananes crases </item> </liste> <texte> Mlanger vigoureusement </texte> </procdure> </recette>
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XPATH
Les diffrentes expressions de XSLT utilisent la syntaxe du langage XPATH utile pour la slection des parties du document transformer. XPATH est un langage non-XML qui permet dadresser un document XML afin de permettre den extraire avec prcision les informations ncessaires. XPATH est une recommandation W3C le 16 novembre 1999.

Une expression XPATH indique le chemin de localisation dun nud dans le document. XPATH doit connatre le nud contextuel ou le point de dpart (la racine) du document. Ce nud est spcifi par / . Il est diffrent de llment racine. Le rsultat dune expression XPATH peut tre :
un ensemble de nuds (ou un nud seul) une chane de caractres un nombre un boolen

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XPATH : Modle de donnes


Document XML arborescence de nuds Le modle nest pas seulement bas sur les nuds eux-mmes mais aussi sur leurs relations. XPATH ne permet pas daccder directement aux lments, aux attributs et aux autres constructions de balisage. Il permet seulement daccder aux nuds construits partir de ce balisage.

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Comparaison XPATH/ file system


Expression XPATH
Analogies
Hirarchie constitue dlments et dautres types de noeuds Une expression peut tre value partir dun nud spcifique appel le nud contextuel de la requte

File system : URLs


Hirarchie constitue de fichiers et de rpertoires Une URL peut tre value partir dun rpertoire spcifique appel le rpertoire courant

Diffrences

A chaque niveau les noms des A chaque niveau les noms des lments peuvent ne pas tre uniques fichiers sont uniques Une expression XPATH identifie un ensemble dobjets qui peut tre un ou plusieurs nuds. Une URL identifie un fichier unique

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XPATH
Notations simplifies
/ * tag @* @att Text() Comment() Node() Id(ident) // . .. .// nom[i]

Signification
Nud racine du document Tout lment de balise tag enfant du nud contextuel Tout attribut du nud contextuel Attribut de nom att du nud contextuel Tout nud enfant du nud contextuel de type texte Tout commentaire enfant du nud contextuel Tout nud enfant du noeud contextuel lment did ident enfant du nud contextuel Tout sous-chemin descendant du nud contextuel Le nud contextuel Le chemin du nud parent du nud contextuel Les descendants du nud contextuel Le ime lment de balise nom enfant du nud contextuel
ENIS 2008-2009

Tout lment enfant du nud contextuel

Fadoua DRIRA HAMMAMI

XPATH
<?xml version="1.0" encoding="ISO-8859-1"?> <Cours> <Titre>Cours XML</Titre> <Auteur> <Nom> Poulard</Nom> <Prnom>Philippe</Prnom> </Auteur> <Description> Ce cours aborde les <b>concepts </b>de base mis en &#339;uvre dans XML. </Description> </Cours> text() / Cours Titre text() Auteur Nom text() Prnom text() Description text()

Expression XPATH qui retourne un noeud

/cours/Auteur/Prnom

b text()
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XPATH : adressage relatif


..
<?xml version="1.0" encoding="ISO-8859-1"?> <Cours> <Titre>Cours XML</Titre> <Auteur> <Nom> Poulard</Nom> <Prnom>Philippe</Prnom> </Auteur> <Description> Ce cours aborde les <b>concepts </b>de base mis en &#339;uvre dans XML. </Description> </Cours> text() / Cours Titre text() Auteur Nom text() Prnom text() Description text()

../Description

Nud contextuel dtermin par lapplication utilisant XPATH

b text()
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XPATH: slection dun ensemble de noeuds


<?xml version="1.0" encoding="ISO-8859-1"?> <Animaux> <Chiens> <Chien> <Nom> Lassie </Nom> <Couleur>noir </Couleur> </Chien> <Chien> <Nom> Mdor </Nom> <Couleur>marron </Couleur> </Chien> </Chiens> <Chats> <Chat> <Nom> Flix </Nom> <Couleur>blanc </Couleur> </Chat> <Chat> <Nom> Tom </Nom> <Couleur>gris </Couleur> </Chat> </Chats> </Animaux> text() / Animaux Chiens Chien Nom text() Couleur text() Chien /Animaux/Chiens/Chien/Couleur Couleur text() Chats Chat Nom text() Couleur text() Chat Nom text() /Animaux/Chats/Chat
ENIS 2008-2009

Nom text()

Couleur

Fadoua DRIRA HAMMAMI

XPATH: slection de nud dattribut


race <?xml version="1.0" encoding="ISO-8859-1"?> <Animaux> <Chiens> <Chien race="Labrador"> <Nom> Lassie </Nom> <Couleur>noir </Couleur> </Chien> <Chien race="Labrador"> <Nom> Mdor </Nom> <Couleur>marron </Couleur> </Chien> </Chiens> <Chats> <Chat race="Siamois"> <Nom> Flix </Nom> <Couleur>blanc </Couleur> </Chat> <Chat race="Birman"> <Nom> Tom </Nom> <Couleur>gris </Couleur> </Chat> </Chats> </Animaux> text() / Animaux Chiens Chien race Nom text() Couleur text() Chien Nom text() race Couleur text() Chats Chat race Nom text() Couleur text() Chat /Animaux/Chats/Chat/@race Nom text()
ENIS 2008-2009

Couleur

Fadoua DRIRA HAMMAMI

XPATH : jokers de tests de noeud


Les jokers permettent de slectionner diffrents items et types de nuds. Jokers pour les lments : *
Exemple : /Animaux/(Chiens|Chats)/(Chien|Chat)
/Animaux/*/*

Sil ny a pas dautres animaux, ces expressions sont quivalentes

Jokers pour les attributs : @*


Slectionne tous les attributs de llment Chat, sil y en a plusieurs Slectionne tous les nuds (quelque soit leur type) de llment Chat, sil y en a plusieurs
ENIS 2008-2009

Exemple : /Animaux/Chats/Chat/@*

Jokers universel : node()

Exemple : /Animaux/Chats/Chat/node()

Fadoua DRIRA HAMMAMI

XPATH : jokers de tests de noeud

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XPATH: Axes
Indique dans quelle partie de larbre (par rapport au noeud courant) il faut chercher les noeuds retourner XPath dfinit 13 axes en tout dont 5 forment une partition de larbre.

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XPATH: Axes
XPATH permet de spcifier la direction dans laquelle un test de nud doit tre ralis:
Syntaxe : axe : : test-de-nud

XPATH propose une syntaxe abrge pour les axes les plus utilises.

. .. *

= parent::*
child::*

self::*

A chaque tape de localisation (spare par /), un axe diffrent peut tre utilis : ../Description = parent::*/child::description
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XPATH: Axes
2 axes particuliers permettent de slectionner des types de nuds: attribute et namespace permettent daccder aux nuds correspondants
Namespace : : nom_espace attribute : : nom_attribut = @nom_attribut Laxe des attributs bnficie dune forme abrge

<?xml version="1.0" ?> <svg:svg width="18cm" height="6cm" xmlns:svg="http://www.w3.org/2000/svg"> <svg:rect x="1" y="1" width="198cm" height="118cm"/> </svg:svg> /svg:svg/attribute: :height /svg:svg/namespace: :svg / svg svg:svg width height width svg:rect y /svg:svg/svg:rect/@y

height

svg

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XPATH: Axes
ancestor-or-self : : node()
text() / Cours Titre text() Auteur Nom text() Prnom text() /

descendent : : node() = .// node()

text() Cours Titre text() Auteur Nom text() Prnom text() Description

ancestor : : node()

Description text() b text() text() b text()

Nud contextuel descendent-or-self : : node()


Fadoua DRIRA HAMMAMI
ENIS 2008-2009

Nuds dtermins avant le dbut du nud de rfrence preceding : : node()

XPATH: Axes
Mme parent que le nud de rfrence preceding-sibling : : node()
text() / text() Cours Titre text() Auteur text() Nom text() Prnom text() text() Description text()

Cours

Titre

Auteur

Nom

Prnom

Description text() b text() text()

following : : node() Nuds commenant aprs la fin du nud de rfrence

b text()

following-sibling : : node() Mme parent que le nud de rfrence

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XPATH : Exemple
Formes verbeuses
/child : : Animaux /child : : * /attribute : : * /descendent-or-self : : node()/Chat /self : : node()/text() /parent : : node()/Chiens //Chat [position()=2]

Formes abrge
/Animaux /* @* //Chat text() ../Chiens //Chat[2]
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XPATH: Prdicats
Un prdicat permet de spcifier un filtre dans une tape de localisation Un prdicat est une expression boolenne qui sera teste pour chaque nud de lensemble des nuds de ltape de localisation. Syntaxe: axe : : test-de-nud[prdicat1] [prdicat2]

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XPATH: Prdicats
<?xml version="1.0" encoding="ISO-8859-1"?> <Animaux> <Chiens> <Chien race="Labrador"> <Nom> Lassie </Nom> <Couleur>noir </Couleur> </Chien> <Chien race="Labrador"> <Nom> Mdor </Nom> <Couleur>marron </Couleur> </Chien> </Chiens> <Chats> <Chat race="Siamois"> <Nom> Flix </Nom> <Couleur>blanc </Couleur> </Chat> <Chat race="Birman"> <Nom> Tom </Nom> <Couleur>gris </Couleur> </Chat> </Chats> </Animaux> / Animaux Chiens

race text() Chien race Nom text() Couleur text() Chien Nom text() race Couleur text()

Chats

Chat race

Nom text() Couleur text()

Chat //Chat [couleur="blanc"]

Nom text()
ENIS 2008-2009

Couleur

Fadoua DRIRA HAMMAMI

XPATH: Fonctions densemble


position() : retourne le numro dindex du nud de rfrence dans le nud parent Exemple: /Animaux/*/*[position()=1] ou /Animaux/*/*[1] last() : retourne le nombre de nuds de lensemble de nuds de rfrence Exemple: /Animaux/*/*[position()=last()] ou /Animaux/*/*[last()]

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XPATH: Fonctions densemble


Count(node-set) : retourne le nombre de nuds de lensemble de nuds pass en argument. Exemple: /Animaux/*[count(*)>=2] Name(node-set) : retourne le nom qualifi du premier nud de lensemble de nuds pass en argument Exemple: //Animaux/*[name()!="Chats"]

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XPATH: Conversion des nuds en chanes


Tous les nuds peuvent tre convertis en chane de caractres. Syntaxe: string(object)
retourne la chane correspondante, en fonction du type:

Type de nud Text


Comment Attribute Element Document Namesapce

Rsultat
La valeur du noeud La valeur du noeud La valeur du noeud La concatnation des valeurs de nuds texte du contenu La concatnation des valeurs de nuds texte du contenu La valeur du noeud

Remarque: Ensemble de nuds, le premier nud seulement est converti


ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XPATH: Conversion des nuds en chanes


Exemple: string (/Animaux/*) retourne Lassie noir Mdor marron string(/Animaux) retourne Lassie noir Mdor marron Flix blanc Tom gris

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XPATH : Typage
On peut effectuer des comparaisons, des oprations. Cela implique un typage et des conversions de type. Types XPath :

les numriques (Comparaisons habituelles (<, >, !=), Oprations (+, -, *, div, mod), la fonction number() qui permet de tenter une conversion ) les chanes de caractres les boolens (true et false), pour les conversions des numriques : 0 ou NaN sont false, tout le reste est true, des chanes : une chane vide est false, tout le reste est true, des ensembles de noeuds : un ensemble vide est false, tout le reste est true enfin les ensembles de noeuds

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XPATH: Exercice
Soit le fichier Awards.xml
<?xml version="1.0"?> <Awards> <book> <author>Kingsley Amis</author> <title>The Old Devils</title> <year>1986</year> </book> <book> <author>Margaret Atwood</author> <title>The Blind Assassin</title> <year>2000</year> </book> <book> <author>Peter Carey</author> <title>Oscar and Lucinda</title> <year>1988</year> </book> <book> <author>J M Coetzee</author> <title>Disgrace</title> <year>1999</year> </book> </Awards>

Utiliser le fichier XML suivant pour rpondre aux questions suivantes en utilisant le langage XPATH: 1. Le deuxime livre dans la liste 2. Lauteur du troisime livre 3. Le titre du livre qui a gagn en 200 4. Le nom de lauteur du libre intitul Disgrace 5. Le nom de tous les auteurs dont le livre a gagn depuis 1995 6. Nombre total de prix discerns

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XML: eXtensible Markup Language

Langage de requte pour XML

XQuery

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Besoin dun langage de requtes pour XML


Si XML simpose comme standard dchange de donnes sur le web, il devient naturel que les applications puissent exprimer leurs requtes sur des donnes au format XML. W3C a mis en place en octobre 1999, un groupe de travail pour la spcification dun langage de requtes pour XML. Nom propos pour ce langage XQuery. Les langages de requtes existants ne peuvent pas tre utiliss sur les donnes XML.

Classiquement, le langage de base de donnes est SQL. Les fonctionnalits de SQL sur les tables (collections de tuples) doivent donc tre tendues pour permettre des oprations similaires sur les forts (collection darbres o chaque arbre est un document XML),

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Besoin dun langage de requtes pour XML


XQuery est un sur-ensemble de SQL :
Les fonctionnalits de SQL sur les tables sont tendues pour supporter des oprations sur les arbres. XQuery

Requte SQL Structure darbre

Recherche dinformation

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XML versus Relationnel


Structure htrogne / Structure rgulire Mta-donnes disperses dans les donnes / Mta-donnes spares. lments imbriqus sur plusieurs niveaux / Donnes plates Ordre intrinsque sur les lments / Pas dordre sur les donnes. Donnes parses / Donnes souvent denses (trs peu de trous) Absence dlment ou lments vides/ Valeur Null XQuery doit prendre en compte la spcifi des donnes XML.
En XML, il est naturel de chercher de manire indpendante du niveau

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XQuery : principe
Langage pour interroger les donnes (arbres) XML = requtes, plus pour interroger (et trouver des lments) que pour transformer plus souple que XSL qui est plus une transformation darbre XML, mais utilisant tous les deux les expressions XPath XQuery est un langage de requtes complet qui permet : de crer des noeuds et de construire des arbres nouveaux, de dfinir et d'instancier des variables, de dfinir des fonctions, ...

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Fonctionnalits de XQuery
Projection darbres sur des sous-arbres. Il sagit dextraire des sous-arbres des arbres de collections. Slection darbres et de sous-arbres en utilisant des prdicats sur les valeurs des feuilles. Les prdicats classiques (=, <=,>=,>,<, !=) peuvent tre utiliss. La plupart des slections sont aussi exprimables avec des expressions de chemins XPATH. Des variables sont utilisables dans les requtes pour mmoriser un arbre ou pour itrer sur des collections darbres. Les arbres extraits de collections peuvent tre combins en utilisant des jointures darbres extensions des jointures relationnelles ou des produits cartsiens. Les arbres peuvent tre rordonns et les rsultats peuvent tre tris selon les valeurs dlments en ordres ascendant ou descendant. Les calculs dagrgats sont possibles par les fonctions classiques incluant count, sum, avg, min et max.
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Soit les documents XML suivants :

<?xml version="1.0" encoding="ISO-8859-1" ?> <Guide region="Normandie"> <Restaurant type="francais" categorie="****" > <Nom> Le Grand Htel </Nom> <Adresse> <Rue> Promenade M. Proust </Rue> <Ville> Cabourg </Ville> </Adresse> <Telephone> 0142462375 </Telephone> </Restaurant> <Restaurant type="francais" categorie="**" > <Nom> Absinthe </Nom> <Adresse> <No> 10 </No> <Rue> quai Quarantaine </Rue> <Ville> Honfleur </Ville> </Adresse> <Spcialit> Fruits de mer </Spcialit> <Manager> Jean </Manager> <?xml version="1.0" encoding="ISO-8859-1" ?> </Restaurant> <Repertoire region="Normandie"> </Guide> <Hotel categorie="***" > <Nom> Le Grand Htel </Nom> guidenormand.xml <Adresse> <Rue> Promenade M. Proust </Rue> <Ville> Cabourg </Ville> <Code> 14000 </Code> </Adresse> </Hotel> repertoirenormand.xml </Repertoire>

<?xml version="1.0" encoding="ISO-8859-1" ?> <Guide region="XX"> <Restaurant type="indoux" categorie="**" > <Nom> Brady </Nom> <Adresse> <Rue> Saint-Denis </Rue> <Ville> Paris </Ville> </Adresse> <Telephone> 0142462899 </Telephone> </Restaurant> <Restaurant type= " Marocain" categorie="**" > <Nom> Marrakech </Nom> <Adresse> <Rue> Saint-Genevive </Rue> <Ville> Paris </Ville> </Adresse> <Manager> Ali Moussa </Manager> </Restaurant> </Guide> guideXX.xml

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Retourne le nud document correspondant au document guidenormand.xml

XQuery : Expression XPATH

Lister les noms des restaurants du guide normand Document ("guidenormand.xml") //Restaurant/Nom/text() Cas dune requte applique un document et qui retourne, sous format texte, les noms des restaurants cits dans le document "guidenormand.xml".
Ralisation avec linterface IPSI NB: le document guidenormand.xml doit tre plac dans le rpertoire examples/data

Requte

Rsultat
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XQuery : Expression XPATH


Remarque : Document ("guidenormand.xml") //Restaurant/Nom retourne les noms des restaurants munis de leur balise.

Requte

Ralisation avec linterface IPSI NB: le document guidenormand.xml doit tre plac dans le rpertoire examples/data

Rsultat

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XQuery : Expression Flower (FLWR)


Une requte FLWR est une expression de la forme for let where return applique une ou plusieurs collections darbres dfinies dans le bloc for permettant de retourner les arbres construits par le bloc return partir des arbres mmoriss par le bloc let et/ou slectionns par le bloc where. La forme gnrale dune requte FLWR :
for $<var> in <forest> [, $ <var> in <forest>] //itration let $<var>:=<sous-arbre> //assignation where <condition> //slection return <rsultat> //construction

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XQuery : Expression Flower (FLWR)


Exemple : lister le nom des restaurants de la ville de Cabourg du fichier guidenormand.xml :
for $R in document("guidenormand.xml")//Restaurant where $R/Adresse/Ville="Cabourg" return $R/Nom

Cette requte est une simple slection qui peut tre exprime directement avec XPATH
document("guidenormand.xml")//Restaurant[Adresse /Ville="Cabourg"]/Nom

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XQuery : Imbrication de requtes


Lister le nom des restaurants avec leur numro de tlphone dans la rue de lhtel "Le Grand Htel"
for $R in document("guidenormand.xml")//Restaurant, $H in document("repertoirenormand.xml")//Hotel where $H/Adresse/Rue= $R/Adresse/Rue and $H/Nom = "Le Grand Htel" return <RestauTel> <Nom> {$R/Nom/text() } </Nom> <tel> {$R/Telephone/text() } </tel> </RestauTel>

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XQuery : Imbrication de requtes


Nom et adresse des restaurants deux toiles
for $R in document("guidenormand.xml")// Restaurant where $R/@categorie= "**" return <RestauAdresse> {$R/Nom} <Adresse> {$R/Adresse//text() } </Adresse> </RestauAdresse>

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XQuery : Imbrication de requtes


Rechercher toutes les valeurs des attributs des restaurants ayant un manager :
for $R in document("guidenormand.xml")// Restaurant where not(empty($R/Manager)) return <RestauAtt> { for $A in $R // @* return $A} </RestauAtt> Oprateur utile pour une recherche ventuelle des attributs diffrents niveaux

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XQuery : Imbrication de requtes


Pour chaque manager dans le guide, lister son nom et le nom de ses restaurants, groups lintrieur dun lment Manage
for $M in document("guidenormand.xml")// Restaurant/Manager return <Manage> {$M} {document("guidenormand.xml")//Restaurant[Manager=$M]/Nom} </Manage>

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XQuery : Calcul dagrgats


Combien de restaurants y-a-t-il dans le document guidenormand?
let $R :=document("guidenormand.xml")//Restaurant return <RestauNombre> { count($R)} </ RestauNombre >

Cette requte peut tre exprime plus simplement par application de la fonction count une expression XPATH
<RestauNombre> { count(document("guidenormand.xml") //Restaurant)} </ RestauNombre >
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

XQuery : Tri
Trier par ordre alphabtique les noms des restaurants et afficher dans une balise <result> le nom du restaurant suivi de son adresse.
for $R in document("guidenormand.xml")//Restaurant order by $R/Nom ascending return <Result> {$R/Nom} <Adresse> {$R/Adresse//text()} </Adresse> </Result >

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Exercice
tant donne une table relationnelle avec des rsultats des lections prsidentielles de 4 bureaux de votes
IdVille 69 69 69 69 71 71 63 63 Lyon Lyon Lyon Lyon Paris Paris Marseille Marseille NomVille 1 1 2 2 1 1 1 1 Bureau Toto Dupond Toto Dupond Toto Dupond Toto Dupond Candidat 3398 6589 5645 4090 3340 4532 4568 5167 Voix

1. 2. 3.

Donnez une reprsentation XML de cette table Donnez la DTD du document trouv en 1) Exprimez dans la DTD la contrainte que les deux seuls candidats sont Toto et Dupond.
ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Exercice
4. Traduisez les requtes SQL suivantes en utilisant des expressions XPATH : Select Bureau from votes Select voix from votes where ville= Lyon and candidat= Dupond Select ville from votes where candidat= Toto and voix>5000 Select A.Candidat from votes A, votes B where (A.voix>B.voix) and (A.ville=B.ville) and (A.bureau=B.bureau) Soit le programme XSLT suivant : <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <xsl:template match="/"> <votes> <xsl:for-each select="votes/ville/bureau/candidat"> <b>Vote</b> : <vote> <xsl:value-of select="../../@IdVille"/> /<xsl:value-of select="../../@nomVille"/> / <xsl:value-of select="../@num" /> / <xsl:value-of select="@nom" />/ <xsl:value-of select="@voix"/> </vote> <br/>
ENIS 2008-2009

5.

Fadoua DRIRA HAMMAMI

Exercice
</xsl:for-each> </votes> </xsl:template> </xsl:stylesheet> Quel est le rsultat de lapplication de ce programme XSLT sur le document XML trouv en 1. 6. Donnez le rsultat de la requte XQuery for $a in //bureau, $x in $a/candidat, $y in $a/candidat[not [@nom=$x/@nom]] return if ($x/@voix>$y/@voix) then ($a/../@nomVille,$a/@num,$x/@nom) else ($a/../@nomVille,$a/@num,$y/@nom)) 7. Donnez pour chaque candidat son nom et la somme de ses voix. 8. Donnez la requte XQuery qui donne le nom du vainqueur des lections

ENIS 2008-2009

Fadoua DRIRA HAMMAMI

Vous aimerez peut-être aussi