introduction à xslt Éric laporte institut gaspard-monge université paris-est marne-la-vallée

Download Introduction à XSLT Éric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée

Post on 03-Apr-2015

104 views

Category:

Documents

2 download

Embed Size (px)

TRANSCRIPT

  • Page 1
  • Introduction XSLT ric Laporte Institut Gaspard-Monge Universit Paris-Est Marne-la-Valle
  • Page 2
  • XML Extensible markup language Langage de balisage extensible Exemple d'utilisation Reprsenter le contenu d'une base de donnes, mais en clair (plus encombrant) Exemple : un catalogue de plantes
  • Page 3
  • Contenu d'une base de donnes Bloodroot Sanguinaria canadensis 4 Mostly Shady 2.44 031599 Columbine
  • Page 4
  • Objectifs des cours sur XSLT Manipuler des documents XML Les programmes XSLT sont des documents XML Entres = obligatoirement des documents XML Sorties = souvent des documents XML Apprendre le langage XSLT Langage de transformation d'arbres Apprendre le langage Xpath Langage d'expressions XML inclus dans XSLT et autres Contrle des connaissances : TP not
  • Page 5
  • Logiciels diteurs XML, diteurs de code source Les documents XML sont traits comme du code source Navigateurs Les documents XML sont traits comme des pages web visualiser (prtraitement automatique) Logiciels spcialiss Pour certains types de documents XML
  • Page 6
  • Syntaxe XML Document "bien form" = qui respecte la syntaxe XML Plus strict que la syntaxe HTML Logiciels traitant des documents XML : navigateurs, processeurs XSLT.... Plus ou moins stricts sur la syntaxe des documents d'entre lment Dlimit par une balise ouvrante et une balise fermante 2.44 Ou rduit une balise "vide" (lment vide)
  • Page 7
  • XML bien form : lments (1/2) Les lments forment un arbre : disjoints, OK : imbriqus, OK : incorrect Deux lments sont imbriqus ou disjoints La balise fermante est obligatoire En HTML on peut omettre certaines balises fermantes Document --> arbre : analyse syntaxique Arbre --> document : srialisation
  • Page 8
  • XML bien form : lments (2/2) L'arbre doit avoir un lment racine unique Unweighted Weighted TWTA USCH EUR GRD USD Ce qu'il y a avant ou aprs ne doit pas tre des lments
  • Page 9
  • XML bien form Valeurs d'attributs entre guillemets ou entre apostrophes Dspcialiser les caractres " ou ' dans les valeurs d'attributs ""quotation mark ''apostrophe : non
  • Page 10
  • Indentation L'indentation facilite la visualisation en arbre Bloodroot Columbine Un document XML non indent est illisible Bloodroot Columbine L'indentation est obligatoire
  • Page 11
  • XML : autres exemples d'utilisation quivalent d'une base de donnes Exemple : catalogue de plantes Document-texte structur Texte et informations signaltiques, structurelles, liens... Exemple : XHTML Code Langages de programmation, grammaires... Exemple : XSLT Autres CML : description de molcules et de ractions chimiques
  • Page 12
  • Les Chtiments Buonaparte Neige Document texte structur
  • Page 13
  • Les Chtiments Buonaparte Neige section livre Buonaparte chapitre Neige chapitre section Les Chtiments titre Document et arbre
  • Page 14
  • XHTML : visualisation sur cran Comme HTML mais bien form et balises en minuscules Penn Tagset Penn Treebank Tagset Here are the most important tags. See also: The Penn Treebank. In Computational Linguistics, volume 19, number 2, pp313-330.
  • Page 15
  • XSLFO : visualisation sur papier (...)
  • Page 16
  • Code : XSLT
  • Page 17 (...) Mlange de balises XSLT et XSLFO">
  • Programme XSLT produisant du XSLFO (...) Mlange de balises XSLT et XSLFO
  • Page 18
  • Document XML appelant un programme XSLT JT3006 1874
  • Page 19
  • XSL, XSLT, XSLFO Le projet XSL Extensible stylesheet language = Langage de feuilles de style extensible Le format XSL devait tre un format de feuilles de style pour visualisation de documents, comme CSS mais en XML Le projet s'est divis en deux : XSL transformationsLangage de transformation d'arbres XSL formatting objectsLangage de visualisation de documents
  • Page 20
  • Code : grammaires en XML Chaque type de document XML a sa syntaxe XHTML, XSLFO, XSLT, CML... et on peut en dfinir de nouveaux Grammaire Dfinit la syntaxe d'un type de document Exemple : DTD Grammaire en XML : schma XML Un document est valide par rapport une grammaire s'il respecte les contraintes en plus d'tre bien form
  • Page 21
  • Une DTD (...)
  • Page 22
  • Un schma XML (...)
  • Page 23
  • DTD ou schma XML ? DTD Grammaire en SGML (ancien concurrent de XML) Une DTD n'est pas un document XML Compatible avec XML Format trs utilis Schma XML Grammaire en XML Permet d'engendrer du code Java Jug compliqu Version simplifie : Relax NG
  • Page 24
  • Premier programme XSLT (1/4) Objectif Interroger un document quivalent une base de donnes et en extraire une information Exemple : quel est le prix de la plante dont le nom est Potentilla ? Entre : un document XML bien form Sortie : du texte ou un fichier texte
  • Page 25
  • Premier programme XSLT (2/4) : "rgle" contenant des instructions qui sont excutes : trouver un noeud de l'arbre et le copier sous la forme d'un texte sans les balises /CATALOG/PLANT : expression Xpath absolue qui trouve tous les noeuds correspondant aux lments PLANT
  • Page 26
  • Arbre du document source CATALOG PLANT ZONEBOTANICAL Sanguinaria canadensis 4 PLANT... LIGHTPRICE Mostly Shady 2.44...
  • Page 27
  • Premier programme XSLT (3/4) [BOTANICAL='Potentilla'] : "prdicat" Xpath qui slectionne certains noeuds parmi les prcdents Le prdicat est attach l'expression PLANT BOTANICAL : expression Xpath relative (value partir du noeud contexte du prdicat)
  • Page 28
  • Premier programme XSLT (4/4) = : oprateur Xpath qui transforme ses deux oprandes en chanes de caractres avant de les comparer /PRICE : expression Xpath qui s'applique seulement aux PLANT filtrs (et non aux noeuds BOTANICAL) / : ici, sparateur d'tapes dans l'expression Xpath
  • Page 29
  • Interroger un document XML Mthode gnrale Faire une rgle qui contient une instruction avec une expression Xpath absolue Si on crit un prdicat, on peut utiliser des expressions Xpath relatives l'intrieur L'expression Xpath est entre guillemets car valeur d'attribut
  • Page 30
  • Expressions XPath absolues expressionsignification /livre/chapitre/section /*l'lment racine //sectiontous les lments section //*tous les lments /livre/chapitre|/livre/table (pas de mise en facteur)
  • Page 31
  • Expressions XPath relatives Si on est dans un prdicat, values par rapport au "noeud contexte" expressionsignification chapitrelments chapitre fils du noeud *lments fils du noeud.le noeud contexte chapitre/section|chapitre/figure (pas de mise en facteur)
  • Page 32
  • Variante 1 : extraire un sous-arbre Remplacer value-of par copy-of copie sous la forme d'un texte sans les balises copie le sous-arbre (srialisation) Remplacer method=text par method=xml dclare que le rsultat est un fichier "plat" (sans balises) dclare que le rsultat est XML
  • Page 33
  • Rsultat Cinquefoil Potentilla Annual Shade 7.06 052599 Le processeur XSLT a insr une dclaration XML Le rsultat est par dfaut un document XML, ou HTML dans certaines conditions
  • Page 34
  • Variante 2 : en deux tapes (1/2) La premire rgle trouve le noeud PLANT qui correspond au nom "Potentilla" La deuxime rgle trouve le noeud PRICE partir du noeud PLANT
  • Page 35
  • Variante 2 : en deux tapes (2/2) Dans la premire rgle, le "noeud courant" est la racine de l'arbre Dans la deuxime rgle, le noeud courant est le noeud PLANT qui correspond au nom "Potentilla" Le value-of contient une expression relative value partir du noeud courant
  • Page 36
  • Comment a marche ? Quand on entre dans une rgle, on change de noeud courant Quand on ressort de la rgle, on retrouve le noeud courant prcdent (pile l'excution) L'appel et la rgle avec la mme expression absolue permettent de changer de rgle
  • Page 37
  • Noeud courant et noeud contexte Noeud contexte : l'intrieur d'une expression Xpath Change chaque tape de l'expression Noeud courant : l'intrieur d'une rgle - Change chaque appel de rgle - La fonction Xpath current() donne le noeud courant
  • Page 38
  • Et si l'expression Xpath trouve plusieurs noeuds ? (1/5) Les expressions Xpath ressemblent aux expressions Unix sur les arborescences de rpertoires, mais il y a une diffrence /livre/chapitre/section Expression Unix : donne au plus 1 rpertoire Expression Xpath : peut donner plusieurs noeuds
  • Page 39
  • Et si l'expression Xpath trouve plusieurs noeuds ? (2/5) Avec : L'expression trouve les noeuds PRICE de toutes les plantes Rsultat : 2.44 9.37 6.81 9.90 6.44 9.03 4.45 3.99 3.23... ajoute un espace entre deux noeuds [En XSLT 1, ne copiait que le premier des noeuds trouvs, ici le prix de la premire plante]
  • Page 40
  • Et si l'expression Xpath trouve plusieurs noeuds ? (3/5) Avec : On obtient plusieurs lments PLANT Pour avoir un document XML bien form, il faut crer un lment racine unique
  • Page 41
  • Et si l'expression Xpath trouve plusieurs noeuds ? (4/5) Les balises et le texte du programme XSLT sont copis dans le document rsultat, sauf certains espa