Professional Documents
Culture Documents
ENIS 2008-2009
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
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)
Introduction
ENIS 2008-2009
Introduction
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
ENIS 2008-2009
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
ENIS 2008-2009
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
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
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
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
ENIS 2008-2009
ENIS 2008-2009
ENIS 2008-2009
ENIS 2008-2009
ENIS 2008-2009
ENIS 2008-2009
vnements ou objets
API Application
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.
Interface Node
Interface Document
ENIS 2008-2009
ENIS 2008-2009
ENIS 2008-2009
vnement Parser
StartElement
Mthodes utilisateur
Document XML
vnement
endDocument
ENIS 2008-2009
ENIS 2008-2009
ENIS 2008-2009
ENIS 2008-2009
Requte Xpath ; Xpath est un langage dexpression de chemin pour adresser des parties des documents XML
ENIS 2008-2009
<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
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
non
Interprtation du document
non
oui
oui
DTD ou schma
valide?
non
ENIS 2008-2009
ENIS 2008-2009
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
ENIS 2008-2009
ANY : L'lment peut contenir tout type de donne (contenu libre). NB: Il est impratif dcrire ELEMENT en majuscule.
ENIS 2008-2009
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
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>
<!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)
Personne.dtd
Personne.xml
ENIS 2008-2009
ENIS 2008-2009
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
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
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
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
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
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
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
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
La structuration des DTD est crite avec une syntaxe particulire diffrente de la syntaxe XML.
Propositions de complments
ENIS 2008-2009
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
ENIS 2008-2009
ENIS 2008-2009
<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
<?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
xsd:all
: collection non ordonne d'lments typs xsd:choice : choix entre lments typs xsd:sequence : collection ordonne d'lments typs
ENIS 2008-2009
ENIS 2008-2009
ENIS 2008-2009
ENIS 2008-2009
minlength length maxlength pattern enumeration minInclusive maxInclusive minExclusive maxExclusive ... Fadoua DRIRA HAMMAMI
ENIS 2008-2009
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
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>
ENIS 2008-2009
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
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
<!ELEMENT element(s1?)>
ENIS 2008-2009
<!ELEMENT element (s1, s1?, s1?, s1?, s1?, s1?, s1?, s1?, s1?, s1?, s1?)>
ENIS 2008-2009
ENIS 2008-2009
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
<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>
ENIS 2008-2009
ENIS 2008-2009
<xsd:element name="element2"> <xsd:complexType> <xsd:attribute name= "idref" type="xsd:IDREF" use="required" /> </xsd:complexType> </xsd:element>
ENIS 2008-2009
ENIS 2008-2009
ENIS 2008-2009
ENIS 2008-2009
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
<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
ENIS 2008-2009
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.
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
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
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
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
<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
ENIS 2008-2009
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
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
ENIS 2008-2009
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éparer l'information sur vos pages, en modifiant leur présentation. Rsultat sans la </BODY> feuille de style </HTML>
ENIS 2008-2009
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
ENIS 2008-2009
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
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
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>
<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/>
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
ENIS 2008-2009
Seul le premier noeud rencontr dans le document source est pris en considration malgr la prsence dautres noeuds
ENIS 2008-2009
ENIS 2008-2009
ENIS 2008-2009
ENIS 2008-2009
ENIS 2008-2009
Soit lexemple suivant naffichant que les titres de lauteur 'Jean-Chrisotophe Bernadac en utilisant un choix par la balise <xsl:if>
ENIS 2008-2009
ENIS 2008-2009
ENIS 2008-2009
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
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
ENIS 2008-2009
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
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
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 œuvre dans XML. </Description> </Cours> text() / Cours Titre text() Auteur Nom text() Prnom text() Description text()
/cours/Auteur/Prnom
b text()
ENIS 2008-2009
../Description
b text()
ENIS 2008-2009
Nom text()
Couleur
Couleur
Exemple : /Animaux/Chats/Chat/@*
Exemple : /Animaux/Chats/Chat/node()
ENIS 2008-2009
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
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
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
XPATH: Axes
ancestor-or-self : : node()
text() / Cours Titre text() Auteur Nom text() Prnom text() /
text() Cours Titre text() Auteur Nom text() Prnom text() Description
ancestor : : 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
b text()
ENIS 2008-2009
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
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
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()
ENIS 2008-2009
Couleur
ENIS 2008-2009
ENIS 2008-2009
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
ENIS 2008-2009
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
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
XQuery
ENIS 2008-2009
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
Recherche dinformation
ENIS 2008-2009
ENIS 2008-2009
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
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
<?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
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
Requte
Ralisation avec linterface IPSI NB: le document guidenormand.xml doit tre plac dans le rpertoire examples/data
Rsultat
ENIS 2008-2009
ENIS 2008-2009
Cette requte est une simple slection qui peut tre exprime directement avec XPATH
document("guidenormand.xml")//Restaurant[Adresse /Ville="Cabourg"]/Nom
ENIS 2008-2009
ENIS 2008-2009
ENIS 2008-2009
ENIS 2008-2009
ENIS 2008-2009
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
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
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
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.
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